数据的CRUD操作

CRUD操作:
  create 创建
  read 读取
  update 修改
  delete 删除

1、添加数据
insert into Info values('p009','张三',1,'n001','2016-8-30');
给特定的列添加数据
insert into Info (code,name) values('p009','张三');
自增长列的处理
insert into family values('','p001','数据','t001','数据',1);

2、删除数据
删除所有数据
delete from family
删除特定数据
delete from info where code='p001'

3、修改数据
修改所有
update info set name=''
修改特定数据
update info set name='' where code='p002'
修改多列
update info set name='',sex=1 where code='p002'

4、读取数据
(1)简单读取,查询所有列(*)所有行(没有加条件)
select * from info
(2)读取特定列
select code,name from info
(3)条件查询
select * from info where code='p003'
(4)多条件查询
select * from info where code='p003' or nation='n002' #或
select * from info where sex=0 and nation='n002' #与
(5)关键字查询(模糊查询)
查所有包含奥迪的汽车
select * from car where name like '%奥迪%'; # %百分号代表任意多个字符
查以'皇冠'开头的所有汽车
select * from car where name like '奥迪%';
查询汽车名称中第二个字符是'马'的
select * from car where name like '_马'; # _下划线代表任意一个字符
(6)排序查询
select * from car order by powers #默认升序排列
select * from car order by powers desc #升序 asc 降序desc
先按brand 升序排 再按price降序排
select * from car order by brand,price desc


(7)范围查询
select * from car where price>40 and price<60
select * from car where price between 40 and 60

(8)离散查询
select * from car where price=30 or price=40 or price=50 or price=60;
select * from car where price in(30,40,50,60)
select * from car where price not in(30,40,50,60)

(9)聚合函数(统计查询)
select count(*) from car
select count(code) from car #取所有的数据条数
select sum(price) from car #求价格总和
select avg(price) from car #求价格的平均值
select max(price) from car #求最大值
select min(price) from car #求最小值

(10)分页查询
select * from car limit 0,10 #分页查询,跳过几条数据(0)取几条(10)
规定一个每页显示的条数:m
当前页数:n
select * from car limit (n-1)*m,m

(11)去重查询
select distinct brand from car

(12)分组查询
查询汽车表中,每个系列下汽车的数量
select brand,count(*) from car group by brand
分组之后,只能查询该列或聚合函数

取该系列价格平均值大于40的系列代号
select brand from car group by brand having avg(price)>40

取该系列油耗最大值大于8的系列代号
select brand from car group by brand having max(oil)>8

高级查询:
1.连接查询
select * from info,nation
形成笛卡儿积
select * from info,nation where info.nation=nation.code
select info.code,info.name,info.sex,nation.name as 'nation',info.birthday from info,nation where info.nation=nation.code

select * from info join nation on info.nation=nation.code

2.联合查询
select code,name from info
union
select code,name from nation

3.子查询
子查询查询的结果作为父查询的条件
(1)无关子查询:子查询执行的时候和父查询没有关系
查民族为汉族的所有学生信息
select * from info where nation=(select code from nation where name='汉族')
查询生产厂商为‘一汽大众’的所有汽车信息
select * from car where brand in(select brand_code from brand where prod_code=(select prod_code from productor where prod_name='一汽大众'))

(2)相关子查询
子查询再执行的时候需要用到父查询的内容

查询汽车表中,汽车油耗小于该系列平均油耗的所有汽车信息
select * from car where oil<(该系列平均油耗)
select avg(oil) from car where brand =(该系列)


select * from car a where oil<(select avg(oil) from car b where b.brand =a.brand)

原文地址:https://www.cnblogs.com/The-second/p/5966753.html