1. SQL 语句分类
- DDL 数据定义语言 操作数据库,表
- DML 数据操纵语言 如:对表中的记录进行增删改
- DQL 数据查询语言 如:对表中的查询操作
- DCL 数据控制语言 如:对用户权限的设置
1) DDL
- 操作数据库
增加:create database if not exists db1;
删除:drop database db1;
修改:alter database db1 character set utf8;
查询:show database db1;
show create database db1;
使用:use 数据库名称;
select database(); - 操作数据表
增加:CREATE TABLE 表名 (
字段名 1 字段类型 1,
字段名 2 字段类型 2
);
删除: drop table if exists table1;
修改: ALTER TABLE 表名 CHANGE 旧列名 新列名 类型;
ALTER TABLE 表名 MODIFY 列名 新的类型;
删除列: ALTER TABLE 表名 DROP 列名;
查询: show tables;
复制表:CREATE TABLE 新表名 LIKE 旧表名;
2) DML
增加:INSERT INTO 表名(字段名 1, 字段名 2, …) VALUES (值 1, 值 2, …);
删除:DELETE FROM 表名 WHERE 字段名=值;
TRUNCATE TABLE 表名;
修改:UPDATE 表名 SET 字段名=值;
UPDATE 表名 SET 字段名=值 WHERE 字段名=值;
3) DQL
SELECT字段列表 FROM 表名列表 WHERE 条件列表 GROUP BY 分组字段 HAVING 分组之后的条件 ORDR BY 排序 LIMIT 分页限定
1.去重:DISTINCT
2.有NULL参与的运算,结果均为NULL,可以用IFNULL
3.模糊查询 LIKE 占位符:_ : 单个字符 %:多个字符
4.聚合函数:将一列数据作为一个整体,进行纵向计算
count max min avg sum
聚合函数的计算排除null值:用ifnull 或者 选择不包含非空的列进行计算:主键
5.分组查询:分组之后的查询的字段
where和having的区别:where是在分组之前进行筛选,不满足条件,不进行分组;having是在分组之后进行筛选
6.分页查询:
limit 开始的索引,每页查询的条数
**开始的索引=(当前的页码-1)*每页显示的条数
4) DCL
增加用户:CREATE USER ‘用户名’@‘主机名’ IDENTIFIED BY ‘密码’;
删除用户:DROP USER ‘用户名’@‘主机名’;
修改用户密码:set password for ‘用户名’@‘主机名’ = password(‘新密码’);
update user set password = password(‘新密码’) where user = ‘用户名’;
查询用户权限:
show grants for ‘用户名’@‘主机名’;
授予用户权限:
grant 权限列表 on 数据库名.表名 to ‘用户名’@‘主机名’;
grant create,alter,insert,update,select on test.* to ‘user1’@‘localhost’;
grant all on *.* to ‘user2’@’%’;
撤销权限:
revoke 权限列表 on 数据库名.表名 from ‘用户名’@‘主机名’;