wwwlehu6.vip乐虎官网数据库复习

1.Oracle数据库中常用的数据类型 
varchar贰(长度)可变长字符串 
char(长度) 定长 
number()表示整数要么浮点数number(8) number(八,二) 
clog 字符的大目标 
blog 2进制的大目的 

二.数据库查询 
1)SELECT语句 
从表中提取查询数据.语法为SELECT [DISTINCT] {column1,column2,…} FROM
tablename WHERE {conditions} GROUP BY {conditions} ORDER BY
{expressions} [ASC/DESC]; 
注明:SELECT子句用于钦点检索数据库的中怎么样列,FROM子句用于钦命从哪三个表或视图中查找数据。 
2)WHERE子句。 
WHERE子句用来摘取符合条件的的记录. 
like ‘…’ 通配查询 _,% 
between … and … ,表示结果在那时期,between and是1个闭区间。 
!=,<>,^=,这八个都能够表示不等于。 
in (va一,val2,…) 决断结果是还是不是在这些集结中存在 。 
like ‘…’ 字符串通配查询,’%’表示0或多少个字符,’_’表示三个字符。 
… and … 表示只有四个规格还要满意 
… or … 表示原则一旦满足个中之1就足以 
all … 是讲求都满意条件。 
not …..,则是能够与以上的尺码发出反效果。 
… is null 使用来判断值是否空。 
3) ORDER BY子句 
OQX56DE路虎极光 BY
子句使得SQL在彰显查询结果时将各重返行按顺序排列,重返行的排列顺序由O奥迪Q5DER
BY 子句钦命的表明式的值鲜明。 
ASC(默认,升序) DESC(降序) 
order by 目的列名(小名) 排序顺序(不写排序依次,会暗许为升序排序) 
例:select first_name from s_emp order by first_name; 
select first_name from s_emp order by first_name desc; 

3.SQL常用的吩咐分类及例子 
多少定义语言:create(创建)、alter(改造)和drop(删除)命令。 
数据操纵语言:insert(插入)、select(采纳)、delete(删除)和update(更新)命令。 
事情调控语言:commit(提交)、savepoint(保存点)和rollback(回滚)命令。 
数码调节语言:grant(授予)和revoke(回收)。 
1.数量定义语言举个例子: 
SQL> create table myTab(no number(四),name
varchar2(20));创制3个名字为myTab的表,包括两列no和name; 
SQL> alter table myTab modify (name
varchar二(二伍));修改myTab中的name列,使此列能包容2多少个字符; 
SQL> alter table myTab add (tel_no
varchar二(20));给表myTab扩张壹列tel_no; 
SQL> alter table myTab drop column tel_no;删除表myTab的tel_no列; 
SQL> drop table myTab;删除表myTab; 
SQL> truncate table
myTab;删除表myTab中的全部行(截断表),注意:不得以回滚。 

贰.数量操纵语言比方: 
SQL> insert into myTab values(‘001’,’John’); 
向表myTab中插入1行数据; 
SQL> select distinct salary “薪水” from s_emp where salary>1500
order by sal desc; 
挑选表中salary大于1500的数码,以外号“薪酬”展现并遵照salary的降序举行排列输出; 
SQL> create table empa as select empno,ename,job,sal from emp; 
从emp表中挑选“empno,ename,job,sal”四列的数目建立新表empa; 
SQL> create table empa as select * from emp where 1=2; 
运用三个假条件依据现成表emp创制1个只含有结构的空表empa; 
SQL> delete from empa where sal<1500; 
删除表empa中sal小于1500的行; 
SQL> update empa set sal=1500 where
sal<1500;更新,将表empa中sal小于1500的行的sal值全部制改进为1500。 

叁.事务调控语言举例: 
SQL> commit;用于提交并终止事务管理; 
SQL> savepoint
mark一;保存点类似于标志,用来标识事务中得以接纳回滚的点; 
SQL> rollback to savepoint mark1;回滚到保存点mark一。 

四.Oracle数据库函数 
留神:dual表(虚表)是专程用来函数测试和平运动算的. 
一.字符函数 
   字符是大小写敏感的 
   转小写 lower(字段名) 
   转大写 upper(字段名) 
   首字母大写 initcap(字段名) 
   字符串拼接 concat(字段一, 字段二) 
   截取子串 substr(字段名, 开头地点,取字符个数) 
例: select first_name,substr(first_name,2,2) sub from
s_emp;(从名字的第一个字符开首取多个字符) 
select first_name,substr(first_name,-2,2) sub from
s_emp;(从名字的尾数第二个字符开头取三个字符) 
二.数值函数 
   四舍5入函数 round(数据,保留到小数点后三个人) 
   1表示保留到小数点后一位,-一象征保留到小数点前一个人。 
   例:select round(15.36,1) from dual; 
   截取数值函数 trunc(数据,保留到小数点后几个人) 
   例:select trunc(123.456,1) from dual; 
截取到小数点后一人,注意:与round函数不一致,不会四舍伍入。 
三.日期函数 
   缺省日期格式,日-月-年 dd-mon-rr 
   修改当前对话的日期格式,会服从钦赐的格式输出日期 
   alter session set nls_date_format=’yyyy mm dd hh24:mi:ss’; 
   重临当今日子 sysdate 
   例:select sysdate from dual; 
4.不1数据类型间转变函数 
   将日期转成字符 tochar(date,’日期格式’) 
   日期格式要用有效格式,格式大小写敏感 ‘yyyy mm dd
hh2肆:mi:ss'(标准日期格式),’year'(年的全拼),’month'(月的全拼),’day'(星期的全拼),’ddspth’
(日期的全拼) 
   例:select to_char(sysdate,’yyyy mm dd hh24:mi:ss’)from dual; 
select to_char(sysdate,’year month day ddspth’)from dual; 
   将字符串转成日期 to_date(‘…’,’日期格式’) 
   例:select to_char(to_date(‘2006 11 03′,’yyyy mm
dd’),’dd-month-yy’) from dual; 

伍.表连接(关联合检查询) 
等值连接 
select table1.column1,table2.column2 
from table1 t1,table2 t2 
where t1.column3=t2.column4; 
表连接时,当表与表之间有同名字段时,能够增加表名或表的小名,加以不一样,使用时要用表名.字段名或表小名.字段名(列名)。当表的字段名是绝无仅有时,能够毫不加多表名或表的别称。 
专注:当为表起了别称,就不能够再使用表名.字段名了。 
例如:select e.first_name ||’ ’|| e.last_name name, 
d.name dept_name 
from s_emp e, s_dept d 
where e.dept_id=d.id; 

非等值连接 
select [表别名1.字段名1],[表别名2.字段名2],… 
from 表1 表别名1 ,表2 表别名2 
where 表别名1.字段名3 ….. 表别名2.字段名4 
….能够使比较运算符,也能够使其余的除了’=’的演算符 
例:select first_name, salary 
from s_emp 
where salary between 1000 and 2000; 

自连接 
把一个表的多少个字段关系调换来五个表字段之间的关系. 
select [表别名1.字段名1],[表别名2.字段名2],… 
from 表1 表别名1 ,表1 表别名2 
where 表别名1.字段名3=表别名2.字段名4; 
例:select a.first_name ename,b.first_name cname 
from s_emp a,s_emp b 
where a.manager_id=b.id; 

外连接 
运用一张表中的富有记录去和另一张表中的笔录按规范同盟(空值也会合作)这么些表中的持有记录都会展示。 
//想在怎么样模拟记录就在哪些加上(+) 

  1. LEFT OUTE奥迪Q3 JOIN:左外连接 
    SELECT e.last_name, e.dept_id, d.name 
    FROM s_emp e 
    LEFT OUTER JOIN s_dept d 
    ON (e.dept_id = d.id); 
    等价于 
    SELECT e.last_name, e.dept_id, d.name 
    FROM s_emp e, s_dept d 
    WHERE e.dept_id=d.id(+); 
    结果为:全数职员和工人及相应机构的记录,包蕴未有相应机构编号dept_id的职员和工人记录。 
  2. 奇骏IGHT OUTELAND JOIN:右外连接 
    SELECT e.last_name, d.name 
    FROM s_emp e 
    RIGHT OUTER JOIN s_dept d 
    ON (e.dept_id = d.id); 
    等价于 
    SELECT e.last_name,d.name 
    FROM s_emp e, s_dept d 
    WHERE e.dept_id(+)=d.id; 
    结果为:全体职工及相应机构的笔录,包涵未有别的职员和工人的机关记录。 
  3. FULL OUTE帕杰罗 JOIN:全外关联 
    SELECT e.dept_id,d.id 
    FROM s_emp e 
    FULL OUTER JOIN s_dept d 
    ON (e.dept_id = d.id); 

结果为:全部员工及相应机构的记录,包含没有对号入座机构编号department_id的职工记录和未有别的职员和工人的机构记录。 
六.组函数 
group by把 select 的结果集分成多少个小组,那几个group by 子句能够跟在 select
语句后大概 having前边。group
by子句也会接触排序操作,会按分组字段排序。 
select [组函数或分组的字段名]… from 表名 group by
[字段名1],[字段名2],…..; 
例:select avg(salary) from s_emp group by dept_id; 
只顾:组函数会忽略空值,但是count(*)除此之外,他会把空记录也记录在内。avg和sum那五个函数的参数只好是number型的。 
以下所提到的函数能够行使大四等级次序做参数。 
max(..),min(..)求最大值和纤维值, 
count(*)总结表中记录数。 
例:select max(b.name),avg(a.salary), max(c.name) 
from s_emp a,s_dept b,s_region c 
where a.dept_id=b.id 
and b.region_id=c.id 
group by b.id; 
只顾:只要写了group by子句,select后就只能用group
by之后的字段或许是组函数。having子句可以过滤组函数结果只怕分组的新闻,并且写在group
by子句后。 

七.子查询 
能够嵌在sql语句中的select语句。 
在select语句中嵌套子查询时,会先实践子查询。一般的会将子查询放在运算符的右边。 
注意:在使用子查询时,要小心那一个运算符是单行的(约等于不得不是单值),依然多行运算符(范围,多值)。协作使用子查询重返的结果必须符合运算符的用法。 
例: 
select first_name||’ ‘||last_name name 
from s_emp 
where title in (select title from s_emp 
where dept_id=42); 
查询和4二部门职员和工人职位同样的具备职工的姓名 

八.约束 
本着表中的字段实行定义的。 
primary key(主键约束 PK)有限支撑实体的完整性,保险记录的绝无仅有 
主键约束,唯一且非空,并且每三个表中只可以有二个主键,有八个字段联合作为主键时,将四个字段放在1块儿唯一标志记录,叫做联合主键。 
主键约束的概念: 
第二种概念格局: 
create table test(c number primary key );        列级约束 
第2种概念情势: 
create table test(c number , primary key(c) ) ;        表级约束 
create table test(c1 number constraints   pk_c一 primary key );  
此约束有名字: pk_c1 
create table   test(c number , c2 number , primary key (c ,c一) ) ;
用表级约束能够实现共同主键 

foreign key(外键约束
FK)保证引用的完整性,外键约束,外键的取值是受此外一张表中的主键或唯1键的封锁,不可见取别的值,只能引用主键或唯1键的值,被引述的表,叫做
parent table(父表),引用方的表叫做child
table(子表),要想创设子表,就要先创造父表,记录的插入也是那样,先父表后子表,删除记录,要先删除子表记录,后去除父表记录,要修改记录,若是要修改父表的笔录要保证未有被子表引用。要删表时,要先删子表,后删除父表。(能够因此选用cascade
constraints 选项来删除父表) 
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)); 
非空约束(not null)那是一个列级约束,在建表时,在数据类型的末端加上 not
null ,也正是在插入时不容许插入空值。 
例:create table student(id number primary key,name varchar2(32) not
null,address varchar2(32)); 
unique 唯1约束 
唯1约束,允许为空,供给插入的笔录中的值是绝无仅有的。 
例:create table student(id number,name varchar2(32),address
varchar2(32),primary key (id),unique (address)); 
check约束 
检查约束,能够依据内定条件,检查笔录的插入。check中无法选用伪列,不能选取函数,不可能引用其余字段。 
例:create table sal (a1 number , check(a1>1000)); 

玖.数据字典 
数量字典是由系统一保险险的,包蕴数据库的音讯 
数据字典示图 
user_XXXXX 用户示图 
all_XXXXX 全体示图 
dba_XXXXX 数据库中具备示图 
v$_XXXXX   动态质量示图 

dict或 dictionary 表示数据字典的数量字典。 
user_constraints 用户的表中约束的表 
其中有constraints_name字段存放的是束缚名,constraint_type字段存放的是约束的类型,r_constraints_name字段表示外键引用自何处. 
user_cons_column表,是用户的列级约束表,column_name字段存放的是束缚字段的名字,position字段存放的是封锁在联合键中的地方. 

十.事务transaction 
原子操作,也正是不可分割的操作,必须共同成功一同失利。 
事务的终结动作就是commit,DDL,DCL语句实践会活动提交commit。 
sqlplus不荒谬退出是会做提交动作的commit;,当系统极度推出是,会施行回滚操作rollback;。 
五个未曾落成的事情,叫做运动的事务 (active
transaction),活动的事体中期维修改的数据,唯有本会话才干瞥见。 

101.Oracle中的伪列 
伪列就像Oracle中的2个表列,但实质上它从不存款和储蓄在表中。伪列能够从表中查询,不过无法插入、更新或删除它们的值。常用的伪列:rowid和rownum。 
rowid:数据库中的每一行都有二个行地址,rowid伪列再次来到该行地址。能够接纳rowid值来定位表中的一条龙。平日景况下,rowid值能够唯壹地方统一标准识数据库中的1行。 
rowid伪列有以下珍视用途: 
一)能以最快的措施访问表中的壹行; 
贰)能显示表的行是什么样存款和储蓄的。 
三)能够看做表中行的唯1标志。 
如:SQL> select rowid,ename from emp; 
rownum:对于3个询问再次来到的每1行,rownum伪列再次回到一个数值代表的次序。 
rownum伪列特点: 
一) 有个特点依旧等于一 或许小于某些值, 无法直接等于有个别值,
不可能压倒有些值。 
二)常用于分页展现。 
回到的率先行的rownum值为1,第1行的rownum值为二,依此类推。通过使用rownum伪列,用户能够界定查询重回的行数。 
如:SQL>select * from emp where rownum<1壹;
从emp表中提取10条记下。 

十二.序列(sequence) 
create sequence 序列名; 
(不带参数时默感觉从一 始发每回递增
1,oracle中为了升高产生类别的频率一般一遍性发生二十个连串放入当前对话的连串池中备用以加速功效) 

sequence 的参数: 
increment by n   起始值 
start with n     递增量 
maxvalue n       最大值 
minvalue n       最小值 
cycle|no cycle     循环 
cache n          缓存(第叁遍取时会1遍取多少个id存起来) 

查看sequence 示图: 
desc    user_sequences ; 
select   sequence_name , cache_size , last_number from
user_sequences   where   sequence_name like ‘s_’; 
select 种类名.currval from   dual    查看当前的队列数 
select 连串名.nextval from   dual   
查看下三个队列数,它会自行给当下的连串加1 
剔除连串sequence 
drop sequence 序列名; 

十三. 视图(View) 
视图就一定于一条select 语句,定义了三个视图正是概念了二个sql语句,
视图不占空间,使用视图不会增加品质,可是能简化sql语句 
制造视图: 
creating views视图名; 
如: 
create or replace views test as select * from test1 where c1=1; 
create or replace:即便view存在就覆盖,不设有才创立。 
force|no force:基表存在时使用,不设有时则创立该表。 
留神:向视图中插入数据时,会一贯插进基表中,查看视图中的数据时,约等于正是举办成立时的select语句。 
删去视图: 
drop views视图名; 
盘算的自律: 
with read only视图只读约束 
with check option
不容许插入与where条件不符的记录,类似于check约束的功效. 
create view test_cc 
as select * from test 
where c1>10 
with check option; 

十四.索引(index) 
创造目录的目的就是为了加快查询速度,建立目录后会使DML操作成效慢,可是对用户查询会升高效能。删除一个表时,相呼应的目录也会删除。此外,索引是会进展排序。 
创制二个目录: 
create index 索引名 on 表名 (字段名); 
create index test_index on test(c1); 
删去索引: 
drop index test_index; 
留意:创制索引正是为着削减物理读,索引会减弱扫描的大运。在不时要用到where的子句的字段,应该使用索引,其它还要看所查询的多寡与整个数码的百分比,表越大,查询的笔录越少,索引的功用就越高.

You can leave a response, or trackback from your own site.

Leave a Reply

网站地图xml地图