数据库之SQL语句复习

一、基本数据类型

1.char与varchar,char是固定字符串长度,varchar是可变字符串长度。

2.int与smallint,smallint是int长度的一半。

3.numeric(p,d)总长度p位,小数点后d位。

4.real,double precision精度,float(n)精度至少为n位。

5.time,data,timestamp

6.default,缺省值

二、DDL与DML

DDL是数据定义语言,定义模式,DML是数据操纵语言,主要是查询。

三、SQL语句

1.创建模式:create 

create table instructor
    (
     ID varchar(20),
     name varchar(20) not null,
     dept_name varchar(20) not null,
     salary int,
     primary key(ID)
     foreign key(name) references temp
    );
     

create table扩展:create table temp like instructor

create table temp as select * from instructor with data

2.修改数据库:insert,delete,drop,update,alter

往instructor关系中插入:insert into instructor values (10010,'smith','biology',1000);

把在instructor中满足谓词P的元组插入到instructor:insert into instructor select * from instructor where P

delete from instructor:删除所有元组但保留模式;

delete from instructor where P删除所有满足谓词P的元组 

update instructor set salary=salary*1.05 where P:满足谓词P的所有员工工资涨%5 

case语句:update instructor set salary= case when salary<10000 then salary*1.05 else salary*1.03 end

标量子查询可用于set子句

drop table instructor:删除关系instructor

alter table instructor add A D:增加属性A,域为D

alter table instrucotr drop A:删除属性A

3.查询语句

单关系:select * from instuctor where P ;

多关系:select * from instructor, teaches where P;

连接:

natural join=natural inner join:自然连接

连接类型
inner join
left outer join
right outer join
full outer join
 
连接条件
natural
on P
using(A1,A2...)
注意:studnet natural join takes与studnet join takes on student.ID=takes.ID不同之处在于,左边只有一个ID,而右边有两个ID.
on与where区别:select * from student left outer join takes on studnet.ID=takes.ID与 select * from student left outer join takes on true where studnet.ID=takes.ID。student left outer join takes on true实际是student 与takes的笛卡尔积。

as更名操作,用于select和from中,old name as new name

字符串操作:%匹配多个字符,包括空串

                      _匹配一个字符

where s like '%uu%':匹配包含uu的字符串

escape '/'消除转义。

元组显示顺序:order by name asc(升序)dec(降序)

集合运算:union并,intersect交,except差 自动去重

说明:except all若在A中出现4个元组1,B中出现2个元组1,则结果为2个元组1.

空值:空值运算为空值,空值比较为unknown

找出空值 is null/is not null 元组中null=null为真,谓词中null=null为unknown

聚集函数:avg,max,min,count,sum

只有count(*)才计算空值元组

分组聚集:group by,要保证select中出现的属性均在group by中,聚集函数除外

having子句:作用在分组上,where子句作用在整个关系上。 

嵌套子查询:(以后补档)

1.where中的嵌套子查询

(1) in/not in

  (2)    some/all

  (3)    exists/not exists

  (4)    unique/not unique

2.from中的嵌套子查询

3.with命名 

with temp as select * from instructor

4.标量子查询

返回单个属性的单个元组是标量子查询

4.视图

1.什么是视图:不是逻辑模型的一部分,但作为虚关系对用户可见的关系。

        create view temp as select * from instructor:创建temp的视图。

        select * from temp:视图查询

2.什么是物化视图:存储视图关系,但是用于定义视图的实际关系改变,视图也随着改变。

3.允许视图更新条件:

(1)from子句只有一个关系

(2)select子句中只包含属性

(3)任何没有出现select子句中的属性可以取空值;即这些属性没有not null约束,也不构成主码一部分。

(4)查询不包含group by和having

4.完整性约束

not null,unique,check

5.参照完整性

5.授权

1.用户自定义类型 create type dollars as numeric(12,2) final;

create domain dollars as numeric(12,2) not null;

type与domain区别:domain可以声明约束,domain不是强类型。

2.索引,需要额外存储空间,可以避免访问整个元组,查找更方便。

3.授权: grant <权限> on <关系/视图> to <用户> with grant option(表示允许授权)

收回权限: revoke <权限> on <关系/视图> from <用户>  restrict(取消级联收回)/cascade(级联收回)

角色授权

视图授权

模式授权

6.函数

7.触发器 

  • 17
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值