mysql基础命令
登录
输入命令后,输入密码
1 | mysql -u root -p |
数据库
查看库
显示全部数据库
1 | SHOW DATABASES; |
使用数据库
1 | USE db; |
查看当前正在使用的数据库
1 | SELECT DATABASE(); |
创建库
创建数据库
1 | CREATE DATABASE db; |
使用IF NOT EXISTS
,在创建数据库时,判断数据库是否不存在,若不存在则创建
1 | CREATE DATABASE IF NOT EXISTS db; |
使用DEFAULT CHARSET
,在创建数据库时设置字符集
1 | CREATE DATABASE db DEFAULT CHARSET utf8mb4; |
删除库
删除数据库
1 | DROP DATABASE db; |
使用IF EXISTS
,删除数据库时,判断数据库存在,存在则删除
1 | DROP DATABASE IF EXISTS db; |
数据表
查看表
显示数据表
1 | SHOW TABLES; |
查看数据表结构
1 | DESCRIBE soft; |
显示建表语句
1 | SHOW CREATE TABLE soft; |
创建表
创建数据表
1 | CREATE TABLE soft( |
使用COMMENT
,创建数据表时添加描述信息
1 | CREATE TABLE soft( |
字段约束
非空约束
使用NOT NULL
,创建数据表时给某字段添加非空约束,标注该字段不能为空值,即在插入时必须为其添加一个值
1 | CREATE TABLE soft( |
如下语句,插入时报错,因为没有为非空约束指定值
1 | INSERT INTO soft softSize VALUES 1.1; |
唯一约束
使用UNIQUE
,创建数据表时给某字段添加唯一约束,标注每条记录中该字段的值不能出现重复
1 | CREATE TABLE soft( |
主键约束
使用PRIMARY KEY
,创建数据表并给指定字段添加主键约束
,主键约束能够唯一确定一张表中的一条记录,某个字段添加主键约束后,每条记录中该字段的值不重复且不为空
1 | CREATE TABLE soft( |
联合主键
,由多个字段组合的主键,使id
和softName
联合起来的联合值不重复且id
和softName
不为空
1 | CREATE TABLE soft( |
通俗讲,id
和softName
不能为空,而且这两个不能同时和其他词条的一样
1 | # 先插入如下数据 |
默认约束
使用DEFAULT
,创建数据表时给字段添加默认约束,当插入词条时未指定该字段的值,将会自动使用默认值
1 | CREATE TABLE soft( |
自增约束
使用AUTO_INCREMENT
,创建数据表时给字段添加自增约束,该约束只能标注在带有键
的字段上,即必须配合PRIMARY KEY
或UNIQUE
使用
1 | CREATE TABLE soft( |
修改表
将soft
表修改为software
表
1 | ALTER TABLE soft RENAME TO software; |
在soft
表中添加INT
类型的id
字段
1 | ALTER TABLE soft ADD id INT; |
在soft
表中删除INT
类型的id
字段
1 | ALTER TABLE soft DROP COLUMN id; |
修改soft
表中id
字段的数据类型为INT UNSIGNED
1 | ALTER TABLE soft MODIFY id INT UNSIGNED; |
修改soft
表中id
字段的名为sid
1 | ALTER TABLE soft CHANGE id sid BIGINT UNSIGNED; |
删除表
删除数据表
1 | DROP TABLE soft; |
删除数据表,如果数据表存在
1 | DROP TABLE IF EXISTS soft; |
字段
增
向数据表中插入数据记录
1 | CREATE TABLE soft( |
向数据表中插入数据记录,给指定字段赋值
1 | INSERT INTO soft (softName) VALUES ('name3'); |
删
删除数据(删除soft
表中所有softName
为test.apk
的词条)
1 | DELETE FROM soft WHERE softName = 'test.apk'; |
改
修改数据(将soft
表中所有softName
为test2.apk
的词条的softName
修改为test.apk
)
1 | UPDATE soft SET softName = 'test.apk' WHERE softName = 'test2.apk'; |
查
数据查询语句的基本格式
1 | select 目标字段 |
基本查询
查询soft
表中的词条,显示所有字段
1 | SELECT * FROM soft; |
查询soft
表中的词条,显示指定字段
1 | # 显示softName和softSize字段 |
查询soft
表中的词条,显示指定字段,并给字段取别名
1 | # 显示softName和softSize字段,并取别名'软件名'和'软件大小' |
使用DISTINCT
,查询soft
表中指定字段的词条并去重,字段完全相同的词条只显示一条
1 | # 显示softName和softSize字段,并去重 |
条件查询
查询soft
表中所有softName
为test.apk
的词条
1 | SELECT * FROM soft WHERE softName = 'test.apk'; |
查询soft
表中所有softSize
在1.0
到10.0
之间的词条
1 | SELECT * FROM soft WHERE softSize BETWEEN 1.0 AND 10.0; |
查询soft
表中所有sid
为1
、2
或3
的词条
1 | SELECT * FROM soft WHERE sid IN ('1', '2', '3'); |
查询soft
表中所有softName
为空的词条
1 | SELECT * FROM soft WHERE softSize IS NULL; |
模糊查询,查询soft
表中所有softName
以name
开头的词条
1 | SELECT * FROM soft WHERE softName LIKE 'name%'; |
模糊查询,查询soft
表中所有softName
以.apk
结尾的词条
1 | SELECT * FROM soft WHERE softName LIKE '%.apk'; |
模糊查询,查询soft
表中所有softName
包含test
的词条
1 | SELECT * FROM soft WHERE softName LIKE '%test%'; |
排序查询
查询soft
表中所有词条,按softSize
升序排序
1 | # ASC表示升序,默认就是升序,可以省略 |
查询soft
表中所有词条,按softSize
降序排序
1 | SELECT * FROM soft ORDER BY softSize DESC; |
查询soft
表中所有词条,按softSize
降序排序,再按sid
升序排序
1 | SELECT * FROM soft ORDER BY softSize DESC, sid; |
聚合函数
查询soft
表中所有词条的softSize
总和
1 | SELECT SUM(softSize) FROM soft; |
查询soft
表中所有词条的softSize
平均值
1 | SELECT AVG(softSize) FROM soft; |
查询soft
表中所有词条的softSize
最大值
1 | SELECT MAX(softSize) FROM soft; |
查询soft
表中所有词条的softSize
最小值
1 | SELECT MIN(softSize) FROM soft; |
查询soft
表所有词条中,softSize
不为NULL
的词条的数量
1 | SELECT COUNT(softSize) FROM soft; |
通过如下两种方法,可以查询所有词条的数量
1 | # 任意一个常数均可 |
分组查询
group by
根据一个或多个字段对结果集进行分组,所有词条中,指定字段完全相等的分为一组,对每个组可以进行聚合函数操作
查询soft
表中的词条,按softName
分组
1 | SELECT * FROM soft GROUP BY softName; |
但其实一旦对某个字段进行分组,就只能查询该字段,其他字段已经没有意义了
1 | SELECT softName FROM soft GROUP BY softName; |
查询soft
表中的词条,按softName
和softSize
分组
1 | SELECT softName, softSize FROM soft GROUP BY softName, softSize; |
查询soft
表中softSize
不为NULL
的词条,再按softName
对softSize
不为NULL
的词条分组
1 | SELECT softName FROM soft WHERE softSize IS NOT NULL GROUP BY softName; |
查询soft
表中的词条,按softName
分组,且分组中softName
不为NULL
的词条数量大于2
1 | SELECT softName FROM soft GROUP BY softName HAVING COUNT(softName) >= 2; |
查询soft
表中的词条,按softName
分组,且分组中softName
不为NULL
的词条数量大于2
,显示分组中softName
不为NULL
的词条的数量
1 | SELECT softName,COUNT(softName) as 词条数量 FROM soft GROUP BY softName HAVING COUNT(softName) >= 2; |
分页查询
查询soft
表中所有词条,从第1
行开始,每页显示5
行
1 | SELECT * FROM soft LIMIT 0,5; |
查询soft
表中所有词条,偏移为0
,每页显示5
行,即从第1
行开始,显示5
行
1 | SELECT * FROM soft LIMIT 5 OFFSET 0; |