文章目录
数据库
数据库(Database)是按照数据结构来组织、存储和管理数据的仓库
关系型数据库
建立在关系模型基础上的数据库,借助于集合代数等数学概念和方法来处理数据库中的数据
关系数据库管理系统(Relational Database Management System)的特点:
- 1.数据以表格的形式出现
- 2.每行为各种记录名称
- 3.每列为记录名称所对应的数据域
- 4.许多的行和列组成一张表单
- 5.若干的表单组成 Database
连接数据库
# 启动数据库
➜ brew services start mysql
# 关闭数据库
➜ brew services stop mysql
# 登录数据库
➜ mysql -u root -p
Enter password: ******
# 退出数据库
mysql> exit
Bye
MySQL基础
数据库操作(DDL)
1、创建数据库
CREATE DATABASE [IF NOT EXISTS] `db_name` [[DEFAULT] CHARACTER [=] `charset_name`]
2、查看当前服务器下的数据库列表
SHOW DATABASES
3、查看指定数据库的定义
SHOW CREATE DATABASE `db_name`
4、修改指定数据库的编码方式
ALTER DATABASE `db_name` [DEFAULT] CHARACTER SET [=] `charset_name`
5、打开指定数据库
USE `db_name`
6、删除指定数据库
DROP DATABASE [IF EXISTS] `db_name`
7、显示当前打开的数据库名称
SELECT DATABASE()
8、查看上一步操作产生的警告信息
SHOW WARNINGS;
数据表的的操作
1、什么是表?
- 数据表示数据库最重要的组成部分之一,是其他对象的基础
- 数据表是存储数据的数据结构
- 数据表由行(row)和 列(column)构成的二维网络
- 数据表一定先有表结构,再有数据
- 数据表至少有一列,可以没有行或者多行
- 数据表名称要求唯一,而且不要包含特殊字符
2、如何创建数据表
CREATE TABLE [IF NOT EXISTS] table_name(字段名称 字段类型 [完整性约束条件] ...)
ENGINE=引擎名称 CHARSET='编码方式';
完整性约束条件
PRIMARY KEY
主键AUTO_INCREMENT
自增长FOREIGN KEY
外键NOT NULL
非空DEFAULT
默认值UNIQUE
唯一
3、查看数据库中的数据表以及表结构
# 查看数据库下的表
SHOW TABLES
# 查看指定表的表结构
DESC table_name
DESCRIBE table_name
SHOW COLUMNS FROM table_name
4、修改表结构
修改表名
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=值
5、删除数据表
DROP TABLE [IF EXISTS] table_name [, table_name...]
数据的操作(DML)
1、插入数据
# 不指定具体的字段名
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 条件]
2、更新数据
UPDATE table_name SET 字段名称=值, ...
[WHERE 条件]
[ORDER BY 字段名称]
[LIMIT 限制条数]
3、删除数据
DELETE FROM table_name
[WHERE 条件]
[ORDER BY 字段名称]
[LIMIT 限制条件]
# 彻底清空数据表
TRUNCATE [TABLE] table_name
查询数据操作(DQL)
1、查询记录
每一个表达式表示想要的一列,必须至少有一列,多个列之间用逗号分隔
*
表示所有列,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 限制显示条数]
]
2、WHERE 条件
将 WHERE
子句添加到 SELECT
语句中, 可以有条件地从表中选取数据
SELECT field1 [, field2,...fieldN] FROM table_name1, table_name2...
[WHERE condition1 [AND [OR]] condition2.....
3、查询结果分组
SELECT column_name [, function(column_name)]
FROM table_name
WHERE column_name operator value
GROUP BY column_name;
- 配合 GROUP_CONCAT() 得到分组详情
- 配合聚合函数
- 计算数量:COUNT()
- 求最大值:MAX()
- 求最小值:MIN()
- 求平均值:AVG()
- 求和: SUM()
- 配合WITH ROLLUP 记录上面所有记录的总和
4、HAVING 子句
通过 HAVING 子句对分组结果进行二次筛选
SELECT column_name [, function(column_name)]
FROM table_name
WHERE column_name operator value
HAVING conditions;
5、ORDER BY排序
通过 ORDER BY 对查询结果排序
SELECT field1, field2,...fieldN table_name1, table_name2...
ORDER BY field1, [field2...] [ASC [DESC]]
6、LIMIT限制查询结果显示条数
LIMIT 显示条数 / LIMIT 偏移量,显示条数
SELECT column_name [, function(column_name)]
FROM table_name
WHERE column_name operator value
LIMIT [offset_count,] limit_count;
7、正则表达式
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 次。 |