From 6465a57054588aa15269f779b6ce65eece185cf0 Mon Sep 17 00:00:00 2001
From: wxin <15253413025@163.com>
Date: Tue, 11 Mar 2025 16:47:28 +0800
Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=20=E6=95=B0=E6=8D=AE?=
=?UTF-8?q?=E5=BA=93=E7=AE=A1=E7=90=86.md?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
数据库管理.md | 1906 ++++++++++++++++++++++++-------------------------
1 file changed, 953 insertions(+), 953 deletions(-)
diff --git a/数据库管理.md b/数据库管理.md
index 7eeeb55..294b7d5 100644
--- a/数据库管理.md
+++ b/数据库管理.md
@@ -1,953 +1,953 @@
-
数据库管理
-
-------
-
-## 一:数据类型
-
- 在MySQL数据库管理系统中,可以通过存储引擎来决定表的类型。同时,MySQL数据库管理系统也提供了数据类型决定表存储数据的类型。
-
-### 1. 数值类型
-
-**整数类型**
-
-整数类型:TINYINT SMALLINT MEDIUMINT INT BIGINT
-
-作用:用于存储用户的年龄、游戏的Level、经验值等
-
-
-
-**浮点数类型**
-
-浮点数类型:FLOAT DOUBLE
-
-作用:用于存储用户的身高、体重、薪水等
-
-
-
-```SQL
-float(5,3) # 5宽度 3精度
-注意:
- 宽度不算小数点
- 宽度-精度=整数
-
-案例:
-mysql> create database test;
-Query OK, 1 row affected (0.00 sec)
-
-mysql> use test
-Database changed
-mysql> create table t1(id float(6,2));
-Query OK, 0 rows affected (0.00 sec)
-
-mysql> insert into t1 values('2.22');
-Query OK, 1 row affected (0.02 sec)
-```
-
-**定点数类型**
-
-定点数类型:DEC
-
-作用:定点数在MySQL内部以字符串形式存储,比浮点数更精确,适合用来表示货币等精度高的数据
-
-**位类型**
-
-位类型:BIT
-
-作用:BIT(M)可以用来存放多位二进制数,M范围从1~64,如果不写默认为1位
-
-### 2. 字符串类型
-
-- CHAR系列:CHAR VARCHAR
-- TEXT系列:TINYTEXT TEXT MEDIUMTEXT LONGTEXT
-- BLOB系列:TINYBLOB BLOB MEDIUMBLOB LONGBLOB
-- BINARY系列:BINARY VARBINARY
-
-**枚举类型**
-
- 枚举类型:枚举列可以把一些不重复的字符串存储成一个预定义的集合
-
-```SQL
-mysql> create table enum_table(e ENUM('fish','apple','dog'));
-Query OK, 0 rows affected (0.01 sec)
-
-mysql> insert into enum_table(e) values('fish');
-Query OK, 1 row affected (0.01 sec)
-
-mysql> select * from enum_table;
-+------+
-| e |
-+------+
-| fish |
-+------+
-1 row in set (0.00 sec)
-
-mysql> insert into enum_table(e) values('nihao');
-ERROR 1265 (01000): Data truncated for column 'e' at row 1
-```
-
-**时间和日期类型**
-
-时间和日期类型:DATE、TIME、DATETIME、TIMESTAMP、YEAR
-
-作用:用于存储用户的注册时间,文章的发布时间,文章的更新时间,员工的入职时间等
-
-
-
-```SQL
-mysql> create table t2(
- -> id1 timestamp NOT NULL default CURRENT_TIMESTAMP,
- -> id2 datetime default NULL
- -> );
-Query OK, 0 rows affected (0.00 sec)
-
-mysql> insert into t2(id1) values('20250311104200');
-Query OK, 1 row affected (0.00 sec)
-
-mysql> select * from t2;
-+---------------------+------+
-| id1 | id2 |
-+---------------------+------+
-| 2025-03-11 10:42:00 | NULL |
-+---------------------+------+
-1 row in set (0.00 sec)
-
- timestamp 类型的列还有个特性:默认情况下,在 insert, update 数据时,timestamp 列会自动以当前时间(CURRENT_TIMESTAMP)填充/更新。“自动”的意思就是,你不去管它,MySQL 会替你去处理。
-扩展:
-mysql> select now();
-+---------------------+
-| now() |
-+---------------------+
-| 2025-03-11 10:42:44 |
-+---------------------+
-1 row in set (0.00 sec)
-```
-
-## 二:表操作
-
-**使用编辑器编辑指令**
-
-```SQL
-mysql> edit
-mysql> \e
-```
-
-**在mysql客户端内执行系统命令**
-
-```SQL
-mysql> system ls
-mysql> \! ls
-```
-
-
-
-### 1. 案例
-
-表:school.student1
-
-```
-字段 字段 字段
-id name sex age
-1 tom male 23 记录
-2 jack male 21 记录
-3 alice female 19 记录
-```
-
-语法:
-
-```SQL
-create table 表名(自定义)(
- 字段名1 类型[(宽度) 约束条件],
- 字段名2 类型[(宽度) 约束条件],
- 字段名3 类型[(宽度) 约束条件]
-)[存储引擎 字符集];
-
-1.在同一张表中,字段名是不能相同
-2.宽度和约束条件可选
-3.字段名和类型是必须的
-```
-
-创建库表:
-
-```SQL
-mysql> create database school;
-Query OK, 1 row affected (0.00 sec)
-
-mysql> use school
-Database changed
-mysql> create table student1(
- -> id int,
- -> name varchar(50),
- -> sex enum('m','f'),
- -> age int
- -> );
-Query OK, 0 rows affected (0.01 sec)
-```
-
-查看库:
-
-```SQL
-mysql> show tables;
-+------------------+
-| Tables_in_school |
-+------------------+
-| student1 |
-+------------------+
-1 row in set (0.00 sec)
-```
-
-插入语法:
-
-```SQL
-insert into 表名(字段1,字段2...) values(字段值列表...);
-```
-
-插入数据:
-
-```SQL
-mysql> insert into student1(id,name,sex,age) values(1,'wxin','m',26);
-Query OK, 1 row affected (0.01 sec)
-```
-
-查看表结构:
-
-```SQL
-mysql> desc student1;
-+-------+---------------+------+-----+---------+-------+
-| Field | Type | Null | Key | Default | Extra |
-+-------+---------------+------+-----+---------+-------+
-| id | int(11) | YES | | NULL | |
-| name | varchar(50) | YES | | NULL | |
-| sex | enum('m','f') | YES | | NULL | |
-| age | int(11) | YES | | NULL | |
-+-------+---------------+------+-----+---------+-------+
-4 rows in set (0.00 sec)
-
-
-mysql> show create table student1;
-mysql> show table status like 'student1' \G
-```
-
-查询数据:
-
-```SQL
-mysql> select id,name,sex,age from student1; //查询表中所有字段的值
-+------+------+------+------+
-| id | name | sex | age |
-+------+------+------+------+
-| 1 | wxin | m | 26 |
-+------+------+------+------+
-1 row in set (0.00 sec)
-
-mysql> select * from student1; //查询表中所有字段的值
-+------+------+------+------+
-| id | name | sex | age |
-+------+------+------+------+
-| 1 | wxin | m | 26 |
-+------+------+------+------+
-1 row in set (0.00 sec)
-
-mysql> select name,age from student1; //查询表中指定字段的值
-+------+------+
-| name | age |
-+------+------+
-| wxin | 26 |
-+------+------+
-1 row in set (0.00 sec)
-```
-
-扩展插入:
-
-```SQL
-mysql> insert into student1 values(2,'wyu','f',25),(3,'wyi','m',24),(4,'wbo','m',23); //顺序插入
-Query OK, 3 rows affected (0.00 sec)
-Records: 3 Duplicates: 0 Warnings: 0
-
-mysql> insert into student1(name,age) values('zhangsan',22),('lisi',21);
-Query OK, 2 rows affected (0.00 sec)
-Records: 2 Duplicates: 0 Warnings: 0
-```
-
-### 2. 案例
-
-表:school.student2
-
-```
- 字段名 数据类型
-编号 id int
-姓名 name varchar(50)
-出生年份 born_year year
-生日 birthday date
-上课时间 class_time time
-注册时间 reg_time datetime
-```
-
-创建表:
-
-```SQL
-mysql> create table student2(
- -> id int,
- -> name varchar(50),
- -> born_year year,
- -> birthday date,
- -> class_time time,
- -> reg_time datetime
- -> );
-Query OK, 0 rows affected (0.00 sec)
-```
-
-插入数据:
-
-```SQL
-mysql> insert into student2 values(1,'tom',now(),now(),now(),now());
-Query OK, 1 row affected, 1 warning (0.00 sec)
-
-mysql> insert into student2 values(2,'jack',1982,19821120,123000,20140415162545);
-Query OK, 1 row affected (0.00 sec)
-```
-
-表:school.student3
-
-```
-id id int
-姓名 name varchar(50)
-性别 sex enum('male','female')
-爱好 hobby set('music','book','game','disc')
-```
-
-创建表:
-
-```SQL
-mysql> create table student3(
- -> id int,
- -> name varchar(50),
- -> sex enum('m','f'),
- -> hobby set('music','book','game','disc')
- -> );
-Query OK, 0 rows affected (0.00 sec)
-```
-
-查看表结构:
-
-```SQL
-mysql> desc student3;
-+-------+-----------------------------------+------+-----+---------+-------+
-| Field | Type | Null | Key | Default | Extra |
-+-------+-----------------------------------+------+-----+---------+-------+
-| id | int(11) | YES | | NULL | |
-| name | varchar(50) | YES | | NULL | |
-| sex | enum('m','f') | YES | | NULL | |
-| hobby | set('music','book','game','disc') | YES | | NULL | |
-+-------+-----------------------------------+------+-----+---------+-------+
-4 rows in set (0.00 sec)
-
-mysql> show create table student3\G
-*************************** 1. row ***************************
- Table: student3
-Create Table: CREATE TABLE `student3` (
- `id` int(11) DEFAULT NULL,
- `name` varchar(50) DEFAULT NULL,
- `sex` enum('m','f') DEFAULT NULL,
- `hobby` set('music','book','game','disc') DEFAULT NULL
-) ENGINE=InnoDB DEFAULT CHARSET=utf8
-1 row in set (0.00 sec)
-```
-
-插入数据:
-
-```SQL
-mysql> insert into student3 values(1,'tom','m','book,game');
-Query OK, 1 row affected (0.00 sec)
-mysql> insert into student3 values(2,'jack','m','film');
-ERROR 1265 (01000): Data truncated for column 'hobby' at row 1
-```
-
-注意:
-
-DESCRIBE查看表结构
-
-```SQL
-DESCRIBE 表名;
-DESC 表名;
-```
-
-查看表详细结构:
-
-```SQL
-SHOW CREATE TABLE 表名;
-```
-
-
-
-## 三:表完整性约束
-
-### 1. 作用
-
- 用于保证数据的完整性和一致性
-
-### 2. 约束条件
-
-- RPIMARY KEY(PK):标识该字段为该表的主键,可以唯一的标识记录,不可以为空 UNIQUE+NOT NULL
-- FOREIGN KEY(FK):标识该字段为该表的外键,实现表与表(父表主键/子表1外键/子表2外键)之间的关联
-- NOT NULL:标识该字段不能为空
-- UNIQUE KEY(UK):标识该字段的值是唯一的,可以为空,一个表中可以有多个UNIQUE KEY
-- AUTO_INCREMENT:标识该字段的值自动增长(整数类型,而且为主键)
-- DEFAULT:该字段设置默认值
-
-注意:
-
-- 是否允许为空,默认NULL,可设置NOT NULL,字段不允许为空,必须赋值
-- 字段是否有默认值,缺省的默认值是NULL,如果插入记录时不给字段赋值,此字段使用默认值
-
-```SQL
-mysql> sex enum('male','female') not null default 'male'
-mysql> age int unsigned NOT NULL default 20
-必须为正值(无符号) 不允许为空 默认是20
-```
-
- 是否是key 主键 primary key 外键 forengn key
-
-### 3. NOT NULL
-
-表:school.student4
-
-创建表:
-
-```SQL
-mysql> create table student4(
- -> id int not null,
- -> name varchar(50) not null,
- -> sex enum('m','f') default 'm' not null,
- -> age int unsigned default 18 not null,
- -> hobby set('music','disc','dance','book') default 'book,dance'
- -> );
-Query OK, 0 rows affected (0.01 sec)
-```
-
-插入数据:(注意观察查询到的数据)
-
-```SQL
-mysql> insert into student4(id,name) values(2,'robin');
-Query OK, 1 row affected (0.00 sec)
-
-mysql> select * from student4;
-+----+-------+-----+-----+------------+
-| id | name | sex | age | hobby |
-+----+-------+-----+-----+------------+
-| 2 | robin | m | 18 | dance,book |
-+----+-------+-----+-----+------------+
-1 row in set (0.00 sec)
-```
-
-注意报错的原因:
-
-```SQL
-mysql> insert into student4 values(3,null,'m',40,'book');
-ERROR 1048 (23000): Column 'name' cannot be null
-```
-
-### 4. 唯一约束
-
-作用:
-
- MySQL索引的建立对于MySQL的高效运行是很重要的,索引可以大大提高MySQL的检索速度
-
-表:company.department
-
-创建表:
-
-```SQL
-mysql> create database company;
-Query OK, 1 row affected (0.00 sec)
-
-mysql> create table company.department1(
- -> dept_id int,
- -> dept_name varchar(30) UNIQUE,
- -> comment varchar(50)
- -> );
-Query OK, 0 rows affected (0.00 sec)
-```
-
-查看表结构:
-
-```SQL
-mysql> desc company.department1;
-+-----------+-------------+------+-----+---------+-------+
-| Field | Type | Null | Key | Default | Extra |
-+-----------+-------------+------+-----+---------+-------+
-| dept_id | int(11) | YES | | NULL | |
-| dept_name | varchar(30) | YES | UNI | NULL | |
-| comment | varchar(50) | YES | | NULL | |
-+-----------+-------------+------+-----+---------+-------+
-3 rows in set (0.00 sec)
-```
-
-数据插入:(注意查看插入数据时的提示)
-
-```SQL
-mysql> insert into company.department1 values(1,'zhangsan','hr');
-Query OK, 1 row affected (0.00 sec)
-
-mysql> insert into company.department1 values(1,'zhangsan','hr');
-ERROR 1062 (23000): Duplicate entry 'zhangsan' for key 'dept_name'
-```
-
-### 5. 主键约束
-
-注意:
-
- primary key字段的值是不允许重复,且不允许不NULL(UNIQUE + NOT NULL)
-
-表:school.student6
-
-创建表:
-
-```SQL
-mysql> create table school.student6(
- -> id int primary key not null auto_increment,
- -> name varchar(50) not null,
- -> sex enum('m','f') not null default 'm',
- -> age int not null default 18
- -> );
-Query OK, 0 rows affected (0.01 sec)
-```
-
-插入数据:
-
-```SQL
-mysql> insert into school.student6 values (1,'alice','f',22);
-Query OK, 1 row affected (0.00 sec)
-
-mysql> insert into school.student6(name,sex,age) values ('jack','m',19),('tom','m',23);
-Query OK, 2 rows affected (0.00 sec)
-Records: 2 Duplicates: 0 Warnings: 0
-
-mysql> select * from school.student6;
-+----+-------+-----+-----+
-| id | name | sex | age |
-+----+-------+-----+-----+
-| 1 | alice | f | 22 |
-| 2 | jack | m | 19 |
-| 3 | tom | m | 23 |
-+----+-------+-----+-----+
-3 rows in set (0.00 sec)
-```
-
-
-
-## 四:修改表
-
-语法格式:
-
-- 修改表名
-
- 1. alter table 表名 rename 新表名
- 2. rename table 新表名 to 表名
-
-- 增加字段
-
- 1. alter table 表名
-
- add 字段名 数据类型 [完整性约束条件...],
-
- add 字段名 数据类型 [完整性约束条件...];
-
- 2. alter table 表名 add 字段名 数据类型 [完整性约束条件...] after 字段名;
-
-- 删除字段:alter table 表名 drop 字段名
-
-- 修改字段
-
- 1. alter table 表名 modify 字段名 数据类型 [完整性约束条件...];
- 2. alter table 表名 change 旧字段名 新字段名 旧数据类型 [完整性约束条件...];
- 3. alter table 表名 change 旧字段名 新字段名 新数据类型 [完整性数据约束...]:
-
-### 1. 修改数据库引擎
-
-```SQL
-mysql> alter table student2 engine=myisam;
-Query OK, 2 rows affected (0.01 sec)
-Records: 2 Duplicates: 0 Warnings: 0
-//engine=innodb|memory|....
-```
-
-### 2. 添加字段
-
-```SQL
-mysql> create table student5(id int);
-Query OK, 0 rows affected (0.01 sec)
-
-mysql> alter table student5 add name varchar(30) not null,add age int not null default 22;
-Query OK, 0 rows affected (0.01 sec)
-Records: 0 Duplicates: 0 Warnings: 0
-
-mysql> alter table student5 add stu_num int not null after name;
-Query OK, 0 rows affected (0.01 sec)
-Records: 0 Duplicates: 0 Warnings: 0
-
-mysql> alter table student5 add sex enum('m','f') default 'm' first;
-Query OK, 0 rows affected (0.01 sec)
-Records: 0 Duplicates: 0 Warnings: 0
-```
-
-### 3. 删除字段
-
-```SQL
-mysql> alter table student5 drop sex;
-Query OK, 0 rows affected (0.01 sec)
-Records: 0 Duplicates: 0 Warnings: 0
-```
-
-### 4. 修改字段类型
-
-```SQL
-mysql> desc student5;
-+---------+-------------+------+-----+---------+-------+
-| Field | Type | Null | Key | Default | Extra |
-+---------+-------------+------+-----+---------+-------+
-| id | int(11) | YES | | NULL | |
-| name | varchar(30) | NO | | NULL | |
-| stu_num | int(11) | NO | | NULL | |
-| age | int(11) | NO | | 22 | |
-+---------+-------------+------+-----+---------+-------+
-4 rows in set (0.00 sec)
-
-mysql> alter table student5 modify age tinyint not null;
-Query OK, 0 rows affected (0.01 sec)
-Records: 0 Duplicates: 0 Warnings: 0
-
-mysql> desc student5;
-+---------+-------------+------+-----+---------+-------+
-| Field | Type | Null | Key | Default | Extra |
-+---------+-------------+------+-----+---------+-------+
-| id | int(11) | YES | | NULL | |
-| name | varchar(30) | NO | | NULL | |
-| stu_num | int(11) | NO | | NULL | |
-| age | tinyint(4) | NO | | NULL | |
-+---------+-------------+------+-----+---------+-------+
-4 rows in set (0.01 sec)
-
-mysql> alter table student5 modify id int not null primary key;
-Query OK, 0 rows affected (0.01 sec)
-Records: 0 Duplicates: 0 Warnings: 0
-
-mysql> desc student5;
-+---------+-------------+------+-----+---------+-------+
-| Field | Type | Null | Key | Default | Extra |
-+---------+-------------+------+-----+---------+-------+
-| id | int(11) | NO | PRI | NULL | |
-| name | varchar(30) | NO | | NULL | |
-| stu_num | int(11) | NO | | NULL | |
-| age | tinyint(4) | NO | | NULL | |
-+---------+-------------+------+-----+---------+-------+
-4 rows in set (0.00 sec)
-```
-
-### 5. 增加约束
-
-```SQL
-mysql> desc student5;
-+---------+-------------+------+-----+---------+-------+
-| Field | Type | Null | Key | Default | Extra |
-+---------+-------------+------+-----+---------+-------+
-| id | int(11) | NO | PRI | NULL | |
-| name | varchar(30) | NO | | NULL | |
-| stu_num | int(11) | NO | | NULL | |
-| age | tinyint(4) | NO | | NULL | |
-+---------+-------------+------+-----+---------+-------+
-4 rows in set (0.00 sec)
-
-mysql> alter table student5 modify id int not null auto_increment;
-Query OK, 0 rows affected (0.01 sec)
-Records: 0 Duplicates: 0 Warnings: 0
-
-mysql> desc student5; +---------+-------------+------+-----+---------+----------------+
-| Field | Type | Null | Key | Default | Extra |
-+---------+-------------+------+-----+---------+----------------+
-| id | int(11) | NO | PRI | NULL | auto_increment |
-| name | varchar(30) | NO | | NULL | |
-| stu_num | int(11) | NO | | NULL | |
-| age | tinyint(4) | NO | | NULL | |
-+---------+-------------+------+-----+---------+----------------+
-4 rows in set (0.00 sec)
-```
-
-### 6. 增加主键
-
-```SQL
-mysql> desc student1;
-+-------+---------------+------+-----+---------+-------+
-| Field | Type | Null | Key | Default | Extra |
-+-------+---------------+------+-----+---------+-------+
-| id | int(11) | YES | | NULL | |
-| name | varchar(50) | YES | | NULL | |
-| sex | enum('m','f') | YES | | NULL | |
-| age | int(11) | YES | | NULL | |
-+-------+---------------+------+-----+---------+-------+
-4 rows in set (0.00 sec)
-
-mysql> alter table student1 add primary key(id);
-Query OK, 0 rows affected (0.03 sec)
-Records: 0 Duplicates: 0 Warnings: 0
-
-mysql> desc student1;
-+-------+---------------+------+-----+---------+-------+
-| Field | Type | Null | Key | Default | Extra |
-+-------+---------------+------+-----+---------+-------+
-| id | int(11) | NO | PRI | NULL | |
-| name | varchar(50) | YES | | NULL | |
-| sex | enum('m','f') | YES | | NULL | |
-| age | int(11) | YES | | NULL | |
-+-------+---------------+------+-----+---------+-------+
-4 rows in set (0.00 sec)
-```
-
-### 7. 修改主键和自增
-
-```SQL
-mysql> alter table student1 modify id int auto_increment;
-Query OK, 4 rows affected (0.00 sec)
-Records: 4 Duplicates: 0 Warnings: 0
-
-mysql> desc student1;
-+-------+---------------+------+-----+---------+----------------+
-| Field | Type | Null | Key | Default | Extra |
-+-------+---------------+------+-----+---------+----------------+
-| id | int(11) | NO | PRI | NULL | auto_increment |
-| name | varchar(50) | YES | | NULL | |
-| sex | enum('m','f') | YES | | NULL | |
-| age | int(11) | YES | | NULL | |
-+-------+---------------+------+-----+---------+----------------+
-4 rows in set (0.00 sec)
-```
-
-### 8. 删除主键
-
-```SQL
-mysql> desc student5;
-+---------+-------------+------+-----+---------+----------------+
-| Field | Type | Null | Key | Default | Extra |
-+---------+-------------+------+-----+---------+----------------+
-| id | int(11) | NO | PRI | NULL | auto_increment |
-| name | varchar(30) | NO | | NULL | |
-| stu_num | int(11) | NO | | NULL | |
-| age | tinyint(4) | NO | | NULL | |
-+---------+-------------+------+-----+---------+----------------+
-4 rows in set (0.00 sec)
-
-mysql> alter table student5 drop primary key;
-ERROR 1075 (42000): Incorrect table definition; there can be only one auto column and it must be defined as a key
-mysql> alter table student5 modify id int not null;
-Query OK, 0 rows affected (0.01 sec)
-Records: 0 Duplicates: 0 Warnings: 0
-
-mysql> desc student5;
-+---------+-------------+------+-----+---------+-------+
-| Field | Type | Null | Key | Default | Extra |
-+---------+-------------+------+-----+---------+-------+
-| id | int(11) | NO | PRI | NULL | |
-| name | varchar(30) | NO | | NULL | |
-| stu_num | int(11) | NO | | NULL | |
-| age | tinyint(4) | NO | | NULL | |
-+---------+-------------+------+-----+---------+-------+
-4 rows in set (0.00 sec)
-```
-
-### 9. 复制表
-
-复制表结构+记录 (key不会复制: 主键、外键和索引)复制表结构/记录+表结构,不会将Key复制
-
-```SQL
-mysql> create table new_service select * from service;
-```
-
-只复制表结构
-
-```SQL
-mysql> create table new1_service select * from service where 1=2; //条件为假,查不到任何记录
-```
-
-可以复制主键,只复制表结构
-
-```SQL
-mysql> create table t4 like employees;
-```
-
-### 10. 删除表
-
-```SQL
-mysql> DROP TABLE 表名;
-
-mysql> show tables;
-+------------------+
-| Tables_in_school |
-+------------------+
-| student1 |
-| student2 |
-| student3 |
-| student4 |
-| student5 |
-| student6 |
-+------------------+
-6 rows in set (0.00 sec)
-
-mysql> drop table student5;
-Query OK, 0 rows affected (0.00 sec)
-
-mysql> show tables;
-+------------------+
-| Tables_in_school |
-+------------------+
-| student1 |
-| student2 |
-| student3 |
-| student4 |
-| student6 |
-+------------------+
-5 rows in set (0.00 sec)
-```
-
-### 11. 修改数据表中字段的值
-
-语法:
-
-update 表名 set 列名=值 where 条件
-
-```SQL
-mysql> update student set name='123' where id=1;
-```
-
-### 12. 删除某一行
-
-语法:
-
-delete from 表名 where id = 1
-
-```SQL
-mysql> delete from type where id=1;
-```
-
-## 五:库操作
-
-### 1. 简介
-
- 系统自带库的含义及作用
-
-```SQL
-mysql> show databases;
-+--------------------+
-| Database |
-+--------------------+
-| information_schema |
-| mysql |
-| performance_schema |
-| sys |
-+--------------------+
-7 rows in set (0.00 sec)
-```
-
-- information_schema:虚拟库,主要存储了系统中的一些数据库对象的信息,例如用户表信息、列信息、权限信息、字符信息等
-- performance_schema:主要存储数据库服务器的性能参数
-- mysql:授权库,主要存储系统用户的权限信息
-- sys:主要存储数据库服务器的性能参数
-
-注意:information_schema
-
- SCHEMATA 存放的是系统中的库
-
-```SQL
-mysql> select * from information_schema.SCHEMATA;
-+--------------+--------------------+----------------------------+------------------------+----------+
-| CATALOG_NAME | SCHEMA_NAME | DEFAULT_CHARACTER_SET_NAME | DEFAULT_COLLATION_NAME | SQL_PATH |
-+--------------+--------------------+----------------------------+------------------------+----------+
-| def | information_schema | utf8 | utf8_general_ci | NULL |
-| def | company | utf8 | utf8_general_ci | NULL |
-| def | mysql | utf8 | utf8_general_ci | NULL |
-| def | performance_schema | utf8 | utf8_general_ci | NULL |
-| def | school | utf8 | utf8_general_ci | NULL |
-| def | sys | utf8 | utf8_general_ci | NULL |
-| def | test | utf8 | utf8_general_ci | NULL |
-+--------------+--------------------+----------------------------+------------------------+----------+
-7 rows in set (0.00 sec)
-
-目录_名称
-实际库_名称
-默认_字符_设置_名称
-默认_分类_名称
-```
-
-TABLES 存储表名
-
-```SQL
-mysql> select * from information_schema.TABLES\G
-*************************** 1. row ***************************
- TABLE_CATALOG: def
- TABLE_SCHEMA: information_schema
- TABLE_NAME: CHARACTER_SETS
- TABLE_TYPE: SYSTEM VIEW
- ENGINE: MEMORY
- VERSION: 10
- ROW_FORMAT: Fixed
- TABLE_ROWS: NULL
- AVG_ROW_LENGTH: 384
- DATA_LENGTH: 0
-MAX_DATA_LENGTH: 16434816
- INDEX_LENGTH: 0
- DATA_FREE: 0
- AUTO_INCREMENT: NULL
- CREATE_TIME: 2025-03-11 12:37:46
- UPDATE_TIME: NULL
- CHECK_TIME: NULL
-TABLE_COLLATION: utf8_general_ci
- CHECKSUM: NULL
- CREATE_OPTIONS: max_rows=43690
- TABLE_COMMENT:
-```
-
-
-
-### 2. 创建库
-
-方案一:交互式操作
-
-```SQL
-mysql> create database wxin;
-Query OK, 1 row affected (0.00 sec)
-```
-
-方案二:非交互式
-
-```bash
-[root@rpm mysql]# ./bin/mysql -uroot -p'Wfahui@3123' -e "create database wxin";
-```
-
-数据库命名规则:
-
-- 区分大小写
-- 唯一性
-- 不能使用关键字如 create select
-- 不能单独使用数字
-
-**sql语句结尾**
-
- 每条sql语句都要以;结尾,但是如果列比较多,想看的清楚一点,可以以\G结尾
-
-### 3. 查看数据库
-
-```SQL
-mysql> show databases;
-mysql> show create database wxin;
-mysql> select database(); 查看当前所在的库
-```
-
-### 4.切换数据库
-
-```SQL
-mysql> use wxin
-```
-
-### 5. 删除数据库
-
-```SQL
-mysql> DROP DATABASE 数据库名;
-```
-
+数据库管理
+
+------
+
+## 一:数据类型
+
+ 在MySQL数据库管理系统中,可以通过存储引擎来决定表的类型。同时,MySQL数据库管理系统也提供了数据类型决定表存储数据的类型。
+
+### 1. 数值类型
+
+**整数类型**
+
+整数类型:TINYINT SMALLINT MEDIUMINT INT BIGINT
+
+作用:用于存储用户的年龄、游戏的Level、经验值等
+
+
+
+**浮点数类型**
+
+浮点数类型:FLOAT DOUBLE
+
+作用:用于存储用户的身高、体重、薪水等
+
+
+
+```SQL
+float(5,3) # 5宽度 3精度
+注意:
+ 宽度不算小数点
+ 宽度-精度=整数
+
+案例:
+mysql> create database test;
+Query OK, 1 row affected (0.00 sec)
+
+mysql> use test
+Database changed
+mysql> create table t1(id float(6,2));
+Query OK, 0 rows affected (0.00 sec)
+
+mysql> insert into t1 values('2.22');
+Query OK, 1 row affected (0.02 sec)
+```
+
+**定点数类型**
+
+定点数类型:DEC
+
+作用:定点数在MySQL内部以字符串形式存储,比浮点数更精确,适合用来表示货币等精度高的数据
+
+**位类型**
+
+位类型:BIT
+
+作用:BIT(M)可以用来存放多位二进制数,M范围从1~64,如果不写默认为1位
+
+### 2. 字符串类型
+
+- CHAR系列:CHAR VARCHAR
+- TEXT系列:TINYTEXT TEXT MEDIUMTEXT LONGTEXT
+- BLOB系列:TINYBLOB BLOB MEDIUMBLOB LONGBLOB
+- BINARY系列:BINARY VARBINARY
+
+**枚举类型**
+
+ 枚举类型:枚举列可以把一些不重复的字符串存储成一个预定义的集合
+
+```SQL
+mysql> create table enum_table(e ENUM('fish','apple','dog'));
+Query OK, 0 rows affected (0.01 sec)
+
+mysql> insert into enum_table(e) values('fish');
+Query OK, 1 row affected (0.01 sec)
+
+mysql> select * from enum_table;
++------+
+| e |
++------+
+| fish |
++------+
+1 row in set (0.00 sec)
+
+mysql> insert into enum_table(e) values('nihao');
+ERROR 1265 (01000): Data truncated for column 'e' at row 1
+```
+
+**时间和日期类型**
+
+时间和日期类型:DATE、TIME、DATETIME、TIMESTAMP、YEAR
+
+作用:用于存储用户的注册时间,文章的发布时间,文章的更新时间,员工的入职时间等
+
+
+
+```SQL
+mysql> create table t2(
+ -> id1 timestamp NOT NULL default CURRENT_TIMESTAMP,
+ -> id2 datetime default NULL
+ -> );
+Query OK, 0 rows affected (0.00 sec)
+
+mysql> insert into t2(id1) values('20250311104200');
+Query OK, 1 row affected (0.00 sec)
+
+mysql> select * from t2;
++---------------------+------+
+| id1 | id2 |
++---------------------+------+
+| 2025-03-11 10:42:00 | NULL |
++---------------------+------+
+1 row in set (0.00 sec)
+
+ timestamp 类型的列还有个特性:默认情况下,在 insert, update 数据时,timestamp 列会自动以当前时间(CURRENT_TIMESTAMP)填充/更新。“自动”的意思就是,你不去管它,MySQL 会替你去处理。
+扩展:
+mysql> select now();
++---------------------+
+| now() |
++---------------------+
+| 2025-03-11 10:42:44 |
++---------------------+
+1 row in set (0.00 sec)
+```
+
+## 二:表操作
+
+**使用编辑器编辑指令**
+
+```SQL
+mysql> edit
+mysql> \e
+```
+
+**在mysql客户端内执行系统命令**
+
+```SQL
+mysql> system ls
+mysql> \! ls
+```
+
+
+
+### 1. 案例
+
+表:school.student1
+
+```
+字段 字段 字段
+id name sex age
+1 tom male 23 记录
+2 jack male 21 记录
+3 alice female 19 记录
+```
+
+语法:
+
+```SQL
+create table 表名(自定义)(
+ 字段名1 类型[(宽度) 约束条件],
+ 字段名2 类型[(宽度) 约束条件],
+ 字段名3 类型[(宽度) 约束条件]
+)[存储引擎 字符集];
+
+1.在同一张表中,字段名是不能相同
+2.宽度和约束条件可选
+3.字段名和类型是必须的
+```
+
+创建库表:
+
+```SQL
+mysql> create database school;
+Query OK, 1 row affected (0.00 sec)
+
+mysql> use school
+Database changed
+mysql> create table student1(
+ -> id int,
+ -> name varchar(50),
+ -> sex enum('m','f'),
+ -> age int
+ -> );
+Query OK, 0 rows affected (0.01 sec)
+```
+
+查看库:
+
+```SQL
+mysql> show tables;
++------------------+
+| Tables_in_school |
++------------------+
+| student1 |
++------------------+
+1 row in set (0.00 sec)
+```
+
+插入语法:
+
+```SQL
+insert into 表名(字段1,字段2...) values(字段值列表...);
+```
+
+插入数据:
+
+```SQL
+mysql> insert into student1(id,name,sex,age) values(1,'wxin','m',26);
+Query OK, 1 row affected (0.01 sec)
+```
+
+查看表结构:
+
+```SQL
+mysql> desc student1;
++-------+---------------+------+-----+---------+-------+
+| Field | Type | Null | Key | Default | Extra |
++-------+---------------+------+-----+---------+-------+
+| id | int(11) | YES | | NULL | |
+| name | varchar(50) | YES | | NULL | |
+| sex | enum('m','f') | YES | | NULL | |
+| age | int(11) | YES | | NULL | |
++-------+---------------+------+-----+---------+-------+
+4 rows in set (0.00 sec)
+
+
+mysql> show create table student1;
+mysql> show table status like 'student1' \G
+```
+
+查询数据:
+
+```SQL
+mysql> select id,name,sex,age from student1; //查询表中所有字段的值
++------+------+------+------+
+| id | name | sex | age |
++------+------+------+------+
+| 1 | wxin | m | 26 |
++------+------+------+------+
+1 row in set (0.00 sec)
+
+mysql> select * from student1; //查询表中所有字段的值
++------+------+------+------+
+| id | name | sex | age |
++------+------+------+------+
+| 1 | wxin | m | 26 |
++------+------+------+------+
+1 row in set (0.00 sec)
+
+mysql> select name,age from student1; //查询表中指定字段的值
++------+------+
+| name | age |
++------+------+
+| wxin | 26 |
++------+------+
+1 row in set (0.00 sec)
+```
+
+扩展插入:
+
+```SQL
+mysql> insert into student1 values(2,'wyu','f',25),(3,'wyi','m',24),(4,'wbo','m',23); //顺序插入
+Query OK, 3 rows affected (0.00 sec)
+Records: 3 Duplicates: 0 Warnings: 0
+
+mysql> insert into student1(name,age) values('zhangsan',22),('lisi',21);
+Query OK, 2 rows affected (0.00 sec)
+Records: 2 Duplicates: 0 Warnings: 0
+```
+
+### 2. 案例
+
+表:school.student2
+
+```
+ 字段名 数据类型
+编号 id int
+姓名 name varchar(50)
+出生年份 born_year year
+生日 birthday date
+上课时间 class_time time
+注册时间 reg_time datetime
+```
+
+创建表:
+
+```SQL
+mysql> create table student2(
+ -> id int,
+ -> name varchar(50),
+ -> born_year year,
+ -> birthday date,
+ -> class_time time,
+ -> reg_time datetime
+ -> );
+Query OK, 0 rows affected (0.00 sec)
+```
+
+插入数据:
+
+```SQL
+mysql> insert into student2 values(1,'tom',now(),now(),now(),now());
+Query OK, 1 row affected, 1 warning (0.00 sec)
+
+mysql> insert into student2 values(2,'jack',1982,19821120,123000,20140415162545);
+Query OK, 1 row affected (0.00 sec)
+```
+
+表:school.student3
+
+```
+id id int
+姓名 name varchar(50)
+性别 sex enum('male','female')
+爱好 hobby set('music','book','game','disc')
+```
+
+创建表:
+
+```SQL
+mysql> create table student3(
+ -> id int,
+ -> name varchar(50),
+ -> sex enum('m','f'),
+ -> hobby set('music','book','game','disc')
+ -> );
+Query OK, 0 rows affected (0.00 sec)
+```
+
+查看表结构:
+
+```SQL
+mysql> desc student3;
++-------+-----------------------------------+------+-----+---------+-------+
+| Field | Type | Null | Key | Default | Extra |
++-------+-----------------------------------+------+-----+---------+-------+
+| id | int(11) | YES | | NULL | |
+| name | varchar(50) | YES | | NULL | |
+| sex | enum('m','f') | YES | | NULL | |
+| hobby | set('music','book','game','disc') | YES | | NULL | |
++-------+-----------------------------------+------+-----+---------+-------+
+4 rows in set (0.00 sec)
+
+mysql> show create table student3\G
+*************************** 1. row ***************************
+ Table: student3
+Create Table: CREATE TABLE `student3` (
+ `id` int(11) DEFAULT NULL,
+ `name` varchar(50) DEFAULT NULL,
+ `sex` enum('m','f') DEFAULT NULL,
+ `hobby` set('music','book','game','disc') DEFAULT NULL
+) ENGINE=InnoDB DEFAULT CHARSET=utf8
+1 row in set (0.00 sec)
+```
+
+插入数据:
+
+```SQL
+mysql> insert into student3 values(1,'tom','m','book,game');
+Query OK, 1 row affected (0.00 sec)
+mysql> insert into student3 values(2,'jack','m','film');
+ERROR 1265 (01000): Data truncated for column 'hobby' at row 1
+```
+
+注意:
+
+DESCRIBE查看表结构
+
+```SQL
+DESCRIBE 表名;
+DESC 表名;
+```
+
+查看表详细结构:
+
+```SQL
+SHOW CREATE TABLE 表名;
+```
+
+
+
+## 三:表完整性约束
+
+### 1. 作用
+
+ 用于保证数据的完整性和一致性
+
+### 2. 约束条件
+
+- RPIMARY KEY(PK):标识该字段为该表的主键,可以唯一的标识记录,不可以为空 UNIQUE+NOT NULL
+- FOREIGN KEY(FK):标识该字段为该表的外键,实现表与表(父表主键/子表1外键/子表2外键)之间的关联
+- NOT NULL:标识该字段不能为空
+- UNIQUE KEY(UK):标识该字段的值是唯一的,可以为空,一个表中可以有多个UNIQUE KEY
+- AUTO_INCREMENT:标识该字段的值自动增长(整数类型,而且为主键)
+- DEFAULT:该字段设置默认值
+
+注意:
+
+- 是否允许为空,默认NULL,可设置NOT NULL,字段不允许为空,必须赋值
+- 字段是否有默认值,缺省的默认值是NULL,如果插入记录时不给字段赋值,此字段使用默认值
+
+```SQL
+mysql> sex enum('male','female') not null default 'male'
+mysql> age int unsigned NOT NULL default 20
+必须为正值(无符号) 不允许为空 默认是20
+```
+
+ 是否是key 主键 primary key 外键 forengn key
+
+### 3. NOT NULL
+
+表:school.student4
+
+创建表:
+
+```SQL
+mysql> create table student4(
+ -> id int not null,
+ -> name varchar(50) not null,
+ -> sex enum('m','f') default 'm' not null,
+ -> age int unsigned default 18 not null,
+ -> hobby set('music','disc','dance','book') default 'book,dance'
+ -> );
+Query OK, 0 rows affected (0.01 sec)
+```
+
+插入数据:(注意观察查询到的数据)
+
+```SQL
+mysql> insert into student4(id,name) values(2,'robin');
+Query OK, 1 row affected (0.00 sec)
+
+mysql> select * from student4;
++----+-------+-----+-----+------------+
+| id | name | sex | age | hobby |
++----+-------+-----+-----+------------+
+| 2 | robin | m | 18 | dance,book |
++----+-------+-----+-----+------------+
+1 row in set (0.00 sec)
+```
+
+注意报错的原因:
+
+```SQL
+mysql> insert into student4 values(3,null,'m',40,'book');
+ERROR 1048 (23000): Column 'name' cannot be null
+```
+
+### 4. 唯一约束
+
+作用:
+
+ MySQL索引的建立对于MySQL的高效运行是很重要的,索引可以大大提高MySQL的检索速度
+
+表:company.department
+
+创建表:
+
+```SQL
+mysql> create database company;
+Query OK, 1 row affected (0.00 sec)
+
+mysql> create table company.department1(
+ -> dept_id int,
+ -> dept_name varchar(30) UNIQUE,
+ -> comment varchar(50)
+ -> );
+Query OK, 0 rows affected (0.00 sec)
+```
+
+查看表结构:
+
+```SQL
+mysql> desc company.department1;
++-----------+-------------+------+-----+---------+-------+
+| Field | Type | Null | Key | Default | Extra |
++-----------+-------------+------+-----+---------+-------+
+| dept_id | int(11) | YES | | NULL | |
+| dept_name | varchar(30) | YES | UNI | NULL | |
+| comment | varchar(50) | YES | | NULL | |
++-----------+-------------+------+-----+---------+-------+
+3 rows in set (0.00 sec)
+```
+
+数据插入:(注意查看插入数据时的提示)
+
+```SQL
+mysql> insert into company.department1 values(1,'zhangsan','hr');
+Query OK, 1 row affected (0.00 sec)
+
+mysql> insert into company.department1 values(1,'zhangsan','hr');
+ERROR 1062 (23000): Duplicate entry 'zhangsan' for key 'dept_name'
+```
+
+### 5. 主键约束
+
+注意:
+
+ primary key字段的值是不允许重复,且不允许不NULL(UNIQUE + NOT NULL)
+
+表:school.student6
+
+创建表:
+
+```SQL
+mysql> create table school.student6(
+ -> id int primary key not null auto_increment,
+ -> name varchar(50) not null,
+ -> sex enum('m','f') not null default 'm',
+ -> age int not null default 18
+ -> );
+Query OK, 0 rows affected (0.01 sec)
+```
+
+插入数据:
+
+```SQL
+mysql> insert into school.student6 values (1,'alice','f',22);
+Query OK, 1 row affected (0.00 sec)
+
+mysql> insert into school.student6(name,sex,age) values ('jack','m',19),('tom','m',23);
+Query OK, 2 rows affected (0.00 sec)
+Records: 2 Duplicates: 0 Warnings: 0
+
+mysql> select * from school.student6;
++----+-------+-----+-----+
+| id | name | sex | age |
++----+-------+-----+-----+
+| 1 | alice | f | 22 |
+| 2 | jack | m | 19 |
+| 3 | tom | m | 23 |
++----+-------+-----+-----+
+3 rows in set (0.00 sec)
+```
+
+
+
+## 四:修改表
+
+语法格式:
+
+- 修改表名
+
+ 1. alter table 表名 rename 新表名
+ 2. rename table 新表名 to 表名
+
+- 增加字段
+
+ 1. alter table 表名
+
+ add 字段名 数据类型 [完整性约束条件...],
+
+ add 字段名 数据类型 [完整性约束条件...];
+
+ 2. alter table 表名 add 字段名 数据类型 [完整性约束条件...] after 字段名;
+
+- 删除字段:alter table 表名 drop 字段名
+
+- 修改字段
+
+ 1. alter table 表名 modify 字段名 数据类型 [完整性约束条件...];
+ 2. alter table 表名 change 旧字段名 新字段名 旧数据类型 [完整性约束条件...];
+ 3. alter table 表名 change 旧字段名 新字段名 新数据类型 [完整性数据约束...]:
+
+### 1. 修改数据库引擎
+
+```SQL
+mysql> alter table student2 engine=myisam;
+Query OK, 2 rows affected (0.01 sec)
+Records: 2 Duplicates: 0 Warnings: 0
+//engine=innodb|memory|....
+```
+
+### 2. 添加字段
+
+```SQL
+mysql> create table student5(id int);
+Query OK, 0 rows affected (0.01 sec)
+
+mysql> alter table student5 add name varchar(30) not null,add age int not null default 22;
+Query OK, 0 rows affected (0.01 sec)
+Records: 0 Duplicates: 0 Warnings: 0
+
+mysql> alter table student5 add stu_num int not null after name;
+Query OK, 0 rows affected (0.01 sec)
+Records: 0 Duplicates: 0 Warnings: 0
+
+mysql> alter table student5 add sex enum('m','f') default 'm' first;
+Query OK, 0 rows affected (0.01 sec)
+Records: 0 Duplicates: 0 Warnings: 0
+```
+
+### 3. 删除字段
+
+```SQL
+mysql> alter table student5 drop sex;
+Query OK, 0 rows affected (0.01 sec)
+Records: 0 Duplicates: 0 Warnings: 0
+```
+
+### 4. 修改字段类型
+
+```SQL
+mysql> desc student5;
++---------+-------------+------+-----+---------+-------+
+| Field | Type | Null | Key | Default | Extra |
++---------+-------------+------+-----+---------+-------+
+| id | int(11) | YES | | NULL | |
+| name | varchar(30) | NO | | NULL | |
+| stu_num | int(11) | NO | | NULL | |
+| age | int(11) | NO | | 22 | |
++---------+-------------+------+-----+---------+-------+
+4 rows in set (0.00 sec)
+
+mysql> alter table student5 modify age tinyint not null;
+Query OK, 0 rows affected (0.01 sec)
+Records: 0 Duplicates: 0 Warnings: 0
+
+mysql> desc student5;
++---------+-------------+------+-----+---------+-------+
+| Field | Type | Null | Key | Default | Extra |
++---------+-------------+------+-----+---------+-------+
+| id | int(11) | YES | | NULL | |
+| name | varchar(30) | NO | | NULL | |
+| stu_num | int(11) | NO | | NULL | |
+| age | tinyint(4) | NO | | NULL | |
++---------+-------------+------+-----+---------+-------+
+4 rows in set (0.01 sec)
+
+mysql> alter table student5 modify id int not null primary key;
+Query OK, 0 rows affected (0.01 sec)
+Records: 0 Duplicates: 0 Warnings: 0
+
+mysql> desc student5;
++---------+-------------+------+-----+---------+-------+
+| Field | Type | Null | Key | Default | Extra |
++---------+-------------+------+-----+---------+-------+
+| id | int(11) | NO | PRI | NULL | |
+| name | varchar(30) | NO | | NULL | |
+| stu_num | int(11) | NO | | NULL | |
+| age | tinyint(4) | NO | | NULL | |
++---------+-------------+------+-----+---------+-------+
+4 rows in set (0.00 sec)
+```
+
+### 5. 增加约束
+
+```SQL
+mysql> desc student5;
++---------+-------------+------+-----+---------+-------+
+| Field | Type | Null | Key | Default | Extra |
++---------+-------------+------+-----+---------+-------+
+| id | int(11) | NO | PRI | NULL | |
+| name | varchar(30) | NO | | NULL | |
+| stu_num | int(11) | NO | | NULL | |
+| age | tinyint(4) | NO | | NULL | |
++---------+-------------+------+-----+---------+-------+
+4 rows in set (0.00 sec)
+
+mysql> alter table student5 modify id int not null auto_increment;
+Query OK, 0 rows affected (0.01 sec)
+Records: 0 Duplicates: 0 Warnings: 0
+
+mysql> desc student5; +---------+-------------+------+-----+---------+----------------+
+| Field | Type | Null | Key | Default | Extra |
++---------+-------------+------+-----+---------+----------------+
+| id | int(11) | NO | PRI | NULL | auto_increment |
+| name | varchar(30) | NO | | NULL | |
+| stu_num | int(11) | NO | | NULL | |
+| age | tinyint(4) | NO | | NULL | |
++---------+-------------+------+-----+---------+----------------+
+4 rows in set (0.00 sec)
+```
+
+### 6. 增加主键
+
+```SQL
+mysql> desc student1;
++-------+---------------+------+-----+---------+-------+
+| Field | Type | Null | Key | Default | Extra |
++-------+---------------+------+-----+---------+-------+
+| id | int(11) | YES | | NULL | |
+| name | varchar(50) | YES | | NULL | |
+| sex | enum('m','f') | YES | | NULL | |
+| age | int(11) | YES | | NULL | |
++-------+---------------+------+-----+---------+-------+
+4 rows in set (0.00 sec)
+
+mysql> alter table student1 add primary key(id);
+Query OK, 0 rows affected (0.03 sec)
+Records: 0 Duplicates: 0 Warnings: 0
+
+mysql> desc student1;
++-------+---------------+------+-----+---------+-------+
+| Field | Type | Null | Key | Default | Extra |
++-------+---------------+------+-----+---------+-------+
+| id | int(11) | NO | PRI | NULL | |
+| name | varchar(50) | YES | | NULL | |
+| sex | enum('m','f') | YES | | NULL | |
+| age | int(11) | YES | | NULL | |
++-------+---------------+------+-----+---------+-------+
+4 rows in set (0.00 sec)
+```
+
+### 7. 修改主键和自增
+
+```SQL
+mysql> alter table student1 modify id int auto_increment;
+Query OK, 4 rows affected (0.00 sec)
+Records: 4 Duplicates: 0 Warnings: 0
+
+mysql> desc student1;
++-------+---------------+------+-----+---------+----------------+
+| Field | Type | Null | Key | Default | Extra |
++-------+---------------+------+-----+---------+----------------+
+| id | int(11) | NO | PRI | NULL | auto_increment |
+| name | varchar(50) | YES | | NULL | |
+| sex | enum('m','f') | YES | | NULL | |
+| age | int(11) | YES | | NULL | |
++-------+---------------+------+-----+---------+----------------+
+4 rows in set (0.00 sec)
+```
+
+### 8. 删除主键
+
+```SQL
+mysql> desc student5;
++---------+-------------+------+-----+---------+----------------+
+| Field | Type | Null | Key | Default | Extra |
++---------+-------------+------+-----+---------+----------------+
+| id | int(11) | NO | PRI | NULL | auto_increment |
+| name | varchar(30) | NO | | NULL | |
+| stu_num | int(11) | NO | | NULL | |
+| age | tinyint(4) | NO | | NULL | |
++---------+-------------+------+-----+---------+----------------+
+4 rows in set (0.00 sec)
+
+mysql> alter table student5 drop primary key;
+ERROR 1075 (42000): Incorrect table definition; there can be only one auto column and it must be defined as a key
+mysql> alter table student5 modify id int not null;
+Query OK, 0 rows affected (0.01 sec)
+Records: 0 Duplicates: 0 Warnings: 0
+
+mysql> desc student5;
++---------+-------------+------+-----+---------+-------+
+| Field | Type | Null | Key | Default | Extra |
++---------+-------------+------+-----+---------+-------+
+| id | int(11) | NO | PRI | NULL | |
+| name | varchar(30) | NO | | NULL | |
+| stu_num | int(11) | NO | | NULL | |
+| age | tinyint(4) | NO | | NULL | |
++---------+-------------+------+-----+---------+-------+
+4 rows in set (0.00 sec)
+```
+
+### 9. 复制表
+
+复制表结构+记录 (key不会复制: 主键、外键和索引)复制表结构/记录+表结构,不会将Key复制
+
+```SQL
+mysql> create table new_service select * from service;
+```
+
+只复制表结构
+
+```SQL
+mysql> create table new1_service select * from service where 1=2; //条件为假,查不到任何记录
+```
+
+可以复制主键,只复制表结构
+
+```SQL
+mysql> create table t4 like employees;
+```
+
+### 10. 删除表
+
+```SQL
+mysql> DROP TABLE 表名;
+
+mysql> show tables;
++------------------+
+| Tables_in_school |
++------------------+
+| student1 |
+| student2 |
+| student3 |
+| student4 |
+| student5 |
+| student6 |
++------------------+
+6 rows in set (0.00 sec)
+
+mysql> drop table student5;
+Query OK, 0 rows affected (0.00 sec)
+
+mysql> show tables;
++------------------+
+| Tables_in_school |
++------------------+
+| student1 |
+| student2 |
+| student3 |
+| student4 |
+| student6 |
++------------------+
+5 rows in set (0.00 sec)
+```
+
+### 11. 修改数据表中字段的值
+
+语法:
+
+update 表名 set 列名=值 where 条件
+
+```SQL
+mysql> update student set name='123' where id=1;
+```
+
+### 12. 删除某一行
+
+语法:
+
+delete from 表名 where id = 1
+
+```SQL
+mysql> delete from type where id=1;
+```
+
+## 五:库操作
+
+### 1. 简介
+
+ 系统自带库的含义及作用
+
+```SQL
+mysql> show databases;
++--------------------+
+| Database |
++--------------------+
+| information_schema |
+| mysql |
+| performance_schema |
+| sys |
++--------------------+
+7 rows in set (0.00 sec)
+```
+
+- information_schema:虚拟库,主要存储了系统中的一些数据库对象的信息,例如用户表信息、列信息、权限信息、字符信息等
+- performance_schema:主要存储数据库服务器的性能参数
+- mysql:授权库,主要存储系统用户的权限信息
+- sys:主要存储数据库服务器的性能参数
+
+注意:information_schema
+
+ SCHEMATA 存放的是系统中的库
+
+```SQL
+mysql> select * from information_schema.SCHEMATA;
++--------------+--------------------+----------------------------+------------------------+----------+
+| CATALOG_NAME | SCHEMA_NAME | DEFAULT_CHARACTER_SET_NAME | DEFAULT_COLLATION_NAME | SQL_PATH |
++--------------+--------------------+----------------------------+------------------------+----------+
+| def | information_schema | utf8 | utf8_general_ci | NULL |
+| def | company | utf8 | utf8_general_ci | NULL |
+| def | mysql | utf8 | utf8_general_ci | NULL |
+| def | performance_schema | utf8 | utf8_general_ci | NULL |
+| def | school | utf8 | utf8_general_ci | NULL |
+| def | sys | utf8 | utf8_general_ci | NULL |
+| def | test | utf8 | utf8_general_ci | NULL |
++--------------+--------------------+----------------------------+------------------------+----------+
+7 rows in set (0.00 sec)
+
+目录_名称
+实际库_名称
+默认_字符_设置_名称
+默认_分类_名称
+```
+
+TABLES 存储表名
+
+```SQL
+mysql> select * from information_schema.TABLES\G
+*************************** 1. row ***************************
+ TABLE_CATALOG: def
+ TABLE_SCHEMA: information_schema
+ TABLE_NAME: CHARACTER_SETS
+ TABLE_TYPE: SYSTEM VIEW
+ ENGINE: MEMORY
+ VERSION: 10
+ ROW_FORMAT: Fixed
+ TABLE_ROWS: NULL
+ AVG_ROW_LENGTH: 384
+ DATA_LENGTH: 0
+MAX_DATA_LENGTH: 16434816
+ INDEX_LENGTH: 0
+ DATA_FREE: 0
+ AUTO_INCREMENT: NULL
+ CREATE_TIME: 2025-03-11 12:37:46
+ UPDATE_TIME: NULL
+ CHECK_TIME: NULL
+TABLE_COLLATION: utf8_general_ci
+ CHECKSUM: NULL
+ CREATE_OPTIONS: max_rows=43690
+ TABLE_COMMENT:
+```
+
+
+
+### 2. 创建库
+
+方案一:交互式操作
+
+```SQL
+mysql> create database wxin;
+Query OK, 1 row affected (0.00 sec)
+```
+
+方案二:非交互式
+
+```bash
+[root@rpm mysql]# ./bin/mysql -uroot -p'Wfahui@3123' -e "create database wxin";
+```
+
+数据库命名规则:
+
+- 区分大小写
+- 唯一性
+- 不能使用关键字如 create select
+- 不能单独使用数字
+
+**sql语句结尾**
+
+ 每条sql语句都要以;结尾,但是如果列比较多,想看的清楚一点,可以以\G结尾
+
+### 3. 查看数据库
+
+```SQL
+mysql> show databases;
+mysql> show create database wxin;
+mysql> select database(); 查看当前所在的库
+```
+
+### 4.切换数据库
+
+```SQL
+mysql> use wxin
+```
+
+### 5. 删除数据库
+
+```SQL
+mysql> DROP DATABASE 数据库名;
+```
+