# MySQL数据库与数据表操作
+ 数据库的操作
+ 数据库创建
+ 数据库删除
+ 数据表的操作
+ 数据表的创建
+ 数据表的修改 (表结构)
+ 数据表的删除
### 数据库的操作
#### 1.数据库的创建
```mysql
# 链接mysql数据库后,进入mysql后可以操作数据
# 1. 创建库
create database if not exists tlxy default charset=utf8;
-- 1. 数据库 tlxy 如果不存在则创建数据库,存在则不创建
-- 2. 创建 tlxy 数据库,并设置字符集为utf8
-- 3. 无特殊情况都要求字符集为utf8或者utf8mb4的字符编码
```
#### 2.查看所有库
```mysql
# 1. 查看所有库
show databases;
```
#### 3.打开库/进入库/选择库
```mysql
# use 库名
use tlxy
```
#### 4.删除库
> 删库有风险,动手需谨慎
```mysql
# 删除库,那么库中的所有数据都将在磁盘中删除。
drop database 库名
```
### 数据表的操作
#### 1.创建表
语法格式:
create table 表名(字段名,类型,【字段约束】,。。。);
实例:
```mysql
# 以下创建一个 users 的表
create table users(
-- 创建ID字段,为正整数,不允许为空 主键,自动递增
id int unsigned not null primary key auto_increment,
-- 创建 存储 名字的字段,为字符串类型,最大长度 5个字符,不允许为空
username varchar(5) not null,
-- 创建存储 密码 的字段,固定长度 32位字符, 不允许为空
password char(32) not null,
-- 创建 年龄 字段,不允许为空,默认值为 20
age tinyint not null default 20
)engine=innodb default charset=utf8;
# 查看表结构
desc users;
#查看建表语句
show create table users;
```
创建表的基本原则:
+ 表明和字段名 尽可能的符合命名规范,并且最好能够‘见名之意’
+ 表中数据必须有唯一标示,即主键定义。无特殊情况,主键都为数字并自增即可
+ 表中字段所对应的类型设置合理,并限制合理长度
+ 表引擎推荐使用innodb,并无特殊情况都要求为utf8或者utf8mb4的字符编码
#### 2.修改表结构
> 语法格式:alter table 表名 action (更改的选项)
##### 添加字段
```mysql
# 语法:alter table 表名 add 添加的字段信息
-- 在 users 表中 追加 一个 num 字段
alter table users add num int not null;
-- 在指定字段后面追加字段 在 users 表中 age字段后面 添加一个 email 字段
alter table users add email varchar(50) after age;
-- 在指定字段后面追加字段,在 users 表中 age字段后面 添加一个 phone
alter table users add phone char(11) not null after age;
-- 在表的最前面添加一个字段
alter table users add aa int first;
```
##### 删除字段
```mysql
# 删除字段 alter table 表名 drop 被删除的字段名
alter table users drop aa;
```
##### 修改字段
```mysql
语法格式: alter table 表名 change|modify 被修改的字段信息
change: 可以修改字段名,
modify: 不能修改字段名。
# 修改表中的 num 字段 类型,使用 modify 不修改表名
alter table users modify num tinyint not null default 12;
# 修改表中的 num 字段 为 int并且字段名为 nn
alter table users change num mm int;
# 注意:一般情况下,无特殊要求,不要轻易修改表结构
```
#### 3.修改表名
```mysql
# 语法:alter table 原表名 rename as 新表名
```
#### 4.更改表中的自增的值
```mysql
# 在常规情况下,auto_increment 默认从1开始继续递增
alter table users auto_increment = 1000;
```
#### 5.修改表引擎
```mysql
# 推荐在定义表时,表引擎为 innodb。
# 通过查看建表语句获取当前的表引擎
mysql> show create table users\G;
*************************** 1. row ***************************
Table: users
Create Table: CREATE TABLE `users` (
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1001 DEFAULT CHARSET=utf8
1 row in set (0.00 sec)
# 直接查看当前表状态信息
mysql> show table status from tlxy where name = 'users'\G;
*************************** 1. row ***************************
Name: users
Engine: InnoDB
# 修改表引擎语句
alter table users engine = 'myisam';
```
#### 6.删除表
```mysql
drop table 表名
```
来源:https://www.cnblogs.com/itxdl/p/12530701.html