本文已参与「新人创作礼」活动, 一起开启掘金创作之路。
1. 数据库基本信息查询/设置
\[; \g \G]都表示语句结束, ;和\g效果一样, \G可以使结果显示更美观delimiter 结束符号更改结束符SET NAMES GBK;show database;显示所有数据库show engines \G查看所支持的存储引擎show variables like'have%'查看所支持的存储引擎'storage_engine%'查询默认存储引擎
show warning;查看错误信息help contents;查看帮助文档的目录列表help <item>;<item>查看对应的帮助文档
2. 数据库及表
create database 库名;创建数据库use 库名;选择数据库drop database 库名;删除数据库create table 表名();(属性名 数据类型 [约束], ...)创建表constraint 约束名 约束()(属性名) 在创建表的时候用来设置约束及约束名[constraint 约束名 ]primary key()(属性名, 属性名, ...) 设置多字段主键constraint 约束名 foreign key (属性名1) references 表名(属性名2)“属性名1”是字表中设置外键的字段名, 属性名2是父表中设置主键约束的字段名[unique] index | key [索引名] ()(属性名 [(长度)] [asc | desc]) 创建[唯一]索引索引关联的字段 索引长度 升序|降序fulltext index | key [索引名] ()(属性名 [(长度)] [asc | desc]) 创建全文索引index | key [索引名]()(属性名1 [(长度)] [asc | desc], ...) 创建多列索引create [unique] index 索引名 on 表();(属性名 [(长度)] [asc | desc]) 在已存在的表上创建[唯一]索引create fulltext index 索引名 on 表();(属性名 [(长度)] [asc | desc]) 在已存在的表上创建全文索引create index 索引名 on 表();(属性名1 [(长度)] [asc | desc], ...) 在已存在的表上创建多列索引desc[ribe] 表名;查看对应表对象定义的信息show create table 表名;查看表详细定义drop table 表名;删除表drop index 索引名 on 表名;删除索引alter table 表名 ...对表的一些操作... rename [to] 表2;把表的名字改为表2... add 属性名 类型;在表的最后增加字段... add 属性名 类型 first;在表的第一个位置增加字段... add 属性名 类型 after 属性名;在表的指定字段之后增加字段... add [unique] index | key 索引名();(属性名 [(长度)] [asc | desc]) 创建[唯一]索引... add fulltext index | key 索引名();(属性名 [(长度)] [asc | desc]) 创建全文索引... add index | key 索引名();(属性名 [(长度)] [asc | desc]) 创建多列索引... drop 属性名;删除字段... modify 属性名 类型;修改字段的数据类型... modify 属性名 类型 first;将字段调整到第一个位置... modify 属性名 类型 after 名2;将字段调整到名2字段之后... change 旧名 新名 旧[新]类型;修改字段的名字[或同时修改名字和属性]
3. 数据增删改查操作
insert into 表[(属性名, ...)] values();(值, ...), ... 向表中添加数据insert into 表(属性名, ...) 查询语句;将查询结果插入表中update 表 set 属性名=值, ... where ;更新表中满足条件的数据delete from 表 [where 条件];删除表中[满足条件]的数据select [distinct] 属性名1, ... from 表;查看表中对应字段(可用*号表示所有字段)[去重后]的数据- 属性名可以是:
属性名[+-*/%]数值查询结果显示经过相应计算的结果属性名[ as] 新属性名查询结果将显示新属性名concat() 新属性名(属性名|字符串, ...)将concat中的内容连接到一起输出为新属性统计函数() 新属性名, ...统计函数: count(), avg(), sum(), max(), min()
... where [not] 字段 条件;查询字段[不]满足某条件的数据记录- 比较运算符: > < = !=(<>) >= <= 逻辑运算符: and(&&) or(||) xor(异或) not(!)
[not] between 值1 and 值2;[不]在值1和值2之间is [not] null[不]是空值[not] in (值1, 值2, ...)[不]在集合中 (若集合中存在NULL, not in查不出任何结果)[not] like 字符串;搜索与字符串(也可以是数据类型)[不]匹配的结果"_"通配符, 该通配符值能匹配单个字符串"%"通配符, 该通配符值可以匹配任意长度(0~n)的字符串"%%"表示查询所有记录
... order by 字段 [asc\|desc], ...;查询结果按照字段进行[升序|降序]排序... limit [初始偏移量, ] 显示行数;从第偏移量+1条数据开始显示相应行数... group by 字段1, ...;通过字段的值进行分组并显示每组的随机一条记录(一般配合函数)多字段会从左往右依次按照字段进行分组
- 属性名可以是:
... group by ... having 条件;显示满足条件的分组后的数据
4. 视图(5.0.1开始)
create view 视图名 as 查询语句;创建视图create or replace view 视图 as 查询;修改视图alter view 视图名 as 查询语句;修改视图show tables;查看表名和视图名show create view 视图名;查看视图的定义信息desc[ribe] 视图名查看视图设计信息drop view 视图名 [,视图2]删除一个或多个视图show table status [from 库名] [like '表|视图'];显示数据库里表和视图的详细信息- 返回参数的含义
- Name | 表和视图名
- Engine | 表的存储引擎(4.1.2之前用Type表示)
- Version | 表的.frm文件的版本号
- Row_format | 表的行存储格式
- Rows | 表中行的数目
- Avg_row_length | 表中行平均行长度
- Data_length | 表数据文件的长度
- Max_data_length | 表数据文件的最大长度
- Index_length | 表索引文件的长度
- Data_free | 表被整序后, 但是未使用的字节的数目
- Auto_increment | 表中下一个AUTO_INCREMENT值
- Create_time | 表的创建时间
- Update_time | 表的最后一次更新时间
- Check_time | 表的最后一次检查时间
- Collation | 表的字符集
- Checksum | 表的活性校验
- Create_options | 表的额外选项
- Comment | 表的注解
5. 触发器(5及以上的版本)
create trigger 触发器名 before | after 触发事件 on 操作表 for each row 触发器语句;before | after触发器事件之前 | 之后执行触发器语句触发事件即触发器执行条件, 包含delete、insert和update语句操作表操作后可能激活触发器的表触发器语句表示激活触发器后被执行的语句
begin 触发器语句1; ... end;可通过begin ... end 让触发器执行多条语句show triggers;查看已存在的触发器的信息- 返回的参数
- Trigger | 触发器的名称
- Event | 触发器的激活事件
- Table | 触发器对象触发事件所操作的表
- Statement | 触发器激活时所执行的语句
- Timing | 触发器所执行的时间
select * from triggers [where ...];查看系统表triggers(提供触发器的所有详细信息)中的所有记录drop trigger 触发器名删除触发器