### 3 关系型数据库
**关系型数据库**: 由多张相互连接的二维表组成的数据库,就像Excel一样,由行和列组成的二维表。
特点:
- 使用表存储数据,格式统一,便于维护
- 使用SQL语句操作,标准统一,使用方便
- 数据存储在磁盘中,安全
代表:
- Mysql
- Oracle
### 4 MySQL概述
MySQL是一种广泛使用的开源关系型数据库管理系统(RDBMS),它是最流行的开源数据库之一。MySQL由瑞典的MySQL AB公司开发,后来被sun收购,最终被Oracle收购。MySQL以其开源免费、简单易用、高性能和可靠性而闻名。
> Oracle收费,性能稳定。
> ![1688696764272](MySQL基础.assets/1688696764272.png)
![1688697499100](MySQL基础.assets/1688697499100.png)
### 5 数据库操作
#### 1 连接数据库
- 打开navicate
- 点击连接
- 选择Mysql
- 填写数据库连接信息
- 确认连接(连接前也可以测试连接)
![1688698153979](MySQL基础.assets/1688698153979.png)
#### 2 创建数据库
- 选择数据库
- 右键选择新建数据库
- 填写数据库名,字符集,排序规则
![1688701876335](MySQL基础.assets/1688701876335.png)
>字符集:utf8mb4兼容性更好
>
>排序规则:默认utf8mb4_0900_ai_ci。 0900 指的是 Unicode 校对算法版本 , ai 指的是口音不敏感;也就是说,排序时 e,è,é,ê 和 ë 之间没有区别; ci 表示不区分大小写。也就是说,排序时 p 和 P 之间没有区别。
### 6 创建表
#### 1 数据类型
- 数字
| 类型 | 大小 | 描述 |
| ------------ | ------- | -------------- |
| TINYINT | 1 byte | 小整数值 |
| INT或INTEGER | 4 bytes | 整数值 |
| FLOAT | 4 bytes | 单精度浮点数值 |
| DECIMAL | | |
- 字符串
| 类型 | 大小 | 描述 |
| ------- | -------------- | ---------- |
| CHAR | 0-255 bytes | 定长字符串 |
| VARCHAR | 0-65535 bytes | 变长字符串 |
| TEXT | 0-65 535 bytes | 长文本数据 |
- 日期类型
| 类型 | 格式 | 描述 |
| --------- | ------------------- | ------------------------ |
| DATE | YYYY-MM-DD | 日期值 |
| TIME | HH:MM:SS | 时间值或持续时间 |
| YEAR | YYYY | 年份值 |
| DATETIME | YYYY-MM-DD HH:MM:SS | 混合日期和时间值 |
| TIMESTAMP | YYYY-MM-DD HH:MM:SS | 混合日期和时间值,时间戳 |
>CHAR和VARCHAR的区别:
>
>- **char**不论你实际存储了多少的字符,都会占用设置的**n**个字符空间 , 比如手机号码,性别,身份证号等
>- **varchar**它存储的长度并不固定, 实际使用多少就占用多少
>DATETIME和TIMESTAMP区别:
>
>TIMESTAMP: 1970-01-01 00:00:01.000000’到 2038-01-19 03:14:07.999999。
>
>DATETIME: 1000-01-01 00:00:00.000000到 9999-12-31 23:59:59.999999。
>
> 对于跨时区的业务,TIMESTAMP更为合适。
#### 2 创建表
- 打开数据库,右键表--新建表
- 填写字段名,类型,长度等信息
![1688780838555](MySQL基础.assets/1688780838555.png)
#### 3 删除表
- 直接将表删除
### 7 SQL通用语法
- SQL语句可以单行或多行书写,以分号结尾。
- SQL语句可以使用空格/缩进来增强语句的可读性
- 注释
- 单行注释:-- 注释内容 或 # 注释内容
- 多行注释: /* 注释内容 */
### 8 表操作
#### 1 添加数据(INSERT)
```markdown
# 给指定字段添加数据
insert into 表名 (字段1,字段2...) values (值1,值2...);
# 给全部字段添加数据
insert into 表名 values (值1,值2...);
# 批量添加数据
insert into 表名 (字段1,字段2...) values (值1,值2...),(值1,值2...),(值1,值2...);
insert into 表名 values (值1,值2...),(值1,值2...),(值1,值2...);
```
#### 2 修改数据(UPDATE)
```mariadb
update 表名 set 字段1=值1, 字段2=值2,...[where 条件]
```
>修改语句的条件可以有,也可以没有,如果没有条件,则会修改整张表的所有数据。
#### 3 删除数据(DELETE)
```sql
delete from 表名 [where 条件]
```
>DELETE 语句的条件可以有,也可以没有,如果没有条件,则会删除整张表的所有数据。
### 9 条件(where)
sql语句里,where后面跟条件
```markdown
# 运算符
=、!=、<>、<、<=、>、>=、
# 关键字
BETWEEN…AND、IN(set)、IS NULL、AND、OR、NOT
```