MySQL关键字总结:
localhost | 本地主机 |
user | 用户 |
password | 密码 |
data | 数据 |
database | 数据库 |
table | 表 |
column | 列 |
row | 行 |
port | 端口 |
quit | 退出 |
exit | 退出 |
charset | 字符集 |
collate | 排序规则 |
collation | 排序规则 |
表二
create | 创建(数据库、表等) |
show | 查看(数据库、表等) |
drop | 删除(数据库、表等) |
alter | 修改(数据库、表等) |
insert | 插入(数据、记录) |
delete | 删除(数据、记录) |
update | 修改(数据、记录) |
set | 设置 |
query | 查询 |
year | 年 |
field | 字段 |
delimiter | 分隔符 |
exists | 存在 |
int | 整数类型 |
tinyint | 微整数类型 |
smallint | 小整数类型 |
mediumint | 中整数类型 |
bigint | 大整数类型 |
unsigned | 无符号的 |
zerofill | 填充0 |
float | 单精度浮点类型 |
double | 双精度浮点类型 |
decimal | 定点小数类型 |
numeric | 数字 |
fixed | 固定类型 |
char | 定长字符类型 |
varchar | 可变长字符类型 |
binary | 二进制类型 |
enum | 单选类型/枚举类型 |
set | 多选类型(数据类型的一种) |
bit | 比特类型 |
表三
primary key | 主键 |
unique key | 唯一键 |
auto_increment | 自增长 |
default | 默认值 |
comment | 说明 |
index | 索引 |
key | 键 |
foreign key | 外键 |
fulltext key | 全文索引 |
constraint | 约束 |
engine | 存储引擎 |
show | 显示 |
describe | 描述 |
rename | 重命名 |
load | 加载 |
identify | 标识 |
null | 空 |
not null | 非空 |
datetime | 日期时间 |
date | 日期 |
time | 时间 |
timestamp | 时间戳 |
text | 长文本类型 |
blob | 二进制形式的长文本类型 |
values | 值 |
表四
select | 选择;查询;检索 |
from | 从… |
order | 顺序 |
distinct | 区分的 |
where | 哪里 |
group | 组 |
as | 作为 |
in | 在…里面 |
like | 像…一样 |
limit | 限制 |
count | 计数 |
avg | 平均 |
max | 最大 |
min | 最小 |
sum | 总和 |
asc | 升序的 |
desc | 降序的 |
join | 连接 |
inner | 内部的 |
cross | 交叉的 |
left | 左边 |
right | 右边 |
outer | 外面的 |
in | 在…里面 |
any | 任意一个 |
all | 全部 |
some | 其中一部分 |
union | 联合的 |
replace | 替换 |
表五
start | 开始 |
transaction | 事务 |
autocommit | 自动提交 |
begin | 开始 |
end | 结束 |
commit | 提交 |
rollback | 回滚 |
case | 在…情形 |
loop | 循环 |
while | 当…的时候 |
repeat | 重复 |
leave | 离开 |
declare | 声明 |
call | 调用 |
procedure | 存储过程 |
trigger | 触发器 |
before | 前 |
after | 后 |
for each row | 行级 |
grant | 授予 |
revoke | 撤销 |
privilege | 权限 |
view | 视图 |
truncate | 截取 |
usage | 惯例 |
identified by | 登录密码 |
option | 选项 |
with | 具有 |
MySQL常用命令:
显示帮助信息 | ?或\?或help或\h |
清除当前输入语句 | \c或clear |
连接到服务器,可选参数数据库和主机 | connect或\r |
设置语句分隔符 | delimiter或\d |
退出MySQL | exit或quit或\q |
从服务器获取MySQL的状态信息 | status或\s |
选择一个数据库使用,参数为数据库名称 | use或\u |
修改用户登录密码 | 见表五 |
查看当前MySQL中 有哪些数据库 | show databases; |
查看当前MySQL支持的所有字符集 | show char set; show character set; |
启动MySQL服务 | net start MySQL |
停止MySQL服务 | net stop MySQL |
登录MySQL数据库 | mysql -h主机名 -u用户名 -p密码 |
登录本机MySQL数据库 | mysql -u用户名 -p密码 |
表二
创建数据库 | CREATE DATABASE 库名; CREATE DATABASE IF NOT EXISTS 库名; #加判断 CREATE DATABASE 库名 CHAR SET 字符集名;#加选项 |
查看警告信息 | SHOW WARNINGS; |
查看MySQL服务器下所有数据库 | SHOW DATABASES; |
查看指定数据库的创建信息 | SHOW CREATE DATABASE 库名; |
选择或切换或使用数据库(指定当前库) | USE 库名; |
登录本地MySQL服务器 | mysql -u用户名 -p密码 mysql -u用户名 -p #隐藏密码 mysql -u用户名 -p密码 库名 #同时选择库 mysql -u用户名 -p 库名 #隐藏密码 |
示例: 超级用户root登录本机MySQL服务器(设密码123) | mysql -uroot -p123 mysql -uroot -p mysql -uroot -p123 test #同时选择库test mysql -uroot -p test |
删除数据库 | DROP DATABAS 库名; DROP DATABASE IF EXISTS 库名;#加判断 |
单行注释 | #或-- |
多行注释 | /*多行注释 */ |
创建数据表 | create table 表名( 列名1 数据类型 [列/行级别约束…], 列名2 数据类型 [列/行级别约束…], … [行/表级别约束], … ); #列/行级别约束: #列级别约束:not null,default #行级别约束:单字段 primary key,unique,auto_increment #行/表级别约束: #行级别约束:单、多字段 primary key(字段名1,字段名2) unique(字段名1,字段名2) #表间约束: foreign key(外键列) references 主表名(被引用列) |
查看当前数据库中的所有数据表 | SHOW TABLES; |
按匹配模式查看数据表 | SHOW TABLES LIKE '含%_的匹配模式'; |
查看当前数据库中的所有数据表的状态 | SHOW TABLE STATUS; |
查看所有或指定字段的信息 | DESCRIBE|DESC 表名; #1 DESC|DESCRIBE 数据表名 字段名; #2 |
查看创建数据表的具体SQL语句,含字符编码 | SHOW CREATE TABLE 表名; |
修改字段 | 格式1:ALTER TABLE 数据表名 CHANGE [COLUMN] 旧字段名 新字段名 字段类型 [字段属性]; 格式2:ALTER TABLE 数据表名 MODIFY [COLUMN] 字段名 新类型 [字段属性]; |
新增字段 | 格式1:新增一个字段,并可指定其位置 ALTER TABLE 数据表名 ADD [COLUMN] 新字段名 字段类型 [FIRST | AFTER 字段名]; 格式2:同时新增多个字段 ALTER TABLE 数据表名 ADD [COLUMN] (新字段名1 字段类型1, 新字段名2 字段类型2, ...) ; |
删除字段 | ALTER TABLE 表名 DROP [COLUMN] 字段名; |
修改表名 | # 格式1 ALTER TABLE 旧表名 RENAME [TO|AS] 新表名; # 格式2 RENAME TABLE 旧表名1 TO 新表名1[, 旧表名2 TO 新表名2...] ; |
删除数据表 | DROP TABLE 表名; DROP TABLE IF EXISTS 表名; #加判断 |
表三
新增记录(行) | 格式1:(简化格式) INSERT INTO 表名 VALUES(值1,值2,…,值n); #注意:(值1,值2,…,值n)中的值顺序、数据类型、个数必须与表结构一致 格式2:(基本格式) INSERT INTO 表名(字段名1,字段名2,…) VALUES(值1,值2,…); #注意:(值1,值2,…,)中的值顺序、数据类型、个数必须与(字段名1,字段名2,…)一致 #常用系统函数:now(),curdate() 表约束基本规则: 一.对应在默认值列插入default,MySQL自动为该列插入预设的默认值; 二.默认值列可以省略,MySQL自动为该列插入预设的默认值; 三.非空列一定要插入具体值,原则上不能省略!!! 四.允许空列可以省略,MySQL自动为该列插入NULL值; 五.非空叠加默认值列可以省略,MySQL自动为该列插入预设的默认值; 六.对应在自增列插入0|NULL|DEFAULT三选一,MySQL自动为该列插入预设的自增值; 七.自增列可以省略,MySQL自动为该列插入预设的自增值; |
修改数据 | UPDATE 表名 SET 字段名1 =值1,字段名2 =值2 WHERE 条件; |
删除记录(行) | DELETE FROM 表名 WHERE 条件; |
清空数据 | TRUNCATE TABLE 表名; 等价于 TRUNCATE 表名; |
添加主键(含非空) | ALTER TABLE 表名 ADD PRIMARY KEY(列名1,…); |
删除主键 | ALTER TABLE 表名 DROP PRIMARY KEY; |
添加外键 | ALTER TABLE 表名 ADD FOREIGN KEY(外键列) REFERENCES 主表(被引用列); |
删除外键 | ALTER TABLE 表名 DROP FOREIGN KEY 外键约束名; |
添加自增式主键 | ALTER TABLE 表名 ADD 列名 INT PRIMARY KEY AUTO_INCREMENT FIRST; 等价于 ALTER TABLE 表名 ADD 列名 INT FIRST; ALTER TABLE 表名 MODIFY 列名 INT PRIMARY KEY AUTO_INCREMENT; |
创建索引 | 语句1:ALTER TABLE 表名 ADD [UNIQUE ] INDEX [索引名] (字段名 [ASC|DESC,…]); 语句2:CREATE [UNIQUE ]INDEX 索引名 ON 表名(字段名[ASC|DESC,…]); 语句3:CREATE TABLE 表名( ……, INDEX [索引名] (字段名 [ASC|DESC,…]) ); 说明:ASC表示升序,DESC表示降序,默认升序 |
删除索引 | 语句1:ALTER TABLE 表名 DROP INDEX 字段名; 语句2:DROP INDEX 索引名 ON 表名; |
基础查询(主语句) | select 查什么 from 从哪里查; 查什么:输出什么列 从哪里查:表名/视图名 |
完整查询语句 (注意各子句位置和顺序) | select [distinct] 输出列 from 表名 [where 条件] [group by 字段名 [having 条件]] [order by 字段名 asc/desc] [limit [偏移量,]记录数] ; #输出列:*/字段名1,字段名2,…/计算列 #常用系统函数:year(),year(now()),month(),if() |
WHERE条件子句常用运算符 | #比较运算符:=,>,<,>=,<=,<>,!= #逻辑运算符:not,and,or #其他运算符:between and,in(),like '%_' ,is null #带NOT运算符:not between and,not in(),not like '%_' ,is not null #其他运算符2:any()/some(),all(),exists(),not exists() |
分组统计select、having、order by子句常用聚合函数 | count()/count(*),avg(),max(),min(),sum() |
去除重复记录查询 多字段去除重复记录 | SELECT DISTINCT 字段名 FROM 表名; SELECT DISTINCT 字段名1,字段名2 FROM 表名; |
分组统计查询 多字段分组统计 分组统计筛选 | GROUP BY 字段名 GROUP BY 字段名1,字段名2 GROUP BY 字段名 HAVING 条件 |
查询结果排序(升序|降序) 多字段排序 | ORDER BY 字段名 ASC|DESC ORDER BY 字段名1 ASC|DESC,字段名2 ASC|DESC |
限行查询:第n行到第m行 从第一条开始的i条记录 | LIMIT n-1,m-n+1 LIMIT 0,i 等价于 LIMIT i |
多表查询 内连接(之等值连接) (注意各子句位置和顺序) JOIN方法 内连接分为: 等值连接 非等值连接 自连接 功能:只显示两表匹配的记录 | select [distinct] 输出列 from 表名1 inner join 表名2 on 表名2.公共列=表名1.公共列 [inner join 表名3 on 表名3.公共列=表名1|2.公共列] [where 条件] [group by 字段名 [having 条件]] [order by 字段名 asc/desc] [limit [偏移量,]记录数] ; #输出列:*,表名.*/别名.*,表名.字段名/别名.字段名,字段名 |
左外连接 JOIN方法 | LEFT JOIN ON #输出列:同上 |
右外连接 JOIN方法 | RIGHT JOIN ON #输出列:同上 |
全外连接(MySQL不支持,可以使用UNION实现相同的效果) JOIN方法 | FULL JOIN ON #输出列:同上 |
交叉连接 JOIN方法 | CROSS JOIN #输出列:同上 |
内连接(之等值连接) (注意各子句位置和顺序) where方法(逗号连接方法) | select [distinct] 输出列 from 表名1,表名2[,表名3] where 表名1.公共列=表名2.公共列 -- 连接条件 [and 表名3.公共列=表名1|2.公共列] -- 连接条件 [and 查询条件] -- 查询条件 [group by 字段名 [having 条件]] [order by 字段名 asc/desc] [limit [偏移量,]记录数] ; 注意:where方法无法得到左、右、全连接等功能 |
子查询 | SELECT主查询 WHERE 字段名 =(SELECT标量子查询); #二层嵌套 SELECT主查询 WHERE 字段名 in(SELECT列子查询); #二层嵌套 SELECT主查询 WHERE 字段名 in(SELECT子查询 WHERE 字段名 in(SELECT子子查询)); #三层嵌套 SELECT 输出列 FROM (SELECT子查询) AS 别名; #表子查询 |
合并结果集 | SELECT条件查询 UNION SELECT条件查询; |
将查询结果存入新表 | CREATE TABLE 表名 SELECT查询语句; |
将查询结果插入旧表 | INSERT INTO 表名 SELECT查询语句; |
创建视图 | CREATE VIEW 视图名 AS SELECT查询语句; |
表四
开启一个事务处理 | START TRANSACTION; |
提交事务 | COMMIT; |
取消事务 | ROLLBACK; |
定义语句结束符号 | DELIMITER $$ #推荐1 DELIMITER // #推荐2 DELIMITER ; #恢复默认 |
创建自定义函数 | DELIMITER $$ CREATE FUNCTION 函数名(形参名 数据类型) RETURNS 数据数型 BEGIN [SQL语句] RETURN 返回值; END $$ DELIMITER ; |
查看函数的创建语句 | SHOW CREATE FUNCTION 函数名; |
输出语句 | SELECT 表达式; SELECT 函数名(); #无参 SELECT 函数名(实参); #有参 |
删除函数 | DROP FUNCTION 函数名; |
查看系统中所有函数状态 | SHOW FUNCTION STATUS ; |
按匹配模式查看库中的函数 | SHOW FUNCTION STATUS LIKE '%_'; |
定义存储过程 | DELIMITER $$ CREATE PROCEDURE 过程名(INOUT 形参名 数据类型) BEGIN SQL语句 END $$ DELIMITER ; |
查看存储过程的创建语句 | SHOW CREATE PROCEDURE ; |
查看库中所有存储过程状态 | SHOW PROCEDURE STATUS ; |
按匹配模式查看库中的存储过程 | SHOW PROCEDURE STATUS LIKE '%_'; |
调用存储过程 | CALL 过程名(); #无参 CALL 过程名(实参); #定义语句中只有IN形参 CALL 过程名(实参,@会话变量); #注:定义语句中有OUT或INOUT形参,一个OUT或INOUT形参对应一个@会话变量 |
册除存储过程 | DROP PROCEDURE 过程名; |
查看所有系统变量值 | SHOW VARIABLES; |
按匹配模式查看系统变量值 | SHOW VARIABLES LIKE '%_'; |
查看指定名称的当前系统变量 | SELECT @@变量名; |
修改系统变量值(局部修改) | SET 变量名=新值; |
修改系统变量值(全局修改) | SET GLOBAL 变量名=值; SET @@GLOBAL.变量名=值; |
定义会话变量(用户变量)同时赋值 | SET @变量名=值; SELECT @变量1:=字段1 FROM 表名 WHERE 条件; SELECT 字段1 FROM 表名 WHERE 条件 INTO @变量1; |
定义局部变量 | DECLARE 变量名1,变量名2 数据类型 [DEFAULT 初值]; |
为局部变量赋值 | #1常规 SET 变量名1=值,变量名2=值; #2存储条件查询结果 SELECT 字段名1, 字段名2 FROM 表名 WHERE 条件 INTO 变量名1,字段名2; #2等价于 SELECT 字段名1, 字段名2 INTO 变量名1,字段名2 FROM 表名 WHERE 条件 ; |
IF判断语句 | #单分支 IF 条件 THEN 语句组 END IF; #双分支 IF 条件 THEN 语句组1 ELSE 语句组2 END IF; #多分支 IF 条件1 THEN 语句组1 ELSEIF 条件2 THEN 语句组2 …… ELSE 语句组n+1 END IF; |
CASE判断语句 | #1常规 CASE WHEN 条件1 THEN 语句组1 WHEN 条件2 THEN 语句组2 …… ELSE 语句组n+1 END CASE; #2使用等号比较特例 CASE 表达式 WHEN 值1 THEN 语句组1 WHEN 值2 THEN 语句组2 …… ELSE 语句组n+1 END CASE; |
WHILE循环语句 | WHILE 条件 DO 循环体 END WHILE; |
创建触发器 | DELIMITER $$ CREATE TRIGGER 触发器名 BEFORE/AFTER INSERT/UPDATE/DELETE ON 表名 FOR EACH ROW BEGIN new.字段名 old.字段名 END $$ DELIMITER ; |
查看触发器 | SHOW TRIGGERS ; |
删除触发器 | DROP TRIGGER 触发器; |
表五
备份单个数据库 | mysqldump -u用户名 -p密码>备份文件全名 |
备份多个数据库 | mysqldump -u用户名 -p密码 --database >备份文件全名 |
备份所有数据库 | mysqldump -u用户名 -p密码 --all-databases>备份文件全名 |
还原数据 | mysql -u用户名 -p密码<备份文件全名 |
添加新用户 | create user '用户名'@'主机标识' identified by '密码'; |
添加新用户或修改用户密码 | grant usage on * to '用户名'@'主机标识' identified by '密码'; |
修改用户密码 | mysqladmin -u 用户名 -p[旧密码] password 新密码 |
修改当前登陆用户自己的密码 | set password=password('新密码'); |
删除用户 | DROP USER |
授予权限 | GRANT ON TO |
收回特权 | REVOKE ON FROM |