数据查询语言(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