MySQL之DDL语句
需积分: 0 91 浏览量
更新于2023-07-16
收藏 11KB DOCX 举报
**MySQL DDL(Data Definition Language)语句**是用来定义数据库对象如表、视图、索引等的SQL命令。在本示例中,主要展示了如何使用DDL语句创建、修改和删除MySQL数据库中的表。
创建用户表`t_user`:
```sql
create table t_user(
id int primary key auto_increment,
username varchar(40),
password varchar(40),
email varchar(40),
role char(1),
status char(1),
account decimal(10,2),
age int,
registtime timestamp,
image varchar(255)
);
```
这个表包含以下字段:
- `id`: 主键,自动递增。
- `username`: 用户名,最大长度40。
- `password`: 密码,最大长度40。
- `email`: 邮箱地址,最大长度40。
- `role`: 用户角色,1代表管理员,2代表普通用户。
- `status`: 用户状态,1表示正常,2表示冻结。
- `account`: 账户余额,十进制数,精度为2。
- `age`: 用户年龄。
- `registtime`: 注册时间,timestamp类型。
- `image`: 图片路径,可以是相对路径或绝对路径。
接着,创建员工表`emp`:
```sql
create table emp (
empid int primary key auto_increment,
empname varchar(40),
sex char(1),
birthday date,
local_natiomlly varchar(40),
salary decimal(10,2)
);
```
此表有:
- `empid`: 员工ID,主键,自动递增。
- `empname`: 员工姓名,最大长度40。
- `sex`: 性别,单个字符表示。
- `birthday`: 出生日期。
- `local_natiomlly`: 国籍,最大长度40。
- `salary`: 工资,十进制数,精度为2。
然后是学生表`student`,其中包含了各种约束:
```sql
create table student (
sno int primary key auto_increment,
sname varchar(40) not null,
sex char(1) default '3',
phone varchar(15) unique not null,
classid int,
foreign key(classid) references class(classid) on delete cascade
);
```
这里:
- `sno`: 学号,主键,自增。
- `sname`: 学生姓名,非空约束。
- `sex`: 性别,默认值为3,表示未选择。
- `phone`: 手机号码,唯一约束,不能重复。
- `classid`: 班级ID,外键,关联到`class`表的主键,当父表中的数据删除或更新时,子表数据也将删除或更新。
创建班级表`class`:
```sql
create table class (
classid int primary key auto_increment,
classname varchar(40)
);
```
包括:
- `classid`: 班级ID,主键,自增。
- `classname`: 班级名称,最大长度40。
除了创建表,示例还展示了如何使用DDL语句对已有表进行操作,如删除主键约束、添加主键和唯一约束、删除约束、修改非空约束和默认值、添加和删除列以及修改表名。
例如:
- 删除`user`表的主键约束:
```sql
alter table user drop primary key;
```
- 描述`user`表的结构:
```sql
desc user;
```
- 在`user1`表上添加包含多个字段的主键约束:
```sql
alter table user1 add primary key(id, name, age);
```
- 描述`user1`表的结构:
```sql
desc user1;
```
- 为`user2`表添加唯一约束:
```sql
alter table user2 add unique(name, age);
```
- 描述`user2`表的结构:
```sql
desc user2;
```
- 删除`user2`表的索引:
```sql
alter table user2 drop index name;
```
- 描述`user2`表的结构:
```sql
desc user2;
```
- 修改`student`表,取消`sname`列的非空约束:
```sql
alter table student modify sname varchar(40) null;
```
- 描述`student`表的结构:
```sql
desc student;
```
- 修改`user2`表,取消`sname`列的非空约束并设置默认值:
```sql
alter table user2 modify name varchar(40) not null;
alter table user2 modify name varchar(40) default 'abc';
```
此外,还有添加列(`add phone varchar(12)`、`add (email varchar(40), score int)`)和删除列(`drop email`)、修改表名(`rename to u_user2`)的操作,这些都是DDL语句中常见的表结构变更方法。这些操作对于数据库的管理和维护至关重要,确保数据结构的完整性和一致性。