前言
DML数据操纵语言(INSERT, UPDATE, DELETE)
DDL数据定义语言(CREATE TABLE, VIEW, INDEX, )
DQL数据查询语言(SELECT)
DCL数据控制语言(GRANT, ROLLBACK, COMMIT)🖊
DML数据操纵语言(INSERT, UPDATE, DELETE)
DDL数据定义语言(CREATE TABLE, VIEW, INDEX, )
DQL数据查询语言(SELECT)
DCL数据控制语言(GRANT, ROLLBACK, COMMIT)
一、创建和使用数据库
1 | CREATE DATABASE test; |
二、创建表
1 | CREATE TABLE table ( |
三、修改表
Alter, Drop
添加列
1 | ALTER TABLE table |
删除列
1 | ALTER TABLE table |
删除表
1 | DROP TABLE table; |
四、插入行
插入
1 | INSERT INTO table(col1, col2) VALUES (val1, val2); |
插入检索出来的数据
1 | INSERT INTO table(col1, col2) |
将一个表中的内容插入到新表
1 | CREATE TABLE newtable AS |
插入时若已经存在主键冲突则忽略插入
1 | INSERT IGNORE INTO table(col...) values (...); |
六、更新
1 | UPDATE table |
七、删除
1 | DELETE FROM table |
八、查询
DISTINCT
重复行只出现一次。作用于所有列,也就是说所有列的值都相同才算重复
1 | SELECT DISTINCT col1, col2 |
LIMIT
分页。限制返回的行数。可以有两个参数,第一个参数为:起始行,从0开始;第二个参数为返回的行数。
返回前5行
1 | SELECT col1, col2 |
1 | SELECT col1, col2 |
返回3~5行
1 | SELECT col1, col2 |
八、排序
- ASC:升序(默认)
- DESC:降序
可以按多个列排序,而且可以给每个列指定不同的排序方式
1 | SELECT col1, col2 |
九、用where过滤
WHERE子句可用的操作符
操作符 | 说明 |
---|---|
= | 等于 |
< | 小于 |
> | 大于 |
<> != | 不等于 |
<= !> | 小于等于 |
>= !< | 大于等于 |
BETWEEN | 在两个值之间 |
IS NULL | 为 NULL 值 |
- 注意:NULL和0和空字符串””都不一样!区分!
WHERE子句的连接符
连接符 | 说明 |
---|---|
AND | 与,连接过滤条件。与比或优先 |
OR | 或,连接过滤条件 |
IN | 匹配值,后面可以接SELECT子句,匹配查询到的一组值 |
NOT | 否定一个条件 |
col LIKE xx | 检查col匹配通配符xx |
通配符
- % 匹配 >=0 的任意字符串
- _ 匹配 1 个字符
- [ ] 匹配集合内的字符,例如 [ab] 匹配字符 a 或者 b。
- ^ 否定,配合 [ ] 使用,表示不匹配集合内的字符,如 [^ab]
使用 LIKE 来进行通配符匹配
1 | SELECT col1, col2 |
- 注意:通配符位于开头处匹配会非常慢!不要滥用!
十、计算字段
十一、函数
十二、分组
十三、子查询
十四、连接
十五、组合查询
十六、视图
十七、存储过程
十八、游标
十九、触发器
二十、事务管理
基本术语:
- 事务(transaction)指一组 SQL 语句;
- 回退(rollback)指撤销指定 SQL 语句的过程;
- 提交(commit)指将未存储的 SQL 语句结果写入数据库表;
- 保留点(savepoint)指事务处理中设置的临时占位符(placeholder),你可以对它发布回退(与回退整个事务处理不同)。
不能回退 SELECT 语句,回退 SELECT 语句也没意义;也不能回退 CREATE 和 DROP 语句。
MySQL 的事务提交默认是隐式提交,每执行一条语句就把这条语句当成一个事务然后进行提交。当出现 START TRANSACTION 语句时,会关闭隐式提交;当 COMMIT 或 ROLLBACK 语句执行后,事务会自动关闭,重新恢复隐式提交。
通过设置 autocommit 为 0 可以取消自动提交;autocommit 标记是针对每个连接而不是针对服务器的。
如果没有设置保留点,ROLLBACK 会回退到 START TRANSACTION 语句处;如果设置了保留点,并且在 ROLLBACK 中指定该保留点,则会回退到该保留点。
1 | START TRANSACTION |
二十一、字符集
二十二、权限管理
- Mysql的账户信息存在mysql这个数据库中
1 | USE mysql; |
创建账户
新创建的账户没有任何权限
1 | CREATE USER myuser Identified By 'password'; |
删除账户
1 | DROP USER myuser; |
授予权限Grant
账户用 username@host 的形式定义,username@% 使用的是默认主机名。
1 | GRANT SELECT, INSERT ON mydatabase.* TO myuser |
删除权限Revoke
GRANT 和 REVOKE 可在几个层次上控制访问权限:
- 整个服务器,使用 GRANT ALL 和 REVOKE ALL;
- 整个数据库,使用 ON database.*;
- 特定的表,使用 ON database.table;
- 特定的列;
- 特定的存储过程。
1 | REVOKE SELECT, INSERT ON mydatabase.* FROM myuser; |
查看权限
1 | SHOW GRANTS FOR myuser; |
修改密码
使用 Password() 函数
1 | SET PASSWORD FOR myuser = Password('new_password'); |
修改账户名
1 | RENAME myuser TO newuser; |