数据库(Database)是按照数据结构来组织、存储和管理数据的仓库
关系型数据库
建立在关系模型基础上的数据库,借助于集合代数等数学概念和方法来处理数据库中的数据
关系数据库管理系统(Relational Database Management System)的特点:
# 启动数据库
➜ brew services start mysql
# 关闭数据库
➜ brew services stop mysql
# 登录数据库
➜ mysql -u root -p
Enter password: ******
# 退出数据库
mysql> exit
Bye
CREATE DATABASE [IF NOT EXISTS] `db_name` [[DEFAULT] CHARACTER [=] `charset_name`]
SHOW DATABASES
SHOW CREATE DATABASE `db_name`
ALTER DATABASE `db_name` [DEFAULT] CHARACTER SET [=] `charset_name`
USE `db_name`
DROP DATABASE [IF EXISTS] `db_name`
SELECT DATABASE()
SHOW WARNINGS;
CREATE TABLE [IF NOT EXISTS] table_name(字段名称 字段类型 [完整性约束条件] ...)
ENGINE=引擎名称 CHARSET='编码方式';
完整性约束条件
PRIMARY KEY
主键AUTO_INCREMENT
自增长FOREIGN KEY
外键NOT NULL
非空DEFAULT
默认值UNIQUE
唯一# 查看数据库下的表
SHOW TABLES
# 查看指定表的表结构
DESC table_name
DESCRIBE table_name
SHOW COLUMNS FROM table_name
修改表名
ALTER TABLE table_name RENAME [TO | AS] new_name
添加字段
ALTER TABLE table_name ADD 字段名称 字段类型 [完整性约束条件] [FIRST | AFTER] 字段名称
删除字段
ALTER TABLE table_name DROP 字段名称
修改字段
ALTER TABLE table_name MODIFY 字段名称 字段类型 [完整性约束条件] [FIRST | AFTER] 字段名称
修改字段名称
ALTER TABLE table_name CHANGE 旧字段名称 新字段名称 字段类型 [完整性约束条件] [FIRST | AFTER] 字段名称
添加默认值
ALTER TABLE table_name ALTER 字段名称 SET DEFAULT 默认值
删除默认值
ALTER TABLE table_name ALTER 字段名称 DROP DEFAULT
修改表的存储引擎
ALTER TABLE table_name ENGINE=存储引擎名称
设置自增长的值
ALTER TABLE table_name AUTO_INCREMENT=值
DROP TABLE [IF EXISTS] table_name [, table_name...]
# 不指定具体的字段名
INSERT [INTO] table_name VALUES | VALUE(值...)
# 列出指定字段
INSERT [INTO] table_name(字段名称1...) VALUES | VALUE(值1...)
# 同时出入多条记录
INSERT [INTO] table_name[(字段名称...)] VALUES(值...), (值...)...
# 通过SET 形式插入记录
INSERT [INTO] table_name SET 字段名称=值,...
# 将查询结果插入到表中
INSERT [INTO] table_name[(字段名称, ...)] SELECT 字段名称 FROM table_name
[WHERE 条件]
UPDATE table_name SET 字段名称=值, ...
[WHERE 条件]
[ORDER BY 字段名称]
[LIMIT 限制条数]
DELETE FROM table_name
[WHERE 条件]
[ORDER BY 字段名称]
[LIMIT 限制条件]
# 彻底清空数据表
TRUNCATE [TABLE] table_name
每一个表达式表示想要的一列,必须至少有一列,多个列之间用逗号分隔
*
表示所有列,table_name.*
可以表示命名表的所有列
查询表达式可以使用[AS] alias_name
为其赋予别名
查询表达式
简单版
SELECT column_name [,column_name | *] FROM table_name
[WHERE Clause]
[LIMIT N]
[ OFFSET M]
完整版
SELECT select_expr [, select_expr ...]
[FROM table_name
[WHERE 条件]
[GROUP BY { col_name | position } [ASC | DESC], ... 分组]
[HAVING 条件 对分组结果进行二次筛选]
[ORDER BY {col_name | position} [ASC | DESC], ...排序]
[LIMIT 限制显示条数]
]
将 WHERE
子句添加到 SELECT
语句中, 可以有条件地从表中选取数据
SELECT field1 [, field2,...fieldN] FROM table_name1, table_name2...
[WHERE condition1 [AND [OR]] condition2.....
SELECT column_name [, function(column_name)]
FROM table_name
WHERE column_name operator value
GROUP BY column_name;
通过 HAVING 子句对分组结果进行二次筛选
SELECT column_name [, function(column_name)]
FROM table_name
WHERE column_name operator value
HAVING conditions;
通过 ORDER BY 对查询结果排序
SELECT field1, field2,...fieldN table_name1, table_name2...
ORDER BY field1, [field2...] [ASC [DESC]]
LIMIT 显示条数 / LIMIT 偏移量,显示条数
SELECT column_name [, function(column_name)]
FROM table_name
WHERE column_name operator value
LIMIT [offset_count,] limit_count;
SELECT column_name FROM table_name WHERE column_name REGEXP '正则表达式';
常见REGEXP 操作符
模式 | 描述 |
---|---|
^ |
匹配以什么字符串的开始,例如:^A 表示以A 开头 |
$ | 匹配以什么字符串的结尾,例如:8$ 表示以8 结尾 |
. |
匹配除 “\n” 之外的任何单个字符 |
[...] |
字符集合, 匹配所包含的任意一个字符 |
[^...] |
负值字符集合, 匹配未包含的任意字符 |
p1 | p2 | p3 |
匹配 p1 或 p2 或 p3 |
* |
匹配前面的子表达式零次或多次, 例如,go* 能匹配 “g” 以及 “goo” |
+ |
匹配前面的子表达式一次或多次。例如,‘go+’ 能匹配 “go” 以及 “goo”,但不能匹配 “g” |
{n} |
n 是一个非负整数。匹配确定的 n 次 |
{n,m} |
m 和 n 均为非负整数,其中n <= m。最少匹配 n 次且最多匹配 m 次。 |