库级操作
创库:create database dbname;
删库:drop database dbname;
展示库:show databases;
表级操作
数据定义
创表:1.create table tname
( fieldname1 char(50) unique primary key 只有一个主键时可以写后面
fieldname2 int not null references tname2 fieldname ) ; 外键可写后面也可写最后
2.create table tname
( fieldname1 char(50) unique
fieldname2 int not null
primary key (fieldname1 , fieldname2),
foreign key fieldname references tname2 fieldname);
3.create table tname 子查询;(将子查询创建一个表)
删表:drop table tname;
展示表:show tables;
检查表结构:desc tname;
表结构修改(alter)
添加:alter table tname add column fieldname newdatatype;
删除字段:alter table tname drop column fieldname;
删除字段约束:alter table tname drop constraint (fieldname);
修改字段约束:alter table tname alter column fieldname newdatatype;
修改字段名及约束:alter table tname change fieldname newfieldname newdatatype;
数据操纵
查询(select)
通用语法:
select [all/distinct] 目标列表达式 from tname/viewname
where 条件表达式
group by fieldname1
having 条件表达式
order by fieldname2 [asc/desc] ;
优先级:
on:关联条件
where:行级过滤
having:分组过滤
取新名:select fieldname1 ,fieldname2 as newfieldname2 from tname;
谓词:
in/not in (值表)
fieldname [not] like ‘匹配串’ [escape’/’]
% 通配任意字符
_ 通配单个字符
eg:‘hzh/_’ escape ‘/’ _是普通字符,/是转义字符
like/= , not like/!=/<>
配合orderby :
升序:asc
降序:desc
top n(top 和distinct 不可同用)
top n percent
1.limit 3 (取前三个数据)
2.limit 0 , 3 (0是指偏移位置,3指取哪几个数据)
聚集函数:
count([distinct/all] fieldname / *) 计数
sum 求和
avg 求平均值
max
min
连接查询:
内连接(inner join)>等值连接:select fieldname1 ,fieldname2 from tname1,tname2
where tname1.fieldname1 =tname2. fieldname2 (通过主键等值连接)
ps:去重后的称为自然连接
自身连接(取别名)
eg:select c1.cno,c2.cpno from c as c1,c as c2 where c1.cpno = c2.cno ;
外连接(outer)
eg:select s.sno,sage,sname… from s left / right join sc on s.sno=sc.sno;
左外连接 left join 以左表为基准
右外连接 right join 以右表为基准
集合查询:
标准SOL支持:
并 union <查询块> union <查询块>
商用SQL支持:
并 union
交 intersect
差 except
嵌套查询:
存在量词:exists(内层查询结果非空返真
内层查询结果为空返假 )
不存在: not exists(与exists 相反)
eg: 查询选修了所有课程的学生姓名:
select sname from s where not exists
( select * from c where not exists
(select * from sc where s.sno=sc.sno and c.cno=sc.cno));
增删改:
增
1.insert into tname [(fieldname1 ,fieldname2 ,…)];
2.insert into tname as newtname 子查询;(将子查询插入原表并改表名)
values (常量1,常量2,…);
删
delete from tname where (conditionexpression);
改
update tname set fieldname = expression where condtionexpression;