net start mysql   # 启动MySQL

mysql -h 地址 -p 端口 -u 用户名 -p 密码  # 连接服务器

mysqld  –skip-grant-tables  # 跳过权限验证登录MySQL

update mysql.user set password(\’admin\’) where user = \’root\’;   #修改root密码

show processlist  # 哪些线程正在运行, 就是当前运行的用户

show variables like \’%value%\’   # 查询对应的系统值

select database();  # 查看当前数据库

select now(), user(), version();  # 当前时间、用户、数据库版本

# 创建库

  create database [ if not exists ]  数据库名 数据库选项

  数据库选项: character SET CHARSET_name、COLLATE collation_name

show databases;  #查看已有库

show create database 数据库名;   # 查看当前库信息

alter database 库名 选项信息;  # 修改库的选项信息

drop database [ if exists ] 数据库名;   #删除库

# 创建表

create table [ if not exists ] 表名(

  字段名称 字段类型  [not null | null ] [ default value] [primary key | unique [key]]  [auto_increment]  [comment ‘字段描述’]

)engine = 存储引擎名称 DEFAULT CHARSET=utf8  ROW_FORMAT=DYNAMIC comment  \’表的备注信息\’ ;

show tables;  # 查看当前库中的所有表,前提进入库中

show tables from 库名;  # 查看库中有哪些表

show create table 表名;  # 查看创建表结构语句

DESC 表名 / DESCRIBE 表名 / EXPLAIN 表名 / SHOW COLUMNS FROM 表名;  # 查看表中的字段信息

SHOW TABLE STATUS [FROM db_name];  # 查看表信息,如存储引擎,字符编码等。

rename table 原表名 to 新表名;     # 表的重复名

alter table 旧表名 rename to 新表名;  #表的重复名

rename table 原表名 to  库名.表名;  # 将表移动到另一个数据库

// 添加修改字段结构

alter table 表名 add 列名  类型;  # 给表添加一列

alter table 表名 drop 列名;  # 删除列

alter table 表名 change 原列名 新列名 类型;  # 修改列的名称和类型

alter table 表名 modify 列类型;  # 修改列名的类型

alter table 表名 add constraint 主键名称  primary key(列名);  #设置主键

alter table 表名 drop primary key;  # 删除主键

alter table 子表名 add constraint 外键名称foreign key(子表列名) references 主表(主表列名);  #设置外键

alter table 子表 drop foreign key 外键名称;   # 删除外键

alter table 表名 add constraint 唯一索引名称 unique(列名);  #设置唯一索引

alter table 表名 add index 索引名称  (字段名称);  # 添加索引

alter table 表名 drop index 索引名称;  #删除索引

drop table [ if exists ] 表名 …;   #删除表

truncate table 表名;   #清空表数据。自增主键会清空从起始1开始

delete table 表名 [where 列名=条件];  #可全删或指定范围删除数据

create table 新表名 like 复制表名;  #复制表结构

create table 新表名 as select * from 要复制的表名;  #复制表结构和数据

insert into 表名(字段列表)  values(值列表),(值列表),(值列表)……;  # 添加数据

insert into 表名 set 字段名=值 [, 字段名=值 …];# 不常用的添加数据语句

insert ignore 表名(字段列表) values(值列表),…..;  #添加数据,如果已存在,忽略

replace into 表名(字段列表) values(值列表);  # 替换新增数据

replace into 表名 set 字段名=值 [, 字段名=值 …];# 不常用

select 字段列表 from 表名;  #查询

delete from 表名 [删除条件子句];  #删除

update 表名 set 字段名=新值 [, 字段名=新值] [更新条件] #修改数据

 

//DQL语句的顺序(单表)

select [ all|distinct ] select_ecpr from -> where -> group by [ 合计函数 ] -> having -> order by -> limit

select:查什么

from:哪个表

where:条件是?

group by:按什么分组

  1. group by 字段/别名

having:补充不足的条件

order by:排序  升序:ASC,降序:DESC

limit:分页

  1. limit 起始位置, 获取条数
  2. 省略第一个参数,表示从索引0开始。limit 获取条数

 

/* UNION*/

将多个select查询的结果组合成一个结果集合。

SELECT … UNION  SELECT …

需要各select查询的字段数量一样。

每个select查询的字段列表(数量、类型)应一致,因为结果中的字段名第一条select语句为准

/* 子查询 */

子查询需要括号包裹

  1. -- from
  2. from后要求是一个表,必须给子查询结果取个别名。
  3. - 简化每个查询内的条件。
  4. - from型需将结果生成一个临时表格,可用以原表的锁定的释放。
  5. - 子查询返回一个表,表型子查询。
  6. select * from (select * from tb where id>0) as subfrom where id>1;
  7. -- where
  8. - 子查询返回一个值,标量子查询。
  9. - 不需要给子查询取别名。
  10. - where子查询内的表,不能直接用以更新。
  11. select * from tb where money = (select max(money) from tb);
  12. -- 列子查询
  13. 如果子查询结果返回的是一列。
  14. 使用 in not in 完成查询
  15. exists not exists 条件
  16. 如果子查询返回数据,则返回10。常用于判断条件。
  17. select column1 from t1 where exists (select * from t2);
  18. -- 行子查询
  19. 查询条件是一个行。
  20. select * from t1 where (id, gender) in (select id, gender from t2);
  21. 行构造符:(col1, col2, ...) ROW(col1, col2, ...)
  22. 行构造符通常用于与对能返回两个或两个以上列的子查询进行比较。

说明:几个高级查询运算词

A: UNION 运算符

  UNION 运算符通过组合其他两个结果表(例如 TABLE1 和 TABLE2)并消去表中任何重复行而派生出一个结果表。当 ALL UNION 一起使用时(即 UNION ALL),不消除重复行。两种情况下,派生表的每一行不是来自 TABLE1 就是来自 TABLE2。

B: EXCEPT 运算符

  EXCEPT 运算符通过包括所有在 TABLE1 中但不在 TABLE2 中的行并消除所有重复行而派生出一个结果表。当 ALL EXCEPT 一起使用时 (EXCEPT ALL),不消除重复行。

C: INTERSECT 运算符

  INTERSECT 运算符通过只包括 TABLE1 和 TABLE2 中都有的行并消除所有重复行而派生出一个结果表。当 ALL INTERSECT 一起使用时 (INTERSECT ALL),不消除重复行。

注:使用运算词的几个查询结果行必须是一致的。
 

/* 连接查询(join) */

内连接:inner join  默认就是内连接,可省略inner。只有数据存在时才能发送连接。即连接结果不能出现空行。

外连接:outer join 如果数据不存在,也会出现在连接结果中

左外连接:left join 如果数据不存在,左表记录会出现,而右表为null填充

右外连接:right join 如果数据不存在,右表记录会出现,而左表为null填充

 

/* 备份与还原 */ ——————

备份,将数据的结构与表内数据保存起来。

利用 mysqldump 指令完成。

导出

1. 导出一张表   

mysqldump -u用户名 -p密码 库名 表名 > 文件名(D:/a.sql)

2. 导出多张表   

mysqldump -u用户名 -p密码 库名 表1 表2 表3 > 文件名(D:/a.sql)

3. 导出所有表   

mysqldump -u用户名 -p密码 库名 > 文件名(D:/a.sql)

4. 导出一个库   

mysqldump -u用户名 -p密码 -B 库名 > 文件名(D:/a.sql)

可以-w携带备份条件

— 导入

1. 在登录mysql的情况下: source 备份文件

2. 在不登录的情况下 :mysql -u用户名 -p密码 库名 < 备份文件


CREATE [OR REPLACE] [ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE}] VIEW view_name [(column_list)]

AS select_statement

  1. - 视图名必须唯一,同时不能与表重名。
  2. - 视图可以使用select语句查询到的列名,也可以自己指定相应的列名。
  3. - 可以指定视图执行的算法,通过ALGORITHM指定。
  4. - column_list如果存在,则数目必须等于SELECT语句检索的列数

  1.  
  1. -- 查看结构
  2. SHOW CREATE VIEW view_name
  3. -- 删除视图
  4. - 删除视图后,数据依然存在。
  5. - 可同时删除多个视图。
  6. DROP VIEW [IF EXISTS] view_name ...
  7. -- 修改视图结构
  8. - 一般不修改视图,因为不是所有的更新视图都会映射到表上。
  9. ALTER VIEW view_name [(column_list)] AS select_statement
  10. -- 视图作用
  11. 1. 简化业务逻辑
  12. 2. 对客户端隐藏真实的表结构
  13. -- 视图算法(ALGORITHM)
  14. MERGE 合并
  15. 将视图的查询语句,与外部查询需要先合并再执行!
  16. TEMPTABLE 临时表
  17. 将视图执行完毕后,形成临时表,再做外层查询!
  18. UNDEFINED 未定义(默认),指的是MySQL自主去选择相应的算法。
  19. /* 事务(transaction) */ ------------------
  20. 事务是指逻辑上的一组操作,组成这组操作的各个单元,要不全成功要不全失败。
  21. - 支持连续SQL的集体成功或集体撤销。
  22. - 事务是数据库在数据晚自习方面的一个功能。
  23. - 需要利用 InnoDB BDB 存储引擎,对自动提交的特性支持完成。
  24. - InnoDB被称为事务安全型引擎。
  25. -- 事务开启
  26. START TRANSACTION; 或者 BEGIN;
  27. 开启事务后,所有被执行的SQL语句均被认作当前事务内的SQL语句。
  28. -- 事务提交
  29. COMMIT;
  30. -- 事务回滚
  31. ROLLBACK;
  32. 如果部分操作发生问题,映射到事务开启前。
  33. -- 事务的特性
  34. 1. 原子性(Atomicity
  35. 事务是一个不可分割的工作单位,事务中的操作要么都发生,要么都不发生。
  36. 2. 一致性(Consistency
  37. 事务前后数据的完整性必须保持一致。
  38. - 事务开始和结束时,外部数据一致
  39. - 在整个事务过程中,操作是连续的
  40. 3. 隔离性(Isolation
  41. 多个用户并发访问数据库时,一个用户的事务不能被其它用户的事物所干扰,多个并发事务之间的数据要相互隔离。
  42. 4. 持久性(Durability
  43. 一个事务一旦被提交,它对数据库中的数据改变就是永久性的。
  44. -- 事务的实现
  45. 1. 要求是事务支持的表类型
  46. 2. 执行一组相关的操作前开启事务
  47. 3. 整组操作完成后,都成功,则提交;如果存在失败,选择回滚,则会回到事务开始的备份点。
  48. -- 事务的原理
  49. 利用InnoDB的自动提交(autocommit)特性完成。
  50. 普通的MySQL执行语句后,当前的数据提交操作均可被其他客户端可见。
  51. 而事务是暂时关闭“自动提交”机制,需要commit提交持久化数据操作。
  52. -- 注意
  53. 1. 数据定义语言(DDL)语句不能被回滚,比如创建或取消数据库的语句,和创建、取消或更改表或存储的子程序的语句。
  54. 2. 事务不能被嵌套
  55. -- 保存点
  56. SAVEPOINT 保存点名称 -- 设置一个事务保存点
  57. ROLLBACK TO SAVEPOINT 保存点名称 -- 回滚到保存点
  58. RELEASE SAVEPOINT 保存点名称 -- 删除保存点
  59. -- InnoDB自动提交特性设置
  60. SET autocommit = 0|1; 0表示关闭自动提交,1表示开启自动提交。
  61. - 如果关闭了,那普通操作的结果对其他客户端也不可见,需要commit提交后才能持久化数据操作。
  62. - 也可以关闭自动提交来开启事务。但与START TRANSACTION不同的是,
  63. SET autocommit是永久改变服务器的设置,直到下次再次修改该设置。(针对当前连接)
  64. START TRANSACTION记录开启前的状态,而一旦事务提交或回滚后就需要再次开启事务。(针对当前事务)
  65. /* 锁表 */
  66. 表锁定只用于防止其它客户端进行不正当地读取和写入
  67. MyISAM 支持表锁,InnoDB 支持行锁
  68. -- 锁定
  69. LOCK TABLES tbl_name [AS alias]
  70. -- 解锁
  71. UNLOCK TABLES
  72. /* 触发器 */ ------------------
  73. 触发程序是与表有关的命名数据库对象,当该表出现特定事件时,将激活该对象
  74. 监听:记录的增加、修改、删除。
  75. -- 创建触发器
  76. CREATE TRIGGER trigger_name trigger_time trigger_event ON tbl_name FOR EACH ROW trigger_stmt
  77. 参数:
  78. trigger_time是触发程序的动作时间。它可以是 before after,以指明触发程序是在激活它的语句之前或之后触发。
  79. trigger_event指明了激活触发程序的语句的类型
  80. INSERT:将新行插入表时激活触发程序
  81. UPDATE:更改某一行时激活触发程序
  82. DELETE:从表中删除某一行时激活触发程序
  83. tbl_name:监听的表,必须是永久性的表,不能将触发程序与TEMPORARY表或视图关联起来。
  84. trigger_stmt:当触发程序激活时执行的语句。执行多个语句,可使用BEGIN...END复合语句结构
  85. -- 删除
  86. DROP TRIGGER [schema_name.]trigger_name
  87. 可以使用oldnew代替旧的和新的数据
  88. 更新操作,更新前是old,更新后是new.
  89. 删除操作,只有old.
  90. 增加操作,只有new.
  91. -- 注意
  92. 1. 对于具有相同触发程序动作时间和事件的给定表,不能有两个触发程序。
  93. -- 分支语句
  94. if 条件 then
  95. 执行语句
  96. elseif 条件 then
  97. 执行语句
  98. else
  99. 执行语句
  100. end if;
  101. -- 修改最外层语句结束符
  102. delimiter 自定义结束符号
  103. SQL语句
  104. 自定义结束符号
  105. delimiter ; -- 修改回原来的分号
  106. -- 语句块包裹
  107. begin
  108. 语句块
  109. end
  110. -- 特殊的执行
  111. 1. 只要添加记录,就会触发程序。
  112. 2. Insert into on duplicate key update 语法会触发:
  113. 如果没有重复记录,会触发 before insert, after insert;
  114. 如果有重复记录并更新,会触发 before insert, before update, after update;
  115. 如果有重复记录但是没有发生更新,则触发 before insert, before update
  116. 3. Replace 语法 如果有记录,则执行 before insert, before delete, after delete, after insert
  117. /* SQL编程 */ ------------------
  118. --// 局部变量 ----------
  119. -- 变量声明
  120. declare var_name[,...] type [default value]
  121. 这个语句被用来声明局部变量。要给变量提供一个默认值,请包含一个default子句。值可以被指定为一个表达式,不需要为一个常数。如果没有default子句,初始值为null
  122. -- 赋值
  123. 使用 set select into 语句为变量赋值。
  124. - 注意:在函数内是可以使用全局变量(用户自定义的变量)
  125. --// 全局变量 ----------
  126. -- 定义、赋值
  127. set 语句可以定义并为变量赋值。
  128. set @var = value;
  129. 也可以使用select into语句为变量初始化并赋值。这样要求select语句只能返回一行,但是可以是多个字段,就意味着同时为多个变量进行赋值,变量的数量需要与查询的列数一致。
  130. 还可以把赋值语句看作一个表达式,通过select执行完成。此时为了避免=被当作关系运算符看待,使用:=代替。(set语句可以使用= :=)。
  131. select @var:=20;
  132. select @v1:=id, @v2=name from t1 limit 1;
  133. select * from tbl_name where @var:=30;
  134. select into 可以将表中查询获得的数据赋给变量。
  135. -| select max(height) into @max_height from tb;
  136. -- 自定义变量名
  137. 为了避免select语句中,用户自定义的变量与系统标识符(通常是字段名)冲突,用户自定义变量在变量名前使用@作为开始符号。
  138. @var=10;
  139. - 变量被定义后,在整个会话周期都有效(登录到退出)
  140. --// 控制结构 ----------
  141. -- if语句
  142. if search_condition then
  143. statement_list
  144. [elseif search_condition then
  145. statement_list]
  146. ...
  147. [else
  148. statement_list]
  149. end if;
  150. -- case语句
  151. CASE value WHEN [compare-value] THEN result
  152. [WHEN [compare-value] THEN result ...]
  153. [ELSE result]
  154. END
  155. -- while循环
  156. [begin_label:] while search_condition do
  157. statement_list
  158. end while [end_label];
  159. - 如果需要在循环内提前终止 while循环,则需要使用标签;标签需要成对出现。
  160. -- 退出循环
  161. 退出整个循环 leave
  162. 退出当前循环 iterate
  163. 通过退出的标签决定退出哪个循环
  164. --// 内置函数 ----------
  165. -- 数值函数
  166. abs(x) -- 绝对值 abs(-10.9) = 10
  167. format(x, d) -- 格式化千分位数值 format(1234567.456, 2) = 1,234,567.46
  168. ceil(x) -- 向上取整 ceil(10.1) = 11
  169. floor(x) -- 向下取整 floor (10.1) = 10
  170. round(x) -- 四舍五入去整
  171. mod(m, n) -- m%n m mod n 求余 10%3=1
  172. pi() -- 获得圆周率
  173. pow(m, n) -- m^n
  174. sqrt(x) -- 算术平方根
  175. rand() -- 随机数
  176. truncate(x, d) -- 截取d位小数
  177. -- 时间日期函数
  178. now(), current_timestamp(); -- 当前日期时间
  179. current_date(); -- 当前日期
  180. current_time(); -- 当前时间
  181. date(\'yyyy-mm-dd hh:ii:ss\'); -- 获取日期部分
  182. time(\'yyyy-mm-dd hh:ii:ss\'); -- 获取时间部分
  183. date_format(\'yyyy-mm-dd hh:ii:ss\', \'%d %y %a %d %m %b %j\'); -- 格式化时间
  184. unix_timestamp(); -- 获得unix时间戳
  185. from_unixtime(); -- 从时间戳获得时间
  186. -- 字符串函数
  187. length(string) -- string长度,字节
  188. char_length(string) -- string的字符个数
  189. substring(str, position [,length]) -- strposition开始,取length个字符
  190. replace(str ,search_str ,replace_str) -- str中用replace_str替换search_str
  191. instr(string ,substring) -- 返回substring首次在string中出现的位置
  192. concat(string [,...]) -- 连接字串
    group_concat(name separator \';\') -- 分组连接字符串,用;分隔。 默认是逗号“,”
  193. charset(str) -- 返回字串字符集
  194. lcase(string) -- 转换成小写
  195. left(string, length) -- string2中的左边起取length个字符
  196. load_file(file_name) -- 从文件读取内容
  197. locate(substring, string [,start_position]) -- instr,但可指定开始位置
  198. lpad(string, length, pad) -- 重复用pad加在string开头,直到字串长度为length
  199. ltrim(string) -- 去除前端空格
  200. repeat(string, count) -- 重复count
  201. rpad(string, length, pad) --在str后用pad补充,直到长度为length
  202. rtrim(string) -- 去除后端空格
  203. strcmp(string1 ,string2) -- 逐字符比较两字串大小
  204. -- 流程函数
  205. case when [condition] then result [when [condition] then result ...] [else result] end 多分支
  206. if(expr1,expr2,expr3) 双分支。
  207. -- 聚合函数
  208. count()
  209. sum();
  210. max();
  211. min();
  212. avg();
  213. group_concat()
  214. -- 其他常用函数
  215. md5();
  216. default();
  217. --// 存储函数,自定义函数 ----------
  218. -- 新建
  219. CREATE FUNCTION function_name (参数列表) RETURNS 返回值类型
  220. 函数体
  221. - 函数名,应该合法的标识符,并且不应该与已有的关键字冲突。
  222. - 一个函数应该属于某个数据库,可以使用db_name.funciton_name的形式执行当前函数所属数据库,否则为当前数据库。
  223. - 参数部分,由"参数名""参数类型"组成。多个参数用逗号隔开。
  224. - 函数体由多条可用的mysql语句,流程控制,变量声明等语句构成。
  225. - 多条语句应该使用 begin...end 语句块包含。
  226. - 一定要有 return 返回值语句。
  227. -- 删除
  228. DROP FUNCTION [IF EXISTS] function_name;
  229. -- 查看
  230. SHOW FUNCTION STATUS LIKE \'partten\'
  231. SHOW CREATE FUNCTION function_name;
  232. -- 修改
  233. ALTER FUNCTION function_name 函数选项
  234. --// 存储过程,自定义功能 ----------
  235. -- 定义
  236. 存储存储过程 是一段代码(过程),存储在数据库中的sql组成。
  237. 一个存储过程通常用于完成一段业务逻辑,例如报名,交班费,订单入库等。
  238. 而一个函数通常专注与某个功能,视为其他程序服务的,需要在其他语句中调用函数才可以,而存储过程不能被其他调用,是自己执行 通过call执行。
  239. -- 创建
  240. CREATE PROCEDURE sp_name (参数列表)
  241. 过程体
  242. 参数列表:不同于函数的参数列表,需要指明参数类型
  243. IN,表示输入型
  244. OUT,表示输出型
  245. INOUT,表示混合型
  246. 注意,没有返回值。
  247. /* 存储过程 */ ------------------
  248. 存储过程是一段可执行性代码的集合。相比函数,更偏向于业务逻辑。
  249. 调用:CALL 过程名
  250. -- 注意
  251. - 没有返回值。
  252. - 只能单独调用,不可夹杂在其他语句中
  253. -- 参数
  254. IN|OUT|INOUT 参数名 数据类型
  255. IN 输入:在调用过程中,将数据输入到过程体内部的参数
  256. OUT 输出:在调用过程中,将过程体处理完的结果返回到客户端
  257. INOUT 输入输出:既可输入,也可输出
  258. -- 语法
  259. CREATE PROCEDURE 过程名 (参数列表)
  260. BEGIN
  261. 过程体
  262. END
  263. /* 用户和权限管理 */ ------------------
  264. 用户信息表:mysql.user
  265. -- 刷新权限
  266. FLUSH PRIVILEGES
  267. -- 增加用户
  268. CREATE USER 用户名 IDENTIFIED BY [PASSWORD] 密码(字符串)
  269. - 必须拥有mysql数据库的全局CREATE USER权限,或拥有INSERT权限。
  270. - 只能创建用户,不能赋予权限。
  271. - 用户名,注意引号:如 \'user_name\'@\'192.168.1.1\'
  272. - 密码也需引号,纯数字密码也要加引号
  273. - 要在纯文本中指定密码,需忽略PASSWORD关键词。要把密码指定为由PASSWORD()函数返回的混编值,需包含关键字PASSWORD
  274. -- 重命名用户
  275. RENAME USER old_user TO new_user
  276. -- 设置密码
  277. SET PASSWORD = PASSWORD(\'密码\') -- 为当前用户设置密码
  278. SET PASSWORD FOR 用户名 = PASSWORD(\'密码\') -- 为指定用户设置密码
  279. -- 删除用户
  280. DROP USER 用户名
  281. -- 分配权限/添加用户
  282. GRANT 权限列表 ON 表名 TO 用户名 [IDENTIFIED BY [PASSWORD] \'password\']
  283. - all privileges 表示所有权限
  284. - *.* 表示所有库的所有表
  285. - 库名.表名 表示某库下面的某表
  286. -- 查看权限
  287. SHOW GRANTS FOR 用户名
  288. -- 查看当前用户权限
  289. SHOW GRANTS; SHOW GRANTS FOR CURRENT_USER; SHOW GRANTS FOR CURRENT_USER();
  290. -- 撤消权限
  291. REVOKE 权限列表 ON 表名 FROM 用户名
  292. REVOKE ALL PRIVILEGES, GRANT OPTION FROM 用户名 -- 撤销所有权限
  293. -- 权限层级
  294. -- 要使用GRANTREVOKE,您必须拥有GRANT OPTION权限,并且您必须用于您正在授予或撤销的权限。
  295. 全局层级:全局权限适用于一个给定服务器中的所有数据库,mysql.user
  296. GRANT ALL ON *.*和 REVOKE ALL ON *.*只授予和撤销全局权限。
  297. 数据库层级:数据库权限适用于一个给定数据库中的所有目标,mysql.db, mysql.host
  298. GRANT ALL ON db_name.*和REVOKE ALL ON db_name.*只授予和撤销数据库权限。
  299. 表层级:表权限适用于一个给定表中的所有列,mysql.talbes_priv
  300. GRANT ALL ON db_name.tbl_nameREVOKE ALL ON db_name.tbl_name只授予和撤销表权限。
  301. 列层级:列权限适用于一个给定表中的单一列,mysql.columns_priv
  302. 当使用REVOKE时,您必须指定与被授权列相同的列。
  303. -- 权限列表
  304. ALL [PRIVILEGES] -- 设置除GRANT OPTION之外的所有简单权限
  305. ALTER -- 允许使用ALTER TABLE
  306. ALTER ROUTINE -- 更改或取消已存储的子程序
  307. CREATE -- 允许使用CREATE TABLE
  308. CREATE ROUTINE -- 创建已存储的子程序
  309. CREATE TEMPORARY TABLES -- 允许使用CREATE TEMPORARY TABLE
  310. CREATE USER -- 允许使用CREATE USER, DROP USER, RENAME USERREVOKE ALL PRIVILEGES
  311. CREATE VIEW -- 允许使用CREATE VIEW
  312. DELETE -- 允许使用DELETE
  313. DROP -- 允许使用DROP TABLE
  314. EXECUTE -- 允许用户运行已存储的子程序
  315. FILE -- 允许使用SELECT...INTO OUTFILELOAD DATA INFILE
  316. INDEX -- 允许使用CREATE INDEXDROP INDEX
  317. INSERT -- 允许使用INSERT
  318. LOCK TABLES -- 允许对您拥有SELECT权限的表使用LOCK TABLES
  319. PROCESS -- 允许使用SHOW FULL PROCESSLIST
  320. REFERENCES -- 未被实施
  321. RELOAD -- 允许使用FLUSH
  322. REPLICATION CLIENT -- 允许用户询问从属服务器或主服务器的地址
  323. REPLICATION SLAVE -- 用于复制型从属服务器(从主服务器中读取二进制日志事件)
  324. SELECT -- 允许使用SELECT
  325. SHOW DATABASES -- 显示所有数据库
  326. SHOW VIEW -- 允许使用SHOW CREATE VIEW
  327. SHUTDOWN -- 允许使用mysqladmin shutdown
  328. SUPER -- 允许使用CHANGE MASTER, KILL, PURGE MASTER LOGSSET GLOBAL语句,mysqladmin debug命令;允许您连接(一次),即使已达到max_connections
  329. UPDATE -- 允许使用UPDATE
  330. USAGE -- “无权限”的同义词
  331. GRANT OPTION -- 允许授予权限
  332. /* 表维护 */
  333. -- 分析和存储表的关键字分布
  334. ANALYZE [LOCAL | NO_WRITE_TO_BINLOG] TABLE 表名 ...
  335. -- 检查一个或多个表是否有错误
  336. CHECK TABLE tbl_name [, tbl_name] ... [option] ...
  337. option = {QUICK | FAST | MEDIUM | EXTENDED | CHANGED}
  338. -- 整理数据文件的碎片
  339. OPTIMIZE [LOCAL | NO_WRITE_TO_BINLOG] TABLE tbl_name [, tbl_name] ...
  340. /* 杂项 */ ------------------
  341. 1. 可用反引号(`)为标识符(库名、表名、字段名、索引、别名)包裹,以避免与关键字重名!中文也可以作为标识符!
  342. 2. 每个库目录存在一个保存当前数据库的选项文件db.opt。
  343. 3. 注释:
  344. 单行注释 # 注释内容
  345. 多行注释 /* 注释内容 */
  346. 单行注释 -- 注释内容 (标准SQL注释风格,要求双破折号后加一空格符(空格、TAB、换行等))
  347. 4. 模式通配符:
  348. _ 任意单个字符
  349. % 任意多个字符,甚至包括零字符
  350. 单引号需要进行转义 \\'
  351. 5. CMD命令行内的语句结束符可以为 ";", "\G", "\g",仅影响显示结果。其他地方还是用分号结束。delimiter 可修改当前对话的语句结束符。
  352. 6. SQL对大小写不敏感
  353. 7. 清除已有语句:\c

 

版权声明:本文为FondWang原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/FondWang/p/12243972.html