1. 用户管理
用户表 user
存在初始数据库 mysql
中:
1 | show databases; |
- 查看所有用户
1 | select user, host, authentication_string fom mysql.user; |
- 创建用户
1 | CREATE USER 'auser'@'%' IDENTIFIED WITH mysql_native_password BY '123456'; |
1 | % - 无限制,不填默认 |
- 修改用户名
1 | rename buser to cuser; |
- 删除用户
1 | drop user cuser; |
- 修改密码
1 | ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456'; |
- 查看用户权限
1 | show grants for buser; |
- 赋予权限
dmc_db数据库的select: grant select on dmc_db.* to buser;
所有权限: GRANT ALL PRIVILEGES ON *.* TO 'buser'@'%';
基本权限: GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP,ALTER ON *.* TO 'buser'@'%';
1 | select, insert, update, delete, create, alter, drop, references, index, show view, create view, create routine, alter routine, execute, all, lock tables, process, reload, replication client, replication slave, show databases, shutdown, super, usage |
- 回收权限
1 | revoke select on dmc_db.* from buser; |
- 更新权限
1 | flush privileges; |
2. select、关联查询、子查询、联合查询、查询排序、分组查询、条件查询
常量查询:
1 | select 1; |
- 服务器版本:
select version()
- 当前数据库:
select database()
- 当前用户名:
select user()
- 服务器状态:
show status
- 服务器配置变量:
show variables
- 第一个字符的ASCII码:select
ascii('a')
- 字符串字数:
select char_length('abc');select character_length('abc')
- 字符串合并:
select concat('ab','cd','ef',...);select concat_ws(',','a','b',...)
- 第一个字符串的位置:
select field('d','a','b','c','d','e')
- 格式化数字:
select format(123456.789, 2)
- 字符串替换:
select insert(s1, index, len, s2)
- 字符串位置获取:
select locate('st', 'myteststring')
- 转为小写:
select lcase('ABCDEFG');select lower('ABCDE')
- 前n个字符:
select left('abcdefg', 2)
- 字符左填充:
select lpad('abc', 10, 'x')
- 去除开始空格:
select ltrim(' abc')
- 字符串截取:
select mid('abcdefg', 3, 2);select substr(s, start, length);select substring(s, start, length)
- 字符串重复:
select repeat('abc',5)
- 顺序取反:
select reverse('abcdefg')
- 后n个字符:
select right('abcdefg',5)
- 字符右填充:
select rpad('abc', 10, 'z')
- 去除结尾空格:
select rtrim('abc ')
- 取n个空格:
select space(n)
- 字符串比较:
select strcmp('a','b')
- 字符检索:
select substring_index('a*b', '*', 1);select substring_index(substring_index('a*b*c*d*e','*',3), '*', -1)
- 去除开始结尾空格:
select trim(s)
- 转为大写:
select ucase(s);select upper(s)
- 绝对值:
abs(x)
- 反余:
acos(x)
- 反正弦:
asin(x)
- 反正切:
atan(x)、atan2(n, m)
- 平均值:
avg(expression)
- 最小整数:
ceil(x)、ceiling(x)
- 余弦:
cos(x)
- 余切:
cot(x)
- 总数:
count(expression)
- 弧度转角度:
degrees(x)
- 整除:
n DIV m
- e的x次方:
exp(x)
- 最大整数:
floor(x)
- 列表最大值:
greatest(expr1, expr2, expr3, ...)
- 列表最小值:
least(expr1, expr2, expr3,...)
- 自然对数:
ln(x)、log(x)、log10(x)、log10(x)、log2(x)
- 最大值:
max(expression)
- 最小值:
min(expression)
- 余数:
mod(x, y)
- 圆周率:
PI()
- x的y次方:
pow(x, y)、power(x, y)
- 角度转弧度:
radians(x),
- 0到1随机数:
rand()
- 离x最近的整数:
round(x)
- x的符号:
sign(x),
- 正弦:
sin(x)
- 平方根:
sqrt(x)
- 总和:
sum(expression)
- 正切:
tan(x)
- 小数四舍五入:
truncate(x, y
1 | adddate(d, n) 日期d加上n天 select adddate('2019-10-10', interval 10 day); |
1 | case expression when condition1 then result1 when condition2 then result2 ... when conditionN then resultN else result end |
1 | -- 单表查询: |
1 | ^ - 开始匹配 |
条件:
1 | = :等于 |
3. insert、批量插入、表插入
1 | INSERT IGNORE INTO |
4. update
1 | update table set column1=value1; |
5. delete
一般删除:
1 | delete from table; |
全表彻底删除,相当于删除表,再重新创建表:
1 | truncate table table; |
6. create
创建数据库:
1 | create database 数据库名称; |
只有数据库不存在才创建数据库:
1 | create database 数据库名称 if not exists; |
使用数据库:
1 | use 数据库名称; |
创建表:
1 | create table 表名(字段名称 字段类型); |
7. drop
1 | -- 删除数据库: |
8. alter
1 | -- 删除表字段: |
9. 变量
10. 索引index
创建索引:
1 | create index 索引名称 on 数据表(字段名称); |
创建表时指定:
1 | create table table( |
1 | -- 删除索引: |
11. 函数function
12. 存储过程PROCEDURE
1 | CREATE PROCEDURE demo_in_parameter(IN p_in int); |
如:
1 | mysql> delimiter $$ |
13. 事务
ACID:原子性、一致性、隔离性、持久性
普通事务:
1 | begin 或 start transaction; |
1 | -- 回滚事务: |
14. 临时表、复制表
临时表只有当前连接可见,关闭连接临时表自动销毁;
创建临时表:
1 | create temporary table tableName( |
复制表:
1 | create table 新表 like 源表; |
或
1 | show create table tableName \G; |
复制表数据: insert into 新表(字段1, 字段2, …) select 字段1, 字段2, … from 源表;
15. 游标
打开游标:
1 | open cursor_name; |
关闭游标:
1 | close cursor_name; |
1 | DELIMITER $$ |
DELIMITER ;
16. 导入导出
导出txt文件:
1 | select * from test into outfile '#:/1.txt'; |
导出dump:
1 | mysqldump -u root -p --no-create-info --tab=/tmp 数据库名 表名(可选) |
导入:
1 | mysql -u root -p 数据库名 < dump.txt |
17. 表分区
18. 主从复制
19. 显示当前时区
1 | show variables like '%time_zone%'; |
设置为 +8:00
时区
1 | set global time_zone='+8:00'; |