当前位置:文档之家› 达内数据库五天笔记

达内数据库五天笔记

达内数据库五天笔记
达内数据库五天笔记

·达内Oracle的五天笔记1.1. SQLPLUS的命令

初始化表的位置:

set NLS_LANG=american_https://www.doczj.com/doc/7a11294179.html,7ascii (设置编码才可以使用下面脚本) cd $ORACLE_HOME/rdbms cd demo summit2.sql

*********************************

我们目前使用的是oralce 9i 9201 版本

select * from v$version;

恢复练习表命令:

sqlplus **/** @summit2.sql //shell要在这个文件的位置。

登陆oracle的命令:

sqlplus 用户名/密码

show user 显示当前登陆的身份.

set pause on

set pause off 分页显示.

oracle中默认日期和字符是左对齐,数字是右对齐

table or view does not exist ; 表或示图不存在

edit 命令用于自动打开vi修改刚修执行过的sql的命令。

修改方法二:

l 3 先定位到行 c /旧串/新串

执行出错时,利用错误号来查错误:

!oerr ora 942 (装完系统后会装一个oerr工具,用于通过错误号来查看错误的具体信息)

想在sql中执行unix命令时,把所有的命令前加一个!就可以,或者host( 用于sql从切换至unix环境中去)

/*** 初次使用时注意 ****

运行角本时的命令:

先切换到unix环境下,cd $oracle_home cd sqlplus cd demo 下面有两个角本

建表语句。

@demobld.sql

sqlplus nanjing/nanjing @demobid.sql 直接运行角本,后面跟当前目录或者是绝对路径

保存刚才的sql语句: save 命令第二次保存时要替换之前的角本 save

文件名 replace

把刚才保的sql重新放入 buffer 中

spool on 开启记录

spool off 关闭记录

spool 文件名此命令会把所有的操作存在某个文件中去

常见缩写:

nls national language support 国家语言支持

1.2. SQL的结构

|DDL 数据库定义

|DML 数据库管理

SQL――Commit rollback

|DCL 数据库控制

|grant+revoke 权限管理

表分为:系统表(数据字典),用户表

注:知道数据字典可以更便于使用数据库。

1.3. SQL语句

1.3.1. 纵向投影操作 select

select * from student;

select name||?‘||id||? EMPLOYEE from employee;

select name,salary*13 from employee;

NVL function

如果原来的数值是null的话,由指定数值替代。

select last_name,title,salary*NVL(commission_pct,0)/100 COMM from s_emp;

1.3.

2. column使用

column(col) columnName clear/format/heading/justify format

column salary format $9999999.00 设置数字显示形式

column name fromat a15; 设置字符串显示15个字符

column salary justify left/right/center 输出格式

column salary heading text 设置显示的字段名

column clear 清除格式

column last_name;显示该字段名所用的格式

column salary justify left format $99,999.00 ( 定义工资的显示形式 )

1.3.3. order by

ORDER BY 排序升序和降序 ASC 升序(默认) DESC 降序

select * from s_emp order by dept_id , salary desc

部门号升序,工资降序

关键字distinct也会触发排序操作。

select * from employee order by 1; //按第一字段排序

NULL被认为无穷大。order by 可以跟别名。

1.3.4. where 选择操作(横向投影)

where 条件一定是根据某个字段来进行过滤操作.

select * from s_emp where dept_id=42; 查看部门号为42的所有员工select * from s_emp where salary>1000 查看工资高于1000的所有员工select salary from s_emp where first_name='Geroge' 找出名字为Geroge的员工的工资数

select table_name from user_tables where table_name='S_EMP'; 查某个具体表名时,表名的字符串必须要为大写

或者采用 upper(table_name)

select * from user_talbes where table_name like ‘s\_%’ escape ‘\?

使用转义字符对关键字进行转义。

逻辑运算:

BETWEEN AND 在什么之间

NOT BETWEEN AND 注意区间:[ ]是一个闭区间

IN( LIST) 在某个集合中

NOT IN (list) 空值会有影响 (等于list其中任何一个就行,

为提高效率常把比例高的放在前面)

LIKE 模糊配置

NOT LIKE 通配比较

IS NULL 是空

AND

OR

NOT

练习3:(查出s_emp表中所有员工的一年的总收入)

select first_name , salary*12*( 1+nvl(commission_pct/100 , 0 ) ) " year salary " from s_emp; nvl函数专用于处理空值的影响.

练习4:(找出表名以S_开头的所有表)对于一些特殊字符,要用到escape转义,并

不是一定要用\,escape后面定义是什么字符为转义字符,那就用哪个字符

select table_name from user_tables where table_name like 'S\_%' escape '\';

1.3.5. 单行函数

单行函数: (dual 哑表 )

字符函数:

lower 转小写 select lower('SQLPLUS') from dual;-->对纯字

符串处理的时候

upper 转大写 select upper('sqlplus') from dual;

initcap 首字符大写 select initcap('tarena') from dual;

concat 连接字符串 select concat(first_name , last_name) from

s_emp;等效于||

substr 求子串 select substr('tarenasd0603' ,1,6) from dual; (取前

六个字符) select substr('tarenasd0603',-2) from dual; (取后两个字符)

length 求字符长度

select length('tarena') from dual;

nvl 空值函数两个参数的类型要匹配,统一的,表示:如果有,则

返回前面的参数,如果没有就返回后面的参数

eg:select first_name,salary from s_emp where lower(first_name)='george';

select first_name , substr(first_name , -2 ) from s_emp; (查出s_emp表中所有

用户名字的最后两个字符)

默认的是从左向右,如果是-2则表示从右向左数

练习5: select first_name , salary from s_emp where

lower(first_name)='george';

数值函数:

round 函数(四舍五入) select round(45.935, 2) from dual; 不带参数时默认

0位小数

trunc 函数(截取,不管后面的数字) select trunc(45.995, 1) from dual;

日期函数:

oracle数据库中存放时间格式的数据,是以oracle特定的格式存贮的,占7个字

节,与查询时显示的时间格式无关,具体哪个字节表示什么,我不太清楚,请高手补充。存贮的时间包括年月日时分秒,最小精度为秒,不存贮秒以下的时间单

位。因此在一些前台支持毫秒级的程序(如PB客户端程序)连接到oracle 数据库

时应注意这点。查询时显示的时间格式,由会话环境决定,或者由用户定义,与

数据库无关。

select sysdate from dual; 从伪表查系统时间,以默认格式输出。

sysdate+(5/24/60/60) 在系统时间基础上延迟5秒

sysdate+5/24/60 在系统时间基础上延迟5分钟

sysdate+5/24 在系统时间基础上延迟5小时

sysdate+5 在系统时间基础上延迟5天

所以日期计算默认单位是天

内置函数:

months_between(sysdate,addmonth(sysdate,5)) //两个月有多少天。

add_months(sysdate,-5) 在系统时间基础上延迟5月

add_months(sysdate,-5*12) 在系统时间基础上延迟5年

last_day(sysdate) 一个月最后一天

next_day(sysdate,’riday? 下个星期星期几。

round (sysdate,’day? 不是四除五入了,是过了中午留下,不过的略掉

trunc(sysdate,’onth? 不到一月都省略

例子:

上月末的日期:select last_day(add_months(sysdate, -1)) from dual;

本月的最后一秒:select trunc(add_months(sysdate,1),'month') - 1/24/60/60 from dual

本周星期一的日期:select trunc(sysdate,'day')+1 from dual

年初至今的天数:select ceil(sysdate - trunc(sysdate, 'year')) from dual;

格式转换函数:

to_char显示日期:

从数字转化为char to_char(date,'格式')

从日期转化为char to_char(date, 'fmt' )

yyyy 2007 年份

year two thousand seven 年份

mm 03 (格式缩写显示也缩写)

month march 月份

dy fri 星期几缩写

day Friday 星期几

dd 16 一个月第几天

mi 30 分钟

ss 35 秒钟

hh 18 小时

rr 07 年最近时间

yy 07 年当前世纪年份

select to_char(sysdate, 'yyyy mm dd hh24:mi:ss') from dual; select to_char(sysdate, 'fmyyyy mm dd hh24:mi:ss') from dual;

查出三月分入职的员工:

select first_name,start_date from s_emp where to_char(start_date,'mm')='03';

to_date表达日期:

字符转日期

select to_date('2000 11 20', 'yyyy mm dd ') from dual;

select round(to_date('10-OCT-06' ,'dd-mon-RR') ) from dual;

to_number

字符转数字

select to_number('10') from dual ;

函数、表达式、隐式数据类型转换会导致索引用不上,where条件后面只能放单

行函数,它起了一个过滤的的作用。

1.3.6. 组函数

group by 分组子句对分组后的子句进行过滤还可以用having 条件对分组后的条件进行过滤 where 是对记录进行过滤

avg(distinct | all )求平均值 count(distinct | all )统计

max(distinct | all )求最大值 min(distinct | all )求最小值

sum(distinct | all ) 求和

(所有组函数会忽略空值 , avg sum只能作用于数字类型)

求有提成员工的提成的平均值;

select avg(nvl(commission_pct ,0 ) ) from s_emp;

有多少人有提成:

select count( commission_pct ) from s_emp ;

count(*) 用于统计记录数:

select sum(commission_pct)/ count(*) from s_emp;

员工分部在多少个不同的部门:count 默认为作all的动作

select count(dept_id) from s_emp;

select count(distinct dept_id) from s_emp;

求各个部门的平均工资:group by 子句也会触发排序

select dept_id , avg(salary) aa from s_emp group by dept_id

order by aa ; //对平均工资排序

select dept_id , avg(salary) aa from s_emp group by dept_id;

注意:group by 子句后面跟有条件只能是组函数查询的结果中的字段,所以我们会人为在结果要加入一些group by 要用的字段,如:dept_id可能不想要。

select region_id , count(*) from s_dept 此句会有错,count(*)是单组分组函

数,如果加上group by region_id 就是找出同地区的部门数量。

select max(region_id) , count(*) from s_dept; (强制语法上可以正确,但是

不能保证结果也会正确)

求各个部门不同工种的平均工资:

select dept_id , title, avg(salary) from s_emp group by dept_id , title ;

哪些部门的平均工资比2000高:

select dept_id, avg(salary) aa from s_emp group by (dept_id) having avg(salary)>2000;

除了42部门以外的部门的平均工资:

select dept_id , avg(salary) from s_emp group by (dept_id ) having dept_id!=42;

select dept_id , avg(salary) from s_emp where dept_id!=42

group by (dept_id ) ;(此种sql效率要高,先过滤)

再计算)

where 单行函数。

having 组函数。

求各个部门的平均工资:

// 这样统计不详细

select max(https://www.doczj.com/doc/7a11294179.html,) , avg (s.salary) from s_emp s, s_dept d where s.dept_id=d.id group by https://www.doczj.com/doc/7a11294179.html,;

//****这问题很经典,为了过 oracle sql 语法关而写max(https://www.doczj.com/doc/7a11294179.html,) ***

select max(https://www.doczj.com/doc/7a11294179.html,) , avg(e.salary) , max(https://www.doczj.com/doc/7a11294179.html,) from s_emp e, s_dept d , s_region r where e.dept_id = d.id and d.region_id=r.id

group by d.id ;

1.3.7. 多表连接

多表连接操作:

两表没有任何关联时会产生迪卡尔机:

select first_name , name from s_emp , s_dept;

等值连接:

练习一:查看员工的姓名和员工部门号:(要考虑到表中实际数据中空值的影响)

select first_name , name from s_emp e, s_dept d where e.dept_id=d.id;

同时起了别名

select first_name , name from s_emp e, s_dept d where e.dept_id=d.id and e.first_name='George';

具体到哪个人所在的部门

表的两边有空值的话,不会显示出来。

练习二:每个员工所在的部门和部门所在的地区

select first_name , s_https://www.doczj.com/doc/7a11294179.html,, s_https://www.doczj.com/doc/7a11294179.html, from s_emp, s_dept, s_region where

s_emp.dept_id=s_dept.id

and

s_dept.region_id=s_region.id;

等价于

select first_name,https://www.doczj.com/doc/7a11294179.html,,https://www.doczj.com/doc/7a11294179.html,

from s_emp e,s_dept d,s_region r

where e.dept_id=d.id and d.region_id=r.id;

等值连接:

练习三:找出每个员工和每个员工的工资级别

select a.ename , a.sal, b.grade from emp a , salgrade b where a.sal between b.losal and b.hisal; select a.ename , a.sal, b.grade from emp a , salgrade b where a.sal>=b.losal and a.sal<=b.hisal;

自连接:

当一个表的插入行之间有了关系时就发生了又名:内连接)

select first_name , manager_id from s_emp;

l 查出所有员工的部门领导的名称:( 这种sq 会少一条记录,总经理没有被配置

上)

select e.first_name , m.first_name from s_emp e , s_emp m where

e.manager_id=m.id; //关键是同一张表用不同的别名

外连接:

防止空值忽略,用(+)的一方会模拟一条记录配置另一方)这就称为外连接,不

加(+)一个记录都不能少;

select e.first_name , m.first_name from s_emp e , s_emp m where e.manager_id=m.id(+);

号放在哪边就表示在哪边补空,来跟对方来匹配,使得数据一个都不会漏掉,

这个例子中的领导有可能会没有(最高领导就再没有领导了,所以就

+号放在可能出现空值的一边)

标准写法:

显示没有员工的部门

select distinct https://www.doczj.com/doc/7a11294179.html,

from

s_emp e,s_dept d

where e.dept_id(+)=d.id

and

e.dept_id is null

显示有员工的部门:

select distinct https://www.doczj.com/doc/7a11294179.html,

from

s_emp e,s_dept d

where

e.dept_id=d.id

1.3.8. 子查询

关于子查询 Subqueries

找出所有员工中,工资最低的那个员工:( 利用子查询)

select first_name, salary from s_emp where salary = ( select min(salary) from s_emp) ; select max(first_name), min(salary) from s_emp;

//这样写会出错姓名和工资不一致

先运行子查询再运行主查询,子查询一般出现在运算符的

子查询运行的顺序:

右边。

值运算符:运算后面只能跟一个值

多值运算符:可以对两个以上的值进行操作

查询谁跟Smith干一样的活:

.先找出Smith干什么工作

select title from s_emp where last_name='Smith';

.再在所有数据中找和Smith工作匹配的人

// 下种写法可能还存在bug,没有考虑到数据的全面性有潜在性问题

rom

selec

t

last_name

, title f

s_emp

where title

=( select

title from

s _emp where last_nam ith' ) and last_name <> 'Smith' ; e='Sm //这种写法才考虑的比较全面

select last_name , title from s_emp where title in ( select title from s_emp where last_name='Smith' ) and last_name <> 'Smith' ;

使用子查询时应注意:单行子查询返回多个结果时会有错误 single-row

subquery returns more than one value

查出哪些员工的工资比平均工资低:

select e.first_name , e.salary

from s_emp e

where

e.salary<

(select avg( nvl( salary,0 ) )

from s_emp)

哪些部门的平均工资比所有部门的平均工资要低:

第一步先查出各个部门的平均工资:

select min(avg(salary)) from s_emp group by dept_id;

第二步再查出哪个部门的工资是最低的:

select dept_id, avg(salary) from s_emp group by dept_id having avg(salary) = (select min(avg(salary) ) from s_emp group by dept_id ) ;

哪个部门里没有员工:

select deptno from dept where deptno not in ( select deptno from emp );

哪些人是普通员工:(用子查询形式来做)

select first_name,last_name from s_emp

where id not in

(select distinct(manager_id) from s_emp where manager_id is not null);

1.3.9. 语言环境的设置

echo $LANG zh_CN.hp15CN

echo $NLS_LANG

simplified chinese_china.zhs16cgbk

1.3.10. E--R图实体关系图entity relation

开发编码,测试最终产开发流程先进行需求分析,进行系统设计,建表,再进行

品上线试运行。

把软件设计模型转化为数据中的表,设计时要考虑性能的设计

第一范式:最简单的一种建方式,一张表只有一个主键。

第二范式:表的自连接存在原因,一张表,学生表中也有班级的信息。

它一张表。

第三范式:表连接存在的原因,两张表,其中一张表引用其

约束:

了保证数据的一致性,

primary key (pk) 主键约束不允许有重复和空值(唯一且非空)

foregin key (fk) 外键约束两张表parent table child table

unique key (uk) 唯一可以为空 not null

数据库设计时的注意:

索引:为了提高效率而设计的一种与业务无关的

考虑表点用的物理空间:

考虑表之间的关系:

实现,多的一方引用外键

一对多关系:利用FK+PK

一对一关系:可以利

FK+UK实现,

多对多关系:通过中间增加一个附加表来实现,附加

表利用联合主键来实现,联合起来的主键唯一。

.3.11.DDL语句:

DDL (DataBase Defind L

anguage)数据库定义语句:

table (表)

view(示图)

sequence(序

列号)

index(索引)

创建表语句:

create table [schema].表名 ( 字段名,字段类型约束条件);

就是当前用户,严格来访问表名完整的写法是schema.tablename schema 默认

数据类型:

表名的命令规则:首字母为字母,不得超过30个字符

char(size) 定长不管是否达到最大宽度,都会点最大的宽度。

varchar2(size) 可变长按实际的字节占用空间

number 所有的数字类型都称为number

number(n, m ) n------n位宽度 m-----小数点后的宽度

number(2,4)小数点后4 位,有效位2位 values(0.0099) 这样可以

values(0.01)这样出错

LONG 2GB 大文本一个表最我只允许定义一个LONG类型(不建议使用)

CLOB 大对象形式(在表里只存一个指针)

BLOB 存二进制大对象(声音,图像之类)

default 作用演示:

create table test(c1 number default 10, c2 number);

.3.12.表的约束

主键约束的定义:

create table test(c number primary key ); 列级约束

create table test(c number , primary key(c) ) ; 表级约束

create table test( c1 number constraints pkc1 primary key );

此约束有名字: pkc1

create table test(c number , c2 number , primary key (c ,c1) ) ;

用表级约束可以实现联合主键

外键约束的定义:(先定义父表,再定义子表)

carete table parent(c1 number primary key ); create table child (c number primary key , c2 number references

parent(c1)); //列约束

create table child( c number primary key , c2 number , foreign key(c2)

references parent(c1)); //表约束

on delete cascade (及联删除,删除父表时子表也跟着删除)

on delete set null (及联删除父表时子表中引用的字段为null)

create table child(id number, parent_id number(10) constraint child_fk references parent(id) ) on delete cascade create table child(id number, parent_id number(10) constraint child_fk references parent(id) ) on delete set null

不给约束起名字时,系统给约束起名时的规律为:数据库用户名_数字(约束名也

不能重名)

定义一个约束的两种形式:

列级约束表级约束

l (利用desc可能看到)primary key 自动具有非空约束的特点

非非空约束:

not nul

主键和外键

check 约束:

create table test(c1 number check(c1>1000));

此表中要求c1的值必须要大于1000 才为有效值 .

复制表的语法(仅限于Oracle):

create table child1 as select * from child;

利用已知表建一张新表:只会把非空约束带过来,其它约束要自己添加

create table s_emp_42 as select * from s_emp where dept_id

42;

只取要表结构,不想要表中数据的建表方式:

create table s_emp_copy as select * fr m s_emp where 1=2; o 这是一个小技巧,利用永不等式提取零条数据,在JDBC的学习中会用到 where

1=1 的形式,注意体会)

查看一张表的约束:( 查数据字典示图)

desc user_constraints;(这个数据字典

中会查到相应的信息)

s

select constraint_name, constraint_type

from user_con traints where table_name='S_EMP';

P pk

R fk

k

C chec

U UK

V 这种只定义在示图中(with check option 相当于组示图加了一个约

束)

O也是出现在示图中

非空约束和CHECK都是用C来表示

查看字段约束的方法:

desc user_cons_columns;

select column_name, position from user_cons_columns where constraint_name='S_EMP_ID_PK' ;

position 的含义:联合主键,约束名一样。

user_constraints user_cons_columns 两张表的约束名相等,表名相等,两张表

一关联就可以查出所需的信息。

select constraint_name , r_constraint_name from user_constraints where constraint_type='R' and table_name='S_EMP' ;

数据库建立时,数据字典就会建好。

user_constraints; 自己拥有的

all_constraints; 你自己拥有的加上你可以访问的

dba_constraints 所有的

查看当前数据库数据字典的字典(这个示图很重要)

desc dict;

select table_name form dict where table_name like '%cons%;

示图:

user_objects; user_tables;

select distinct object_type from user_objects;

1.3.13. 介绍事务的概念:

commit 提交,此时说明前面所有语句都成功执行

rollback 回退操作,此时会恢复至上一次提交时的状态。

savepoint 设置保存点

注意 insert into 后面可以跟子查询

insert into s_emp_42 select * from s_emp where dept_id =42;

UPDATE 修改字段值:

update s_emp set dept_id =10 where id =2 ;

update s_emp set commission_pct =10 ;

没有where条件时说明是改表中所有的值.

注意:如有外键引用时常会出现外键引用值没有找到等错误?

delete 删除记录命令语法:

delete from s_emp where dept_id=42;

delete form s_emp ; 没有where条件时说明删除表中所有的值

注意:如有外键引用时,删除一张表时常会出现不能删除的情况,

原因一是因为此时正在有人操作表中记录

原因二此表有其他的表引用,没能设及联删除:

delete 删除一张大表时空间不释放,非常慢是因为占用大量的系统资源,支持回退操作,空间还被这张表占用着。

truncate table 表名 (删除表中记录时释放表空间)

DML 语句:

表级共享锁:对于操作一张表中的不同记录时,互不影响

行级排它锁:对于一行记录,oracle 会只允许只有一个用户对它在同一时间进行修改操作

wait() 等到行级锁被释放,才进行数据操作

drop一张表时也会对表加锁,DDL排它锁,所以在删除一张表时如果当前还有用户操作表时不能删除表

alter table 命令用于修改表的结构(这些命令不会经常用):

增加约束:

alter table 表名 add constraint 约束名 primary key (字段);

解除约束:(删除约束)

alter table 表名 drop primary key(对于主键约束可以直接用此方法,因为

一张表中只有一个主键约束名, 注意如果主键此时还有其它表引用时删除主键

时会出错)

alter table father drop primary key cascade ; (如果有子表引用主键

时,要用此语法来删除主键,这时子表还存在只是子表中的外键约束被及联删除了)

alter table 表名 drop constraint 约束名;

怎样取一个约束名:1、人为的违反约束规定根据错误信息获取!

、查询示图获取约束名!)

alter table 表名 disable from primary key ; (相当于把一个表的主

键禁用)

alter table 表名 enable primary key ;(enable 时会自动去检查表的记录

是不是符合要求,如果有脏数据时必须要先删除脏数据才可以 enable)

*******************************************************************

增加字段:

alter table 表名 add(字段字字段类型)

删除字段:

alter table 表名 drop(字段)

alter tbale 表名 drop column 字段 ; (8i 以后才支持)

给列改名:920才支持

alter table 表名 rename column 旧字段名 to 新字段名;

修改字段

此时应注意的问题,更改时要看具体值情况之间的转达换,改为字符类型时,

必须要为空)

alter table 表名 modify( 字段,类型)

更改表中的字段:

update 表名 set 字段=值 where 条件

更改表名

rename 旧表名 to 新表名;

删除表:

trucate table 表名:(表结构还在,数据全部删除,释放表所占的空间,

不支持回退,常用删除大表)

1.3.14. oralce中产生序列(sequence):

create sequence 序列名;

不带参数时默认为从1 开始每次递增 1,oracle中为了提高产生序列的效率一

般一次性产生20个序列放入当前会话的序列池中备用以加快效率,序列会出现

不连续的动作回退操作不会影响序列取值)

sequence 的参数:

increment by n 起始值, start with n 递增量, maxvalue n 最大值,

minvalue n 最小值,cycle | no cycle 轮回, cache n 绶存(第一次取时会一次

取多少个id存起来)

查看 sequence 示图:

desc user_sequences ;

select sequence_name , cache_size , last_number from user_sequences where sequence_name like 's_'; select 序列名.currval from dual 查看当前的序列数

第一次执行这个命令会出错,因为还没有序列号放进序列池中,也就是说

currval读取的是序列池中的数值。

select 序列名.nextval from dual 查看下一个序列数,它会自动给当前

的序列加1,实际上是给序列池中的数值加一,而序列表中加的是缓存的值。

清空当前会话的内存:

alter system flush shared_pool;(执行此命令要有DBA权限,一般用户执行

出错)

修改序列:(此命令不常用,只需了解就行不必深究)

alter sequence 序列名修改项;

删除序列sequence

drop sequence 序列名;

1.3.15. 创建示图

creating views(属于了解知识)

desc user_views;

select text from user_views where view_name='TEST1_V1' ;

示图就相当于一条select 语句,定义了一个示图就是定义了一个sql语句,示图不

占空间,使用view 不会提高性能,但是能简单化sql语句

(扩展知识: oracle 8i 以后的新示图)MV 物化视图(占存储空间,把select

结果存在一个空间,会提高查询视图,增强实时性,但是存在刷新问题,主要应

用在数据仓库中用要用于聚合表)

使用示图的好处:控制数据访问权限.

如何创建一个示图:

create or replace views test_vi as select * from test1 where c1=1;

此时往表test1(base table 基表)中插入数据时:表中没能变化,示图中的

数据发生改变

从示图中插数据时相对应的表会发生改变:

往示图中插数据时,会直接插进基表中,查看示图中的数据时,相当于就是执行

创建时的select语句。

简单示图:能进行DML操作。

复杂示图:来源于多张表,不能执行DML操作。

1.3.16. 关于利用rownum分页显示

rownum 有个特点要么等于1 要么小于某个值,不能直接等于某个值, 不能大

于某个值。rownum常用于分页显示。

练习:查询出第5条数据和第10条数据之间:

select first_name , rnum from ( select rownum rnum , first_name from s_emp where rownum <=10 ) where rnum between 5 and 10 ;

分面显示:

SELECT * FROM (SELECT a.*, rownum r FROM S_EMP a ) WHERE r

between 5 AND 10;

练习:哪些员工的工资比本部门的平均工资高?

select first_name , salary , avgsal from s_emp e , ( select dept_id , avg (salary ) avgsal from s_emp group by dept_id ) a where e.dept_id =a.dept_id and e.salary > a.avgsal;

在示图上加一个 with check option 就相当于给示图加上了约束

create view test_v as select * from test where c =1 with check option ;

create view test_v as select * from test with read option; 定义在视图上的约束,

只读。

同义词:相当于别名的作用(***只需了解***)系统自建的同义词: user_tables

create synonym asd_s_emp for asd_0607.s_emp ;

目的就是为了给asd_0607_s_emp表起另一个代替的名称asd.s_emp;注意这个同

义词只能自己使用;

create public synonym p_s_emp fro asd_0607.s_emp; 创建公共的同义

词,但是要权限.

删除同义词:

drop synonym 同义词名称

1.3.17. 创建索引

Creating indexes(概念很重要对系统的性能影响非常大)

建索引的目的就是为了加快查询速度,使表中数据在做insert语句时就进行排序。

索引是DML语句触发的,系统自动运行,也可以强制使用索引。

索引的结构

key | rowid

索引就相于一本的书的目录。索引点系统空间,属于表的附属物。删除一个表时,

相对应的索引也会删除。truncate 表时索引结构在,但是数据不存在。

full table scan 全表扫描

用索引就是为了快速定位数据:(理解时就以字典的目录为例)

查看表的rowid:

select rowid , first_name from s_emp;

rowid 定义的信息有: object block table

每条记录都有自己的rowid ,rowid记录了这条记录在数据库中的位置,可以快速

读取。

索引由谁创建:用户,建索引后会使DML操作效率慢,但是对用户查询会提高效

,这就是我们建索引的最终目的,

创建一个索引:

create index 索引名 on 表名 ( 字段名);

create insex testindex on test(c1, c2);

哪些字段应该建索引:

经常要用where的子句的地方,所以要用索引.用不用索引,关键要看所查询的

数据与所有数据的百分比,表越大,查询的记录越少,索引的效率最高.

替换变量:用&符号来定义替换变量支持交互性提示,对于字符性的数字,一定要

写在单引号之间

set verify on

set verify off;

相当于开关变量,用于控制是否显示新旧的sql语句

select id ,last_name ,salary from s_emp where title='&job_title';

更改交互的提示信息:

accept p_dname prompt ' 提示信息';

定义变量:

define p_dname='abc';

分页的实现语句:(可以正常运行)

select * from ( select rownum rnum , a.* from (select * from s_emp) a ) where rnum between 5 and 10 ;

1.4. SQL语句使用技巧

.删除表空间

DROP TABLESPACE TableSpaceName [INCLUDING CONTENTS [AND DATAFILES]]

.删除用户

drop user XXXX cascade;

达内第一次JAVA考试题

关于下列代码说法不正确的是:() 10. interface Foo { 11. int bar(); 12. } 13. 14. public class Beta { 15. 16. class A implements Foo { 17. public int bar() { return 1; } 18. } 19. 20. public int fubar( Foo foo) { return foo.bar(); } 21. 22. public void testFoo() { 23. 24. class A implements Foo { 25. public int bar() { return 2; } 26. } 27. 28. System.out.println( fubar( new A())); 29. } 30. 31. public static void main( String[] argv) { 32. new Beta().testFoo(); 33. } 34. } A. 编译错误 B. 运行代码输出:2 C. 如果删除16,17,18行,运行代码应然输出:2 D. 如果删除24,25,26行,运行代码输出:1 正确答案:A 2. 在Java语言中,下列说法正确的是:()。 A. Java访问修饰符按照访问范围由低到高的排列顺序是public,default,protected,private B. private可以用于外部类的声明 C. 一个Java源文件中声明为public的外部类只能有一个

protected声明的方法不可以被子类重写 正确答案C 3. 请看下列代码() public class Member{ private Long userId; private String nickName; //以下是getter和sett方法 …… } Main方法中的代码: Member m1=new Member(); m1.setUserId(new Long(100001)); m1.setNickName(“mick”); Member m2=new Member(); m2.setUserId(new Long(100001)); m2.setNickName(“mick”); System.out.println(m1==m2); System.out.println(m1.equals(m2)); 控制台的输出结果是: A. true false B. false true C. false false D. true ture 正确答案C 4. 下面关于final说法错误的是:() A. final修饰类时,该类不能被继承。 B. final修饰方法时,该方法不能被重写。

达内学习心得体会javadoc

达内学习心得体会java 篇一:达内Java学习心得之易犯错误 第1 部分语法 程序员们总是被层出不穷的复杂问题所困扰假如我们最基本的开放工具 ——设计和编写程序的语言本身就是复杂的那么这个语言自己也会成为这些复 杂问题的一部分而非它们的解决方案了 —— C. A. R. Hoare, The Emperor’s Old Clothes Java 语言从C++派生而来并借鉴了Objective C Eiffel Smalltalk Mesa 和Lisp 这些语言的一些特性当使用其他语言的程序员转用Java 来编程时他们很快就会发现Java 的一些特性和自己以前所熟悉的语言非常相似因此这些程序员通常会认为这些特性在Java 中和在以前所使用的语言中表现一致其实完全不是这样这些想法在C++程序员中尤其普遍这一部分重点强调了Java 语言上经常会绊倒新手的陷阱和语言行为 本部分包括以下 10 个单元 Item 1 什么时候被覆盖的方法并非真的被覆盖了本单元解释了调用子类的实例 方法和静态方法之间的微妙差别 Item 2 String.equals()方法与== 运算符的用法比较”

本单元解释了这两种方法比较字符串的不同之处并指出了常量池是如何混淆这两种用法的 第1 部分语法 2 t Item 3 Java 是强类型语言本单元解释了基本类型的转换和提升的规则这对从C++ 转到Java 的程序员尤为重要Item 4 那是构造函数吗本单元给出了一个经典的然而又非常简单的语言陷阱当 我们培训新的Java 学员时这个陷阱总是让学员们问出这样的问题编译器怎么会没发现它 Item 5 不能访问被覆盖的方法本单元又一次讨论了Java 语言中的方法调用读完以后你将完全理解这个知识点 Item 6 避免落入隐藏变量成员的陷阱本单元讨论了这一最常见的陷阱所有Java 语言的入门课程都应该提及这个问题并且和this 引用一起讨论 Item 7 提前引用这一较短的单元向我们演示了什么是提前引用以及如何去避免 它 Item 8 设计可继承的构造函数本单元是取自来之不易的实践经验对于每一个想开发可重用Java 类的程序员来

达内JAVA第三个月月考汇总

· 1. · (单选)在JavaEE中,要将某个过滤器映射到Web应用程序的每个Web资源,以下在web.xml,中的配置正确的是()。· A. someFilter /* B.someFilter /* · C.* · D.someFilter * · 正确答案:A · 2. · (单选)在J2EE中,以下不是JSP隐式对象的是()。 · ·A. pageContext · ·B. context · ·C. application · ·D. out · 正确答案:B · 3. · (单选)在JavaEE中,若要在JSP中正确使用标签:,在JSP中声明的taglib指令为: · ·B. · ·C. · ·D. · 正确答案:D 6. (单选)下列属于抽象类的是()。 A.ServletConfig · ·B.HttpServlet · ·C.Cookie · ·D.HttpServletRequest · 正确答案:B 7. (单选)在jQuery中$("#test")和$(".test”)表示的含义是:( )。 A.

$("#test")表示选择id为test的元素 $(".test”) 表示选择id为test的元素 · ·B. $("#test")表示选择id为test的元素 $(".test”) 表示选择所用CSS类为test的元素 · ·C. $("#test")表示选择所用CSS类为test的元素 $(".test”) 表示选择id为test的元素 · ·D. $("#test")表示选择所用CSS类为test的元素 $(".test”) 表示选择所用CSS类为test的元素 · 正确答案:B 8. (单选)给定某Servlet程序的片段如下,用户在浏览器地址栏中键盘键入正确的请求URL并回车后, 在控制台上显示的结果是 ( )。 public void doGet(HttpServletRequest request,HttpServletResponse response) throws ServletException ,IOException { System.out.println("get"); } public void doPost(HttpServletRequest request,HttpServletResponse response) throws ServletException ,IOException { System.out.println("post"); } · A.get · ·B.post · ·C.get post · ·D.post get · 正确答案:A 9. (单选)给定一个Servlet程序的代码片段,如下: public void doPost(HttpServletRequest request,HttpServletResponse response) throws ServletException { request.getSession().getAttribute(“A”); //第二行 } 假定第二行返回的对象引用不是null,那么这个对象存储的范围是()。 · A.page · ·B.session · ·C.request · ·D.application · 正确答案:B · 10. · (单选)在 JavaEE中,使用 Servlet 过滤器,需要在 web.xml中配置的元素是:() ·· A.和 · ·B.和 · ·C.

Java工作笔记(必看经典)

JAVA的面向对象编程--------课堂笔记 面向对象主要针对面向过程。 面向过程的基本单元是函数。 什么是对象:EVERYTHING IS OBJECT(万物皆对象) 所有的事物都有两个方面: 有什么(属性):用来描述对象。 能够做什么(方法):告诉外界对象有那些功能。 后者以前者为基础。 大的对象的属性也可以是一个对象。 为什么要使用面向对象: 首先,面向对象符合人类看待事物的一般规律。 对象的方法的实现细节是屏蔽的,只有对象方法的实现者了解细节。 方法的定义非常重要。方法有参数,也可能有返回值。 注意区分:对象(本身)、对象的实现者、对象的调用者。 分析对象主要从方法开始。 我们通过类来看待对象,类是对象的抽象。 其次,采用面向对象方法可以使系统各部分各司其职、各尽所能。 对象之间的耦合性一定要低(比如不同硬盘和不同主板之间的关系)。这样才能使每个对象本身做成最好的。 对于对象的要求:高内聚、低耦合,这样容易拼装成为一个系统。 实现高内聚就是要最大限度低提高复用性(复用性好是因为高内聚)。 可复用性是OOP的基础。 比较面向过程的思想和面向对象的思想: 面向过程的思想:由过程、步骤、函数组成,以过程为核心; 面向对象的思想:以对象为中心,先开发类,得到对象,通过对象之间相互通信实现功能。 面向过程是先有算法,后有数据结构。 面向对象是先有数据结构,然后再有算法。 在用面向对象思想开发的过程中,可以复用对象就进行复用,如无法进行复用则开发新的对象。 开发过程是用对个简单的对象的多个简单的方法,来实现复杂的功能。 从语法上来看,一个类是一个新的数据类型。 在面向对象编程中,除了简单数据类型,就是对象类型。 定义类的格式: class Student{ 代码 } 注意类名中单词的首字母大写。 实例变量:定义在类中但在任何方法之外。(New出来的均有初值) 局部变量:定义在方法之中的变量。

达内java笔记

目录 CoreJava DAY01 Java概述 1 CoreJava DAY02 数据类型和控制结构 6 CoreJava DAY03 数组11 CoreJava DAY04 15 CoreJava DAY05 面向对象17 CoreJava DAY06 类的加载过程、实例化、继承、多态20 CoreJava DAY07 修饰符26 CoreJava DAY08 常用类29 CoreJava DAY09 高级语言特征30 CoreJava DAY10 主方法,静态导入,包装类,枚举32 CoreJava DAY11 内部类36 CoreJava DAY12 集合List 40 CoreJava DAY13 集合Set 46 CoreJava DAY14 集合Map 49 CoreJava DAY15 异常、断言52 CoreJava DAY16 反射、注释57 CoreJava DAY17 GUI 64 CoreJava DAY18 awt event 81 CoreJava DAY19-20 多线程 85 CoreJava DAY21-22 IO 95 CoreJava DAY23 网络编程107 CoreJava DAY01 Java概述 ############################################################################### ########## CoreJava DA Y01(2009.02.21) ############ ########## Made by NieXu ############ ############################################################################### 一、学习CoreJava的要求 1、上课一定要听懂(理解) 2、课后一定要练习 3、练完后要思考 二、Java的优势 1、Java中省去了对指标的操作,但并不是没有指标了,只是被封装了而已,代替指标的是种新的变量,叫做引用,这个引用里面也是保存的一个对象的地址,它和指针的差别就是比指针功能要弱化了,也更简单了。内存空间自动回收,即垃圾回收,体现了其简单性。 2、安全性好,字节码的验证 3、Java的跨平台性:用这个语言开发出来的程序可以在不同系统中运行: 源码是怎样成为可执行代码的 源码-->编译-->目标码(二进制机器码)-->连接-->可执行档 由此看来,汇编、C、C++等语言都是不跨平台的,因为他们的编译过程就直接与当前系统挂钩了,C和C++源码都是跨平台的,我们所指的跨平台是基于编译过程中的跨平台,以上几种语言在不同的系统中编译出来的目标码是不同的。 Java跨平台就是编译过程中的跨平台,怎么实现的呢,那就是Java虚拟机:Java的源码编译过程:

达内java2015.11第一次月考(附答案).doc汇总

在线考试本次考试得分:96.0 ? 1. (单选)下列属于不合法Java标识符的是()。 o A. _mem o B. 12a o C. M12 o D. $12 正确答案:B ? 2. (单选)程序的执行结果是: public class Test { public static void main(String[] args){ System.out.println(""+'a'+1); } } o A. 98 o B. a1 o C. 971 o D. 197

正确答案:B ? 3. (单选)下列Java标识符,错误的是() o A. _sys_varl o B. $change o C. User_name o D. 1_file 正确答案:D ? 4. (单选)请看下列代码: public String makinStrings() { String s = "Fred"; s = s + "47"; s = s.substring(2, 5); s = s.toUpperCase(); return s.toString(); } 调用makinString方法,得到的字符串长度是: o A. 1 o B. 2 o C. 3 o D. 4 正确答案:C ? 5.

(单选)分析如下代码,输出结果为()。 public static void main(String[] args) { int i = 0; boolean re = false; re = ((++i) + i == 2) ? true : false; System.out.println("i=" + i + ",re="+re); } o A. i=1,re=true o B. i=0,re=true o C. i=1,re=false o D. i=0,re=false 正确答案:A ? 6. (单选)下列代码的运行结果是() public static void main(String[] args) { String str = "420"; str += 42; System.out.print(str); } o A. 42 o B. 420 o C. 462 o D. 42042 正确答案:C ?7. (单选)请看下列代码: public static void main(String[] args) { <插入代码> System.out.println(s); } 如果程序输出的结果是4247,那么在< 插入代码>处应该填入代码是()。

达内java1605班第三次月考

1. (单选)在JSP中,只有一行代码:<%=A+B%>,运行的结果是()。 o A. A+B o B. AB o C. 113 o D. 错误信息 正确答案:D ? 2. (单选)在JSP中,要定义一个方法,需要用到以下的元素是()。 o A. <%= %> o B. <% %> o C. <%! %> o D. <%@ %> 正确答案:C ? 3. (单选)在Java Web应用程序中,给定servletA的代码片段如下所示: public void doPost(HttpServletRequestrequest,HttpServletResponse response) throws ServletException,IOException{ String id=”kingdom”; ______________________ } ServletB与servletA同在一个有效的会话范围内,

当把请求转发给ServletB后,要是在ServletB中能够获得“kingdom”值,下划线处应填入()。 o A. request.getSession().setAttribute(“ID”,id); o B. request.getSession().getAttribute(“ID”,id); o C. request.getSession().setParameter(“ID”,id); o D. request.getSession().getParameter(“ID”,id); 正确答案:A ? 4. (单选)在J2EE中,以下不是JSP隐式对象的是()。 o A. pageContext o B. context o C. application o D. out 正确答案:B ? 5. (单选)下列不属于XmlHttpRequest对象的属性的是()。 o A. onreadystatechange o B. readyState

CoreJava笔记

·jdk: java develop kit(java开发工具包) ·jre: java runtime environment(java运行时环境),如果仅仅为了运行java程序,而不是开发java项目,只需要安装jre 即可。 ·程序设计语言种类: ·机器语言 ·汇编语言 ·高级程序设计语言(编译型)如:c,c++ ·高级程序设计语言(解释型)如:java ·编译(compilation) a.c-(编译)-a.out-执行 ·解释(interpretation) a.java-(编译)->a.class(字节码文件,在JVM上运行)-(解释)->二进制 ·java是一种解释型的,面向对象的编程语言。1991,1995年推出。Oak—>java。c++不安全,不简单,指针危险。java 自己操纵内存。 ·98年12月—>版本java1.2,名为java2:J2ME、J2SE(标准版,corejava)、J2EE ·java语言特点: ·简单的 ·面向对象的(封装、继承、多态) ·分布式的 ·解释性的 ·健壮的 ·安全的 ·与平台无关性! ·多线程 ·动态的 ·可移植 ·java数组避免了覆盖数据的可能。提供NULL指针检测、数组边界检测、异常出口、字节代码校验。·JVM—java虚拟机。 ·java解释器的执行过程: 1、代码的装入(类class loader) 2、校验 3、程序的执行 ·java字节码的两种执行方式: 1、just-in-time 即时编译方式(成机器代码) 2、解释执行方式Interpreter

·Java平台由java应用编程接口(API)和java虚拟机(JVM)构成。 ·Jre:java运行时环境,运行java程序 ·环境变量配置: ·Path ./;c:\jdk1.5\bin;或./;%JA V A_HOME%\bin;(前提有JA V A_HOME) ·JA V A_HOME c:\jdk1.5 ·classpath ./;class文件所在位置的路径(设置class的查找路径) ·java程序中,有且只有一个public class类,可以有多个class类。区分大小写,类名首字母大写。 ·main()不是必须要放在public class类中的。java解释时,要运行主类。 ·安装JDK后产生的目录结构 ·\bin java开发工具,包括java编译器,解释器等 ·\demo 一些实力程序 ·\lib java开发类库 ·\jre java运行环境,包括java虚拟机、运行类库 ·java开发工具包括: ·javac java编译器,编译成字节码 ·java java解释器 ·jdb java调试器 ·javap 反编译 ·javadoc 文档生成器,创建HTML文件 ·AppletviwerApplet解释器,用来解释已经转换成字节码的java小应用程序。 ·java程序分为: ·java应用程序(java Application) ·java小程序(java Applet) ·String[] args 字符串数组(命令行参数) ·Java Applet小程序中,不得出现main方法,且必须是public的,必须有一个扩展的Applet类,Applet类是系统提供的类 使用时需import java.applet.Applet,在HTML中执行 appletviewer applet.html (直接运行java小程序) appletviewer MyApplet.java (找注释掉的) ·#include 直接把库放到目标文件,包含里面 ·import 引用一个类或者一个包 ·程序书写规范: ·包名全部小写io,awt ·类名第一个字母要大写HelloWorldApp ·变量名第一个字母要小写userName ·方法名第一个字母要小写setName ·底层之间映射模式二进制数---ASCII ·Unicode国际编码 ·中国编码格式:gbk 。分gb2312(简)big5(繁) ·变量是指其值在运行时可以改变的量。

达内java培训学习笔记

达内java培训学习笔记: 下载、安装Eclipse 进入Eclipse项目的主页https://www.doczj.com/doc/7a11294179.html,,点击Downloads,进入下载页。 Eclipse最新的版本是3.3版,但是3.3版的多国语言翻译包还没有出来,所以我们可以使用一个稍早一点的版本3.2。 点击3.2进入其下载页,这个页面有很多下载连接,包括Eclipse SDK在很多平台上的版本; 这里我们只需要下载eclipse-SDK-3.2-win32.zip将这个文件解压缩到磁盘的目录,如D:\eclipse。 在运行Eclipse之前首先应该安装好JDK,设置好环境变量JAVA_HOME、CLASSPATH和PATH。为D:\eclipse下的eclipse.exe在桌面上建立一个快捷方式。双击快捷方式启动Eclipse。 ================================================================================ ========================== 设置JRE: 1.选择Window->Preferences,然后选择Java->Installed JREs,然后选择jre1.5.0_07,单击Edit按钮. 2.单击Browse按钮,选择JDK的安装路径,然后单击OK确定.这样Eclipse下的JDK就已经设置完成了. ================================================================================ ========================== 第一个Eclipse工程:下面我们编写一个简单的HellWorld程序,步骤如下: 1.选择File->New->Project 2.项目列表选Java Project 3.点击“下一步”; 4.输入项目名称,例如:Java;选择相应的JRE(默认即可); 然后选择字解码文件和源文件分离.

达内Java班第一次月考

? 1.? (单选题)下列数组声明语句中,错误的是:()。 ? ?A. int[] arr = new int[]{}; ?B. int[] arr = new int[]; ?C. int[] arr = {}; ?D. int[][] arr = new int[2][];

。 ? 2.? (单选)class Card{}下列不属于Card类构造方法的是:() ? ?A. Card(){} ?B. public Card(){} ?C. public void Card(){} ?D. private Card(){}

? 3.? (单选)下面不属于Java语言特点的是: ? ?A. 平台无关 ?B. 面向对象 ?C. 支持指针类型 ?D. 垃圾回收机制 正确答案:C

? 4.? (单选)下列选项中的类,能正确实现https://www.doczj.com/doc/7a11294179.html,ng.Runnable接口和https://www.doczj.com/doc/7a11294179.html,ng.Clonable接口的是()。 ? ?A. public class Session implements Runnable, Clonable { public void run(); public Object clone(); } ?B. public class Session implements Runnable, implements Clonable { public void run() { / do something */ } public Object clone() { / make a copy */ } } ?C. public class Session implements Runnable, Clonable { public void run() { / do something */ } public Object clone() { /* make a copy */ } } ?D.

达内JAVA第三个月月考资料

〃 1. 〃 (单选)在JavaEE中,要将某个过滤器映射到Web应用程序的每个Web资源,以下在web.xml,中的配置正确的是()。〃 A. someFilter /* B.someFilter /* 〃 C.* 〃 D.someFilter * 〃 正确答案:A 〃 2. 〃 (单选)在J2EE中,以下不是JSP隐式对象的是()。 〃 〃A. pageContext 〃 〃B. context 〃 〃C. application 〃 〃D. out 〃 正确答案:B 〃 3. 〃 (单选)在JavaEE中,若要在JSP中正确使用标签:,在JSP中声明的taglib指令为: 〃 〃B. 〃 〃C. 〃 〃D. 〃 正确答案:D 6. (单选)下列属于抽象类的是()。 A.ServletConfig 〃 〃B.HttpServlet 〃 〃C.Cookie 〃 〃D.HttpServletRequest 〃 正确答案:B 7. (单选)在jQuery中$("#test")和$(".test”)表示的含义是:( )。 A. $("#test")表示选择id为test的元素 $(".test”) 表示选择id为test的元素 〃 〃B. $("#test")表示选择id为test的元素 $(".test”) 表示选择所用CSS类为test的元素 〃 〃C. $("#test")表示选择所用CSS类为test的元素 $(".test”) 表示选择id为test的元素 〃 〃D. $("#test")表示选择所用CSS类为test的元素 $(".test”) 表示选择所用CSS类为test的元素 〃 正确答案:B 8. (单选)给定某Servlet程序的片段如下,用户在浏览器地址栏中键盘键入正确的请求URL并回车后, 在控制台上显示的结果是 ( )。 public void doGet(HttpServletRequest request,HttpServletResponse response) throws ServletException ,IOException {

2018-达内云笔记项目资料-word范文 (9页)

本文部分内容来自网络整理,本司不为其真实性负责,如有异议或侵权请及时联系,本司将立即删除! == 本文为word格式,下载后可方便编辑和修改! == 达内云笔记项目资料 篇一:达内云笔记需求文档 达内云笔记需求文档 王森丰 201X.5.06 1 产品背景 之前TTS6.0本身提供了简单的笔记功能,并且提供了简单的笔记分享,但是由于笔记内容随着时间的推移越来越多,但是老系统使用的架构趋于传统业务处 理模型,这样导致系统没有办法应付如此大规模的笔记数据,并且笔记的分享 能力有限,也无法做到笔记的随时随地可用于是在TTS7.0暂时拿掉了这个功能,但是学员对线上记录笔记的需求仍然很强烈,对笔记的要求也远远超过了简单 的笔记工具的实现能力,每天建议平台都可以看到学员提出达内开发笔记平台 的建议,为了满足学员的要求,我们需要研发一款适合达内教学和学员使用方 式的笔记产品。 2 产品简述 达内云笔记是在吸收了多年的运营数据,经过精确的大数据分析指导需求模型 的建立从而实现的,云笔记通过大数据分布式存储解决方案解决了笔记信息量 膨胀的问题,并且通过分布式搜索引擎服务以及数据分析推荐平台的建立提升 了用户搜索分享比较的能力,系统可以有针对性的提供用户其他人分享的笔记 资源扩充自己的知识行囊,并且在分享之外通过每个人的配额管理实现了非分 享笔记的安全私有化,保证了学员的私人空间。通过分布式解决方案用户空间 被设计为无限大。业务端同时提供了windows客户端,更加贴近学员的是用习惯,并且数据平台支持移动设备的接入,达到无处不学习,无处不笔记的效果。 3 技术关键词 web平台: nginx,keepalived+lvs,varnish,tomcat,springmvc,jquery,fckeditor,ibatis hadoop(hdfs,mapreduce),hbase,zookeeper,thrift,lucene,mysql,redis,maho ut,kafka 客户端:

达内java暑期实训报告

毕业实习报告 一、实习目的: 进一步了解java开发的相关知识,掌握java开发的基本技术,丰富java开发的实战经验。学习SQL的基础知识及正确的运用方法,和有用的相关技术,提高自己的工作效率。通过实习,培养我们综合运用已学知识Java语言的面向对象编程能力;培养我们动手能力;培养我们良好编程规范、编程方法;以便能较全面地理解、掌握和综合运用所学的知识,提高自身的编程能力;增强自己的团队协作意识,了解软件开发的思考角度和主要流程。为毕业之后能够更快地进入工作状态并且能够更好的工作,打好一定的基础。 二、实习单位介绍: 北京达内科技有限公司是中国高端IT培训的领先品牌,致力于培养面向电信和金融领域的Java、C++、C#/.Net、测试、嵌入式、PHP等方面的中高端软件人才,由美国国际数据集团IDG和集富亚洲JAFCO ASIA投资,是国内首家获得国际风险投资的IT培训机构。经过9年运营,达内科技实现了98% 的专业就业率,78%的口碑入学率,学员平均毕业薪资3800元/首月平均薪资。目前,达内科技已经发展成为集培训、咨询、开发、人才服务于一体的高新技术集团公司,公司下设达内高端IT培训、达内软件人才服务中心、达内软件研发中心。 达内科技以中关村科技园区为依托,在中国软件业发达城市——北京、上海、广州、深圳、大连、南京、武汉、杭州、西安、苏州、成都、太原20大城市,建立了近40家培训中心,占地2万平米,年培训1万多名软件人才。已累计为IBM、微软、摩托罗拉、华为、中软、用友、Yahoo、阿里巴巴、TOM、新浪、搜狐、百度、联想、神州数码、大唐电信、亚信等知名IT企业培养输送了7万多名中高级软件人才,目前达内全国拥有600多名员工,年产值近2亿元,是中国领先的中高端软件人才培训机构。 由于达内科技优秀的教学效果和行业领先的经营模式赢得了社会各界的广泛赞誉和好评,近年来达内荣获了各界权威机构的颁奖:达内成为业界唯一的一家2006、2007、2008、2009连续4年入选德勤评选的“中国高科技高成长50强公司”、“亚太地区高科技高成长500强公司”,获得首届中国留学人才归国创业“腾飞”奖、中关村管理委员会指定的“软件人才培养示范基地”、被《计算机世界》评选的“就业服务杰出贡献奖”、被《中国计算机报》评选的“最具影响力培训机构奖”、被搜狐评为“中国十大教育集团”、被腾讯评为“中国大学生心目中最具影响力的IT品牌”、2011年达内CEO韩少云先生当选中国贸易协会专家委员会第一届副主任委员等荣誉。

达内Java1605班第二次月考

? 1. (单选)下面是SqlPlus命令的是:()。 o A. DESC o B. ALTER o C. SELECT o D. DELETE 正确答案:A ? 2. (单选)下列会自动创建索引的约束的是:()。 o A. UNIQUE o B. NOT NULL o C. FOREIGN KEY o D. CHECK 正确答案:A ? 3. (单选)下面不属于接口的是:()。 o A. java.sql.Connection o B. java.sql.Driver o C. java.sql.DriverManager o D.

java.sql.ResultSet 正确答案:C ? 4. (单选)在Oracle中,控制年龄必须在18到50之间(包含18和50),可使用的代码是()。 o A. age>18 and age<50 o B. age>=18 and age<=50 o C. age>=18 && age<=50 o D. age>18 && age<50 正确答案:B ? 5. (单选)下列Oracle语句中,属于DDL语句的是() o A. DROP o B. INSERT o C. DELETE o D. SELECT 正确答案:A ? 6. (单选)包含事务控制方法setAutoCommit, commit, rollback的是:() 。 o A. Connection o B. Statement

o C. ResultSet o D. DriverManager 正确答案:A ?7. (单选)在oracle中,判断一条记录的某个列是否为NULL,应该使用:( )。 o A. != o B. <> o C. IS o D. = 正确答案:C ?8. (单选)查询cost表中资费名称,月固定费用,月包在线时长,单位费用,下列sql语句正确的是: o A. select name/base_duration/base_cost/unit_cost from cost o B. select name,base_cost,unit_cost from cost o C. select name and base_duration and base_cost and unit_cost from cost o D. select name,base_duration,base_cost,unit_cost from cost 正确答案:D ?9. (单选)下面关于结果集,说法错误的是:()。 o A.

达内JAVA初高级阶段笔记总结

JAVA初高级阶段笔记 Day0: 1.异常与错误: 1.异常是程序在执行过程中出现的中断正常指令执行的事件。 2.错误是偏离可接受代码的一个动作或实例。 2.o verload和overrid的区别 1.Overload方法重载:如果在一个类中 2.它们有不同的参数或参数类型,则该方法称为方法的重载。 3.Override方法重写:如果子类中定义某个方法与其父类有相同的名称和参数,则该方法被重写。 3.常见异常 1.空指针异常类:https://www.doczj.com/doc/7a11294179.html,ng.nullPointerException 2.数组下标越界异:https://www.doczj.com/doc/7a11294179.html,ng.arrayIndexOutOfBoundsException 3.类型强制转换异常:https://www.doczj.com/doc/7a11294179.html,ng.classCastException 4.数学运算异常:https://www.doczj.com/doc/7a11294179.html,ng.arithmeticexception 5.操作数据库异常:java.sql.SQLException 6.没有访问权限异常:https://www.doczj.com/doc/7a11294179.html,ng.illegalaccessexception 7.字符串转换为数字异常:https://www.doczj.com/doc/7a11294179.html,ng.numberFormatException 4.静态变量和非静态变量的区别 1.静态变量:用关键字static修饰的成员变量称作静态变量或类变量,是与类相关联的数据变量,类变量 不仅可以通过某个对象访问也可以直接通过类名访问,静态变量被相关的对象共享。 2.非静态变量:没有使用static修饰的成员变量称作非静态变量;仅仅是和相应对象关联的变量,改变其 中一个对象的实例变量不会影响其它对象的这个实例变量,且必须通过对象访问。 5.静态方法和非静态方法有什么区别: 1.静态方法中不用this是无法引用除自己方法体中定义的成员和参数以外的非静态变量或者方法的。 2.静态方法是不允许被子类重写的,但是子类可以重载父类的静态方法。 3.子类也不可将父类中的非静态方法重写为静态方法。 6.f inal和finally和finalize的区别 1.final-修饰符(关键字)被声明为final的类,不能再派生出新的子类,不能作为父类被继承。被声明为final 的变量必须在声明时给定初值,而在以后的引用中只能读取,不可修改。final方法只能使用,不能重写。 2.finally-在异常处理时提供finally 块来执行任何清除操作。如果抛出一个异常,那么相匹配的catch 子句 就会执行,然后控制就会进入finally 块(如果有的话)。 3.finalize-方法名。finalize() 方法在垃圾收集器将对象从内存中清除出去之前做必要的清理工作。子类覆盖 finalize() 方法以整理系统资源或者执行其他清理工作。finalize() 方法是在垃圾收集器删除对象之前对这个对象调用的。 | || & &&

达内jdbc笔记完全版

JDBC第一天 2007年6月4日 一、JDBC原理概述 1,JDBC是一套协议,是JAVA开发人员和数据库厂商达成的协议,也就是由Sun定义一组接口,由数据库厂商来实现, 并规定了JAVA开发人员访问数据库所使用的方法的调用规范。 2,JDBC的实现是由数据库厂商提供,以驱动程序形式提供。 3,JDBC在使用前要先加载驱动。 JDBC对于使用者要有一致性,对不同的数据库其使用方法都是相同的。 4、driver开发必须要实现Driver接口。 JDBC驱动程序的类型 目前比较常见的JDBC驱动程序可分为以下四个种类: (1)JDBC-ODBC桥加ODBC驱动程序 JavaSoft桥产品利用ODBC驱动程序提供JDBC访问。 注意,必须将ODBC二进制代码(许多情况下还包括数据库客户机代码)加载到使用该驱动程序的每个客户机上。 因此,这种类型的驱动程序最适合于企业网(这种网络上客户机的安装不是主要问题),或者是用Java编写的三层结构的应用程序服务器代码。 (2)本地API 这种类型的驱动程序把客户机API上的JDBC调用转换为Oracle、Sybase、Informix、DB2或其它DBMS的调用。 注意,象桥驱动程序一样,这种类型的驱动程序要求将某些二进制代码加载到每台客户机上。 (3)JDBC网络纯Java驱动程序

这种驱动程序将JDBC转换为与DBMS无关的网络协议,之后这种协议又被某个服务器转换为一种DBMS协议。 这种网络服务器中间件能够将它的纯Java客户机连接到多种不同的数据库上。所用的具体协议取决于提供者。 通常,这是最为灵活的JDBC驱动程序。有可能所有这种解决方案的提供者都提供适合于Intranet用的产品。 为了使这些产品也支持Internet访问,它们必须处理Web所提出的安全性、通过防火墙的访问等方面的额外要求。 几家提供者正将JDBC驱动程序加到他们现有的数据库中间件产品中。 (4)本地协议纯Java驱动程序 这种类型的驱动程序将JDBC调用直接转换为DBMS所使用的网络协议。 这将允许从客户机机器上直接调用DBMS服务器,是Intranet访问的一个很实用的解决方法。 由于许多这样的协议都是专用的,因此数据库提供者自己将是主要来源,有几家提供者已在着手做这件事了。 据专家预计第(3)、(4)类驱动程序将成为从JDBC访问数据库的首方法。 第(1)、(2)类驱动程序在直接的纯Java驱动程序还没有上市前会作为过渡方案来使用。 对第(1)、(2)类驱动程序可能会有一些变种,这些变种要求有连接器,但通常这些是更加不可取的解决方案。 第(3)、(4)类驱动程序提供了Java的所有优点,包括自动安装(例如,通过使用JDBC驱动程序的appletapplet来下载该驱动程序)。 5、JDBC的API java.sql包和javax.sql包 DriverManager类(驱动管理器),它可以创建连接,它本身就是一个创建Connection的工厂(Factory)。 Driver接口入口 Connection接口,会根据不同的驱动产生不同的连接

达内科技Java学习笔记(经典必看)

诚信、创新、开放、合作 JAVA的面向对象编程--------课堂笔记 面向对象主要针对面向过程。 面向过程的基本单元是函数。 什么是对象:EVERYTHING IS OBJECT(万物皆对象) 所有的事物都有两个方面:// 有什么(属性):用来描述对象。 能够做什么(方法):告诉外界对象有那些功能。 后者以前者为基础。 大的对象的属性也可以是一个对象。 为什么要使用面向对象: 首先,面向对象符合人类看待事物的一般规律。 对象的方法的实现细节是屏蔽的,只有对象方法的实现者了解细节。 方法的定义非常重要。方法有参数,也可能有返回值。 注意区分:对象(本身)、对象的实现者、对象的调用者。 分析对象主要从方法开始。 我们通过类来看待对象,类是对象的抽象。 其次,采用面向对象方法可以使系统各部分各司其职、各尽所能。 对象之间的耦合性一定要低(比如不同硬盘和不同主板之间的关系)。这样才能使每个对象本身做成最好的。 对于对象的要求:高内聚、低耦合,这样容易拼装成为一个系统。 实现高内聚就是要最大限度低提高复用性(复用性好是因为高内聚)。 可复用性是OOP的基础。 比较面向过程的思想和面向对象的思想: 面向过程的思想:由过程、步骤、函数组成,以过程为核心; 面向对象的思想:以对象为中心,先开发类,得到对象,通过对象之间相互通信实现功能。 面向过程是先有算法,后有数据结构。 面向对象是先有数据结构,然后再有算法。 在用面向对象思想开发的过程中,可以复用对象就进行复用,如无法进行复用则开发新的对象。 开发过程是用对个简单的对象的多个简单的方法,来实现复杂的功能。 从语法上来看,一个类是一个新的数据类型。 在面向对象编程中,除了简单数据类型,就是对象类型。 定义类的格式: class Student{ 代码 }

相关主题
文本预览
相关文档 最新文档