数据查询语言(DQL)
基础查询:select * from star;
指定字段查询:select name ,money province from star;
删除重复记录:select distinct province, sex from star;
使用distinct指定的字段不能重复,指定多个字段时,字段组合不能重复.
指定条件查询:
| 条件 | 属性 |
| > | 大于 |
| >= | 大于等于 |
| < | 小于 |
| <= | 小于等于 |
| = | 等于 |
| !=或<> | 不等于 |
| and | 并且 |
| or |
或者 |
| [not]between m and n | [不]在区间[m,n]之间 |
| [not]in() | [不]在指定集合中 |
| [not]like 条件 | 模糊匹配,%表示任意字符 |
示例:
select * from star where age > 30;
select * from star where age > 30 and sex = 1;
select * from star where age > 30 or province='河南';
select * from star where age [not] between 30 and 40;
select * from star where id [not] in(1,3,5);
select * from star where province like '%北%';
结果集排序:
示例:
select * from star group by age asc;
select * from star group by money desc;
order by:指定排序字段
asc:升序,默认方式
desc:降序
多字段排序:当前面的字段值一样时,按照后面指定的字段进行排序.
select * from star order by sex asc,age desc;
限制结果集:
limit:用于限制结果集的数量
示例:
select * from star limit 5; 取前五条数据;
select * from star limit 5 offset 2;偏移两条,取五条数据;
select * from star limit 2,5 效果同上
分页查询
每页10条数据,用pageSize,page是当前页面页码,以下为对页码的查询条件
第一页:limit 10
第二页:limit 10,10
第三页:limit 20,10
page页:limit (page-1) * pageSize,pageSize
常用聚合函数
| 函数 | 说明 |
| count | 统计个数 |
| sum | 求和 |
| avg | 平均值 |
| max | 最大值 |
| min | 最小值 |
示例:
select count(*) as c from star;
select max(money) as max_money,name from star;
as可以给查询字段起别名,也可以给查询的表起别名,可以省略,但一般不要省略,易导致阅读出错.
分组及过滤:
示例:
select * from star group by sex; 只分组,结果集中只有每组的一条数据.
select count(*) as c,sex from star group by sex; 分组并统计每组的数量信息
select count(*) as c,province from star group by province having c>1;
分组后条件不能使用where,只能使用having
多表联合查询
隐式内连接:没有出现join关键字
示例:select username,name from user as u,goods as g where u.gid=g.gid;
说明:查看每个用户(购买商品的用户)分别购买了什么商品
显式内连接:SQL语句中出现了join关键字
示例:select username,name from user as u join goods as g on u.gid=g.gid;
说明:功能如上.
join前可以添加inner或cross关键字,可以省略.
左外连接:以左表为主,left [outer]
示例:select username,name from user as u left [outer] goods as g on u.gid=g.gid;
说明: 显示左表所有数据,右表有就显示,没有显示NULL.
右外连接:以右表为主,right [outer]
示例:select username,name from user as u right [outer] goods as g on u.gid=g.gid;
说明:显示右表所有数据,左表有就显示,没有显示NULL.
子(嵌套)查询:
select * from user where gid in (1,3,5);
select * from user where gid in(select gid from goods);
记录联合:
语法:select 语句1 union select 语句2
说明:
union all 将两次的查询结果直接拼接在一起
union:是union all的去重结果
示例:
select username,name from user as u left join goods as g on u.gid=g.gid union all select username,name from user as u right join goods as g on u.gid=g.gid;
select username,name from user as u left join goods as g on u.gid=g.gid union select username,name from user as u right join goods as g on u.gid=g.gid;
联合更新数据
示例:update user as u,goods as g set u.gid=0,g.price=price-200 where u.gid=g.gid and u.id=7;
说明:可以给操作的表起别名,也可以对字段的数值进行运算.
事务处理语言(DTL)
说明:测试的表的存储引擎要支持事物(innodb)
开启事务:禁止自动提交
set autocommit=0;
操作回滚:通常在出现操作异常时使用.
rollback;
提交事务:整个事物过程中没有问题.
commit;
数据控制语言(DCL):
查看授权:
格式:show grants [for 'user'@'host'];
示例:show grants for 'root'@'localhost';
说明:查看当前登录用户权限时可以不指定用户及主机
创建用户:
格式: create user 'user'@'host' identified by 'password';
示例:create user 'test'@'10.8.156.%' identified by '123456';
说明:%是通配符,任意的
用户授权:
格式:grant 权限 privileges on 库名.表名 to 'user'@'host' identified by 'password';
示例:grant all privileges on *.* to 'test'@'10.8.156.%' identified by '123456';
说明:权限可以是select ,insert,update,delete等,all代表所有权限,*表示所有
刷新权限:flush privileges;
取消授权:
格式:revoke 权限 privilege on 库名.表名 from 'user'@'host';
示例:revoke delete privilege on test.* from 'test'@'host';
说明:收回当前局域网内的test用户在test库下的所有删除权限
删除用户:
格式:drop user 'user'@'host';
示例:drop user 'test'@'10.8.156.%';
linux下远程登录:
bind-address=127.0.0.1 改为 bind-address=0.0.0.0
添加指定用户在主机的操作权限:
grant all privileges on *.* to 'root'@'%' identified by '123456';
备份和恢复
备份:
说明:就是将数据库中的数据(SQL语句)保存到一个文件中
示例:mysqldump -uroot -p test > test.sql
恢复:
说明:将保存SQL语句的文件解析,挨个执行其中的sql语句
示例:mysql -uroot -p test < test.sql
浙公网安备 33010602011771号