Fork me on GitHub

MySQL学习4_DDL

关于进入数据库

1
2
mysql -uroot -p    //使用这种方式,接下来需要输入密码。密码是暗文
mysql -uroot -p123456 // 可以直接将密码123456放在参数p的后面,不安全

参数解释:

  • u:指定用户

  • p:指定密码


DDL

DDL,data defination language,指的是数据定义语言,其主要作用是创建数据库,对库表的结构进行删除和修改等操作。

全部命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
1. 数据库操作
show databases; // 显示所有的数据库
use school; // 使用school数据库
create database school; // 创建数据库
drop database school; // 删除某个数据库

2. 表操作
-- 创建表
create table user(字段1,字段2,...,字段n);

-- 查看创建表的SQL语句
show create table user;

-- 查看表的结构
desc user;

-- 删除表
drop table user;

-- 修改表名
alter table user rename to users;

数据库操作

1
2
3
4
show databases;     // 显示所有的数据库
use school; // 使用school数据库
create database school; // 创建数据库
drop database school; // 删除某个数据库
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
mysql> show databases;   // 显示数据库
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| peter |
| school |
| sys |
+--------------------+
6 rows in set (0.04 sec)

mysql> use school; // 选择使用数据库
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

表操作

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
// 1、创建表
create table user(字段1,
字段2,
...,
字段n
); // 最后的分号不能忘记

// 2、查看所有的表
show tables;

// 3、查看表的结构
desc user;

// 4、查看创建表的SQL语句
show create table user;

// 5、删除表
drop table user;

// 6、修改表名
alter table user rename to users; # 表名改为users;to可省略
  • 最后的分号不能忘记😢
  • 最后的分号不能忘记😢
  • 最后的分号不能忘记😢
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
mysql> use school;  // 使用一个数据库
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> show tables; // 查看数据库下的所有表
+------------------+
| Tables_in_school |
+------------------+
| course |
| score |
| student |
| teacher |
| total |
+------------------+
5 rows in set (0.00 sec)

创建表

  • 主键primary keyauto_increment必须连在一起使用
  • 书写规范:每个字段的语句最好分行写,容易检查
  • 最后的分号不能忘记
1
2
3
4
5
6
7
8
9
10
# 创建user表:6种字段+1个主键

create table user( id int(10) unsigned not null auto_increment comment "user_id", //将id作为主键
name varchar(20) not null comment "user_name",
email varchar(50) not null comment "user_email",
age tinyint unsigned not null comment "user_age",
fee decimal(10,2) not null default 0.00 comment "user_fee",
createTime timestamp not null comment "user_time",
primary key(id)
); // 记得分号

查看表结构

1
2
3
4
5
6
7
8
9
10
11
12
mysql> desc user;
+------------+---------------------+------+-----+-------------------+-----------------------------+
| Field | Type | Null | Key | Default | Extra |
+------------+---------------------+------+-----+-------------------+-----------------------------+
| id | int(10) unsigned | NO | PRI | NULL | auto_increment |
| name | varchar(20) | NO | | NULL | |
| email | varchar(50) | NO | | NULL | |
| age | tinyint(3) unsigned | NO | | NULL | |
| fee | decimal(10,2) | NO | | 0.00 | |
| createTime | timestamp | NO | | CURRENT_TIMESTAMP | on update CURRENT_TIMESTAMP |
+------------+---------------------+------+-----+-------------------+-----------------------------+
6 rows in set (0.02 sec)

查看创建表的SQL语句

1
show create table user;

字段操作

关键词是alter,先选中需要操作的表。

  • modify:修改
  • change:改变名字
  • add:添加字段
    • 默认是末尾
    • 指定位置添加
1
2
3
4
5
6
7
8
9
10
11
12
13
14
// 修改字段信息
alter table user modify name varchar(50) not null; # 将字段name 从20改为50个字符

// 修改字段名字
alter table user change email user_email varchar(50) not null; # 将email改成user_email

// 末尾添加字段
alter table user add password char(30) not null comment "user_password"; # 增加password字段

// 指定位置添加字段
alter table user add password1 char(30) not null comment "user_password1" after user_name; # 在name后面增加password1字段

// 删除字段
alter table user drop password1; #删除字段password1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
// 原来的表格信息

mysql> desc user;
+------------+---------------------+------+-----+-------------------+-----------------------------+
| Field | Type | Null | Key | Default | Extra |
+------------+---------------------+------+-----+-------------------+-----------------------------+
| id | int(10) unsigned | NO | PRI | NULL | auto_increment |
| name | varchar(20) | NO | | NULL | |
| email | varchar(50) | NO | | NULL | |
| age | tinyint(3) unsigned | NO | | NULL | |
| fee | decimal(10,2) | NO | | 0.00 | |
| createTime | timestamp | NO | | CURRENT_TIMESTAMP | on update CURRENT_TIMESTAMP |
+------------+---------------------+------+-----+-------------------+-----------------------------+
6 rows in set (0.00 sec)

# 修改字段信息
mysql> alter table user modify name varchar(50);
# 修改字段名字
mysql> alter table user change email user_email varchar(50) not null;
# 添加字段,末尾
mysql> alter table user add password char(30) not null comment "user_password";
# 指定位置添加字段
mysql> alter table user add password1 char(30) not null comment "user_password1" after name;

mysql> desc user;
+------------+---------------------+------+-----+-------------------+-----------------------------+
| Field | Type | Null | Key | Default | Extra |
+------------+---------------------+------+-----+-------------------+-----------------------------+
| id | int(10) unsigned | NO | PRI | NULL | auto_increment |
| name | varchar(50) | YES | | NULL | |
| password1 | char(30) | NO | | NULL | |
| user_email | varchar(50) | NO | | NULL | |
| age | tinyint(3) unsigned | NO | | NULL | |
| fee | decimal(10,2) | NO | | 0.00 | |
| createTime | timestamp | NO | | CURRENT_TIMESTAMP | on update CURRENT_TIMESTAMP |
| password | char(30) | NO | | NULL | |
+------------+---------------------+------+-----+-------------------+-----------------------------+
8 rows in set (0.00 sec)

本文标题:MySQL学习4_DDL

发布时间:2019年10月01日 - 16:10

原始链接:http://www.renpeter.cn/2019/10/01/MySQL%E5%AD%A6%E4%B9%A04_DDL.html

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。

Coffee or Tea