MySQL基础命令

224 阅读6分钟

本文已参与「新人创作礼」活动, 一起开启掘金创作之路。

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 触发器名 删除触发器