4、DDL语言
4、DDL语言
Data Define Language 数据定义语言
包括:①库的管理:创建(create)、修改(alter)、删除(drop)
②表的管理:创建(create)、修改(alter)、删除(drop)
4.1库的管理
4.1.1库的创建:
create database (if not exists)库名;
4.1.2库的修改:一般不改
4.1.3库的删除:
drop database (if exists) 库名;
4.2表的管理
4.2.1表的创建:
create table 表名( 列名 列的类型 [(长度) 约束], …… );
例1:创建book表
create table book( id int, bname varchar(20), authorid int, publishidate dateime );
4.2.2表的修改:
alter table 表名 add|drop|modify|change|reanme to 列名 [列类型 约束];
①修改列名:
alter table 表名 change 旧列名,新列名 类型;
②修改列的类型或约束
alter table 表名 modify 列名 新类型;
③添加新列
alter table 表名 add 新列 类型;
④删除列
alter table 表名 drop 列名;
⑤修改表名
alter table 表名 rename to 新表名;
4.2.3表的删除
drop table if exists 表名;
4.2.4表的复制
仅复制表的结构:
create table copy like 旧表;
复制表的结构和数据:
create table copy select * from 旧表;
4.3常见的数据类型
数值型:整型(int)、浮点型(float(M,D)、double(M,D))、定点型(dec(M,D)、decimal(M,D)) #M表示整数部位+小数部位,D表示小数部位;定点型精度较高
字符型:较短文本(char、varchar)、较长文本(text、blob)
日期型:date、time、datetime、year、month、date
4.4常见的约束
约束的含义:一种限制,用于限制表中的数据,为了保证表中数据的准确性和可靠性
分类:①not null:非空,用于保证字段的值不能为空(如姓名,学号等)
②default:默认,用于保证字段有默认值(如性别)
③primary key:主键,用于保证字段具有唯一性,非空(如学号,员工编号)
④unique:唯一,用于保证字段具有唯一性,可以为空(如座位号)
⑤check:检查,(如年龄,性别)
⑥foreign key:外键,用于限制两表的关系,保证字段值来自主表的关联列的值,要求在从表添加外键约束,用于引用主表中的某列的值(如学生表的专业编号)
主键和唯一的区别:主键具有唯一性,非空,一个表中只能有一个,允许组合
唯一具有唯一性,可以为空,一个表中可以有多个,允许组合
4.4.1创建表时添加约束
添加列级约束:直接在字段和类型后面添加约束即可
支持的约束:非空、默认、主键、唯一
添加表级约束:在各字段的最下面添加 constraint 约束名 约束类型(字段名)
例2:
create table stuinfo( id int, stuname varchar(20), age int, majorid int, constraint pk primary key(id), constraint uq unique(seat), constraint fk_major foreign key(majorid) referece major(id) );
4.4.2修改表时添加约束
添加列级约束:
alter table 表名 modify 列名 类型 新约束;
添加表级约束:
alter table 表名 add constraint 约束名 约束类型(字段名);
4.4.3修改表时删除约束
alter table 表名 drop 约束;
4.5标识列(自增长列)
自增长列的定义:可以不用手动插入值,系统默认的序列值
关键字:auto_increment; #设置自增长列
set auto_increment_increment=步长; #设置步长
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
· 【译】Visual Studio 中新的强大生产力特性
· 2025年我用 Compose 写了一个 Todo App