用户
1.创建用户:create user ‘用户名’@‘主机名’ identified by ‘密码’;
2.授权用户的权限:GRANT 权限1,权限2…..ON 数据库名,表名 TO ‘用户名’@‘表名’’;
3.撤销权限:REVOKE 权限1,权限2 ON 数据库.表名 FROM ‘用户名’@‘主机名’;
4.查看权限:SHOW GRANT FOR ‘用户名’@’主机名’;
5.删除用户:DROP user ‘用户名’@’主机名’;
6.修改密码:修改管理员密码:mysqladmin -u root -p password
修改普通用户密码:set password for ‘用户名‘@’主机名‘;
数据库
- 创建数据库:CREATE DATABASE [ IF NOT EXISTS ] db_name;
- 使用数据库:USE db_name;
- 删除数据库:DROP DATABASE db_name;
- 显示所有数据库:SHOW DATABASES;
数据表
- 创建数据表中的结构:CREATE TABLE tab_name(col_name datatype default null/number comment '注释',…);
- 显示所有表:SHOW tables;
- 查看表:DESC tables;
- 创建和某结构一样的表:CREATE TABLE table LIKE 某table;
- 创建表:CREATE TABLE t AS select * from table;
- 删除表:DROP TABLE table_name;
- 重命名表:RENAME TABLE 列名 TO 新列名;
- 添加表的列:ALTER TABLE 表名 ADD id 类型;
- 修改表的列属性:ALTER TABLE 表名 MODIFY id(列名)类型;
- 修改表的列名称:ALTER TABLE 表名 CHANGE id(列名)ss(新列名) 类型;
- 删除表的列:ALTER TABLE 表名 DROP 列名;
- 备份表结构:mysqldump -u root -p -d 数据库名 table1 table2 ... > d://a.sql(路径)
- 备份数据库的所有表结构:mysqldump -u root -p -d 数据库名 > d://a.sql(路径)
- 备份多个数据库的所有表结构:mysqldump -u root -p -d DATABASES db1 db2 ... > d://a.sql(路径)
- 备份所有数据库的表结构: mysqldump -u root -p -d –all-databases> d://a.sql(路径)
记录(数据)
- 添加数据:INSERT INTO 表名(字段名) VALUES (值,值,值,);
- 查询数据:查询所有数据:SELECT * FROM 表名;
查询某列数据:SELECT L 列名 FROM 表名;
根据条件查询:SELECT 列名(条件) FROM 表名 WHERE 条件;
- 修改数据:UPDATE 表名 SET deptno=6;
根据条件修改:UPDATE 表名 SET deptno=n WHERE 条件;
- 删除数据:全部删除:DELETE FROM 表名
删除指定数据:DELETE FROM 表名 WHERE 条件;
- 备份数据:(相当于在备份结构的语法上去掉-d选项) d 就是date
- 还原表结构和数据:mysql -u root -p [dbname] < 目标文件
高级查询
1. distinct
在`select`语句中,可以使用`distinct`关键字对查询的结果集进行去重。
select distinct 列1, ... , 列n from table_name [其他子句];
去重必须结果集中每个列的值都相同
2. order by
order by用于对结果进行排序显示,可以使用ASC / DESC两种方式进行排序,可以有多个排序条件
ASC:表示升序排序,如果不写即为此排序方式
DESC:表示降序排序
select [distinct] 列1, ... , 列n from table_name [其他子句] order by 排序列1 [DESC], 排序列2 [DESC];
3.分页查询limit子句
select * from emp limit 0,2;
select * from table_name limit (页码 - 1) * 每页数量, 每页数量;
第一个参数0是表示从第几条开始查询 (这里的 0 是可以省略不写的);
第二个参数 表示查询出几条数据
后面不够的,有多少写多少
4.聚合函数:
5.group by:
`group by ` 是对数据进行分组,分组时,表中有相同值的分为一组。分组后可以进行聚合查询。
`group by`分组后的查询中,`select`的列不能出现除了`group by `分组条件以及聚合函数外的其他列。
select 列1, 列2, (聚合函数) from table_name group by 列1, 列2;
6.having:
having
是对group by
分组后的结果集进行筛选。
select 列1, 列2, (聚合函数) from table_name group by 列1, 列2 having 分组后条件;
- 综合查询
SELECT DISTINCT emp.deptno FROM emp JOIN dept ON emp.deptno = dept.deptno WHERE bridate >= '2000-01-01' GROUP BY emp.deptno HAVING count(*) >= 2 ORDER BY count(*) DESC LIMIT 0, 5;
书写顺序是以上。
SQL语句的执行顺序
from --> on --> join --> where --> group by --> having --> select --> distinct-- > order by--> limit