MySQL之DDL语句

preview
需积分: 0 2 下载量 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语句中常见的表结构变更方法。这些操作对于数据库的管理和维护至关重要,确保数据结构的完整性和一致性。
Hello_World@hang
  • 粉丝: 2
  • 资源: 3
上传资源 快速赚钱
voice
center-task 前往需求广场,查看用户热搜