## 准备
1. 安装软件 PHPStudy
2. 安装 MySQL 8.0
3. 启动 MySQL 8.0 服务
4. 配置环境变量
5. 查看账号、密码
## 一般操作步骤
1. 连接 MySQL
```
mysql -h 127.0.0.1 -u root -p
```
## 库操作
1. 查看数据库
```
show databases;
```
2. 创建数据库
```
create database taobao;
```
3. 切换(使用数据库)
```
use taobao;
```
4. 删除库(删库跑路,三思而后删)
```
drop database taobao;
```
## 表
1. 查看表
```sql
show tables;
```
2. 创建表
```
create table 表名(
字段1名 字段1类型 注释,
字段2名 字段2类型 注释,
字段3名 字段3类型 注释,
字段4名 字段4类型 注释,
字段5名 字段5类型 注释
);
```
数据类型: int varchar(255)
```sql
create table student(
student_id int comment '学生ID',
student_name varchar(255) comment '学生姓名',
student_age int comment '学生年龄'
);
```
3. 查看表信息
```sql
desc student;
```
```sql
show create table student;
```
4. 删除表(三思而后删)
```sql
drop table student;
```
## 数据
1. 查询数据(建议: 按需查询)
```sql
select * from student;
```
2. 插入数据 (数量、位置、数据类型)
```sql
insert into student
(student_id, student_name, student_age) values
(1, '小甜甜', 18);
insert into student
(student_id, student_name, student_age) values
(2, '小萍萍', 19);
insert into student
(student_id, student_name, student_age) values
(2, '坤坤', 20);
insert into student
(student_id, student_name, student_age) values
(4, '坤坤', 22);
```
3. 条件查询 where
语法
```
select 字段1, 字段2, 字段3 from 表名 where 条件字段名 条件表达式 条件值;
```
```
select * from student where student_id = 1;
```
4. 条件查询 limit
```
select * from student where student_id = 1 limit 1;
```
5. 删除数据(1.查询数据(条件); 2. 一定要添加条件)
```
delete from student where student_id = 1 limit 1;
```
6. 修改数据(1.查询数据(条件); 2. 一定要添加条件)
语法
```
update 表名 set 字段名 = 新的值 where 条件字段名 = 条件字段值;
```
```sql
update 表名 set 字段名 = 新的值, 字段名 = 新的值, 字段名 = 新的值 where 条件字段名 = 条件字段值;
```
```
update student set student_id = 3 where student_name = '坤坤';
```
```sql
update student set student_id = 3 where student_name = '坤坤';
```
```sql
update student set student_name = "大坤", student_age=15 where student_id = 4;
```
## 添加数据
```sql
create table student(
student_id int comment '学生ID',
student_name varchar(255) comment '学生姓名',
student_age int comment '学生年龄'
);
```
1. 列出所有的字段
2. 字段值和字段名一一对应(数量、位置、类型)
```sql
insert into student
(student_id, student_name, student_age) values
(1, '小甜甜', 18);
```
字段名的顺序可以自由指定
```sql
insert into student (student_name,student_id, student_age) values( '小甜甜', 1, 18);
```
字段名的数量可以自由指定
```sql
insert into student (student_name,student_id) values( '小甜甜', 1);
```
可以一次性添加多条数据
```sql
insert into student (student_id, student_name, student_age) values(1, '小甜甜', 18);
insert into student (student_id, student_name, student_age) values(2, '小萍萍', 18);
insert into student (student_id, student_name, student_age) values(3, 'iKun', 18);
```
```sql
insert into student
(student_id, student_name, student_age)
values
(1, '小甜甜', 18),
(2, '小萍萍', 19),
(3, 'iKun', 20);
```
插入数据可以省略字段名
1. 不可改变字段值的顺序, 必须对应字段名的顺序
2. 字段值的数量必须和字段名的数量一致
```sql
insert into student values
(1, '小甜甜', 18),
(2, '小萍萍', 19),
(3, 'iKun', 20);
```
## 数据类型
- 数值
- 字符(串)
- 时间(日期)
### 数值-整数
tinyint 整型 1字节 -128 到 127 2^(nx8-1)
smallint 整型 2字节 -32768 到 32767 2^(2x8-1)
mediumint 整型 3字节 838 8608 2^(3x8-1)
int 整型 4字节 21 4748 3648 2^(4x8-1)
bigint 整型 922 3372 0368 5477 5808 8字节 2^(8x8-1)
无符号整型
tinyint 1字节 0 到 256 2^(nx8)
smallint 2字节 0 到 6 5536 2^(2x8)
mediumint 3字节 1677 7216 2^(3x8)
int 4字节 42 9496 7296 2^(4x8)
bigint 1844 6744 0737 0955 1616 8字节 2^(8x8)
### 数值-小数
float 单精度 4 字节
double 双精度 8 字节
desimal(M,D) 定点数类型
### 字符串
char(M) 0-255
varchar(M) 0-6 5535
text 0-6 5535
longtext 42 9496 7296
### 时间日期
date 日期 0000-00-00 9999-12-31
time 时间 00:00:00 18:24:32
datetime 日期时间 0000-00-00 00:00:00 9999-12-31 18:24:32
timestamps 时间戳
```sql
create table teacher(
teacher_id int unsigned comment '教师ID',
teacher_name varchar(50) comment "教师名",
teacher_salay float comment "教师月薪资",
teacher_register_time date comment "入职时间"
);
```
```sql
insert into teacher values
(666, "王老师", 1888.88, "2022-09-01");
```