
1.注释语法:--,#
2.后缀是.sql的文件是数据库查询文件
3.保存查询
4.在数据库里面 列有个名字叫字段 行有个名字叫记录
5.一条数据即为表的一行
CRUD操作:
create 创建(添加)
read 读取
update 修改
delete 删除
1、添加数据
insert into Info values('p009','张三',1,'n001','2016-8-30 12:9:8') ;
给特定的列添加数据
insert into Info (code,name) values('p010','李四');
自增长列的处理
insert into family values('','p001','数据','T001','数据',1);
insert into 表名 values(值)
2、删除数据
删除所有数据
delete from family
删除特定的数据
delete from Info where code='p001'
delete from 表名 where 条件
3、修改数据
在mysql里面给sql语句某个列的值加1:
如图:
实现的sql语句: update table set de_name = de_name+1 where id =1;
修改所有数据
update Info set name='123'
修改特定数据
update Info set name='321' where code='p002' #把列中code=p002的项中的名字name改为321;
修改多列
update Info set name='321',sex=1 where code='p003' #把列中code=p003的项中的名字name改为321且sex改为1;
update 表名 set 要修改的内容 where 条件
4、读取数据
(1)简单读取,查询所有列(*) 所有行(没有加条件)
select * from Info
(2)读取特定列
select code,name from Info
(3)条件查询
select * from Info where code='p003'
(4)多条件查询 or ; and
select * from Info where code='p003' or nation='n002' # or是或的关系
select * from Info where sex=0 and nation='n002' #and是与的关系
(5)关键字查询(模糊查询) like 以下price是(价格);表名是car;
查所有包含奥迪的汽车
select * from 表名 where name like '%奥迪%'; #百分号%代表任意多个字符
查以'皇冠'开头的所有汽车
select * from 表名 where name like '皇冠%';
查询汽车名称中第二个字符是'马'的
select * from 表名 where name like '_马%'; #下划线_代表任意一个字符
(6)排序查询 order by ; 降序 desc
select * from 表名 order by powers #默认升序排列
select * from 表名 order by powers desc #升序asc 降序 desc
先按brand升序排,再按照price降序排
select * from 表名 order by brand,price desc
(7)范围查询 and
1、select * from 表名 where 范围 ; 例如:price>40 and price<60
2、select * from 表名 where price between 40 and 60
(8)离散查询 or...or...or... ; in; not in
1、select * from 表名 where price=30 or price=40 or price=50 or price=60;
2、select * from 表名 where price in(30,40,50,60)
3、select * from 表名 where price not in(30,40,50,60)
(9)聚合函数(统计查询) count sum avg max min
select count(*) from 表名
select count(code) from 表名 #取所有的数据条数
select sum(price) from 表名 #求价格总和
select avg(price) from 表名 #求价格的平均值
select max(price) from 表名 #求最大值
select min(price) from 表名 #求最小值
(10)分页查询 limit x,y;
select * from 表名 limit 0,10 #分页查询,跳过几条数据(0)取几条(10)
规定一个每页显示的条数:m
当前页数:n
select * from 表名 limit (n-1)*m,m
(11)去重查询 distinct 对这列去重,适合于查一列
select distinct 列名 from 表名
(12)分组查询 group by...having(条件);给某列分组。。根据什么条件;条件可以使多个
查询汽车表中,每个系列下汽车的数量
select 条件 from 表名 group by 列名
分组之后,只能查询该列或聚合函数
取该系列价格平均值大于40的系列代号
select 列名 from 表名 group by 列名 having avg(price)>40
取该系列油耗最大值大于8的系列代号
select 列名 from 表名 group by 列名 having max(oil)>8
高级查询: Info为表1 Nation为表2
1、连接查询 a.Nation.name as '民族':可以在表中通过 as 把 name改为‘民族’,name为列名 #查出的数列 ,‘列叠加’
b.join...on...
select * from Info,Nation
形成笛卡尔积
select * from Info,Nation where Info.nation=Nation.code
select Info.code,Info.name,Info.sex,Nation.name as '民族',Info.birthday from Info,Nation where Info.nation=Nation.code
select 条件 from Info join Nation on Info.nation=Nation.code
2.联合查询 union
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=()
select brand_code from brand where prod_code=()
select prod_code from productor where prod_name='一汽大众'
select * from car where brand in(select brand_code from brand where prod_code=(select prod_code from productor where prod_name='一汽大众'))
#确定的值用 '='; 不确定右多少数据的值的时候用 'in'
(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)