mysql-DDL语言

DDL语言

库的管理

#一、创建库
create database 库名
#二、删除库
drop database 库名

表的管理

#1.创建表
CREATE TABLE IF NOT EXISTS stuinfo(
	stuId INT,
	stuName VARCHAR(20),
	gender CHAR,
	bornDate DATETIME
);

#2.修改表名
ALTER TABLE stuinfo RENAME [TO]  studentinfo;

#3.修改表字段 alter
语法:ALTER TABLE 表名 ADD|MODIFY|DROP|CHANGE COLUMN 字段名 【字段类型】;

#①修改字段名
ALTER TABLE studentinfo CHANGE  COLUMN sex gender CHAR;

#②修改字段类型和列级约束
ALTER TABLE studentinfo MODIFY COLUMN borndate DATE ;

#③添加字段
ALTER TABLE studentinfo ADD COLUMN email VARCHAR(20) first;

#④删除字段
ALTER TABLE studentinfo DROP COLUMN email;

#3.删除表
DROP TABLE [IF EXISTS] studentinfo;

常见类型

数值类型
类型大小(bytes)范围(有符号)范围(无符号)范围(用途)
TINYINT1(-128,127)(0,255)小整数值
SMALLINT2(-32 768,32 767)(0,65 535)大整数值
MEDIUMINT3(-8 388 608,8 388 607)(0,16 777 215)大整数值
INT或INTEGER4(-2 147 483 648,2 147 483 647)(0,4 294 967 295)大整数值
BIGINT8(-9,223,372,036,854,775,808,9 223 372 036 854 775 807)(0,18 446 744 073 709 551 615)极大整数值
FLOAT4(-3.402 823 466 E+38,-1.175 494 351 E-38),0,(1.175 494 351 E-38,3.402 823 466 351 E+38)0,(1.175 494 351 E-38,3.402 823 466 E+38)单精度/浮点数值
DOUBLE8(-1.797 693 134 862 315 7 E+308,-2.225 073 858 507 201 4 E-308),0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308)0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308)双精度/浮点数值
DECIMAL对DECIMAL(M,D) ,如果M>D,为M+2否则为D+2依赖于M和D的值依赖于M和D的值小数值
日期和时间类型
类型大小(bytes)范围格式用途
DATE31000-01-01/9999-12-31YYYY-MM-DD日期值
TIME3‘-838:59:59’/‘838:59:59’HH:MM:SS时间值或持续时间
YEAR11901/2155YYYY年份值
DATETIME81000-01-01 00:00:00/9999-12-31 23:59:59 YYYY-MM-DDHH:MM:SS混合日期和时间值
TIMESTAMP41970-01-01 00:00:00/2038结束时间是第 2147483647 秒,北京时间 2038-1-19 11:14:07,格林尼治时间 2038年1月19日 凌晨 03:14:07YYYYMMDD HHMMSS混合日期和时间值,时间戳
字符串类型
类型大小(bytes)用途
CHAR0-255定长字符串
VARCHAR0-65535变长字符串
TINYBLOB0-255不超过 255 个字符的二进制字符串
TINYTEXT0-255短文本字符串
BLOB0-65535二进制形式的长文本数据
TEXT0-65535长文本数据
MEDIUMBLOB0-16777215二进制形式的中等长度文本数据
MEDIUMTEXT0-16777215中等长度文本数据
LONGBLOB0-4294967295二进制形式的极大文本数据
LONGTEXT0-4294967295极大文本数据

常见约束

  1. NOT NULL 非空约束

    用not null约束的字段不能为null值,必须给定具体的数据

  2. DEFAULT 默认约束

    默认值,用于保证该字段有默认值

  3. UNIQUE 唯一性约束

    unique约束的字段,具有唯一性,不可重复,但可以为null(null 为不确定值)

  4. PRIMARY KEY 主键约束

    表设计时一定要有主键

    给某个字段添加主键约束之后,该字段不能重复也不能为空

    默认添加"索引——index"

  5. FOREIGN KEY 外键约束

    外键,用于限制两个表的关系,用于保证该字段的值必
    须来自于主表的关联列的值,在从表添加外键约束,用于引用主表中某些的值

注. CHECK 检查约束(mysql不支持)
检查字段的值是否为指定的值

添加约束

添加约束方式:

  1. 创建表时
  2. 修改表时

约束的添加分类:

  1. 列级约束:
    六大约束语法上都支持,但外键约束没有效果
  2. 表级约束:
    除了非空,默认都支持
创建表时添加约束
  1. 添加列级约束
 create table if not exists t_stuinfo(
    id int primary key,    #主键
    stuName varchar(20) not null,    #非空
    gender char(1) check(gender='男' or gender='女'),    #检查约束,MySql没有效果但不报错
    seat int unique,    #唯一约束
    age int default 18,    #默认(值)约束
    majorId int references major(id) #外键约束,MySql没有效果,但不报错
    );
  1. 添加表级约束
 create table if not exists t_stuinfo(
    id int,
    stuName varchar(20),
    gender char(1),
    seat int,
    age int,
    majorId int,
    constraint pk primary key(id),    #约束名随意,主键不生效,但不报错。
    constraint uq unique(seat),    #唯一约束
    constraint ck check(gender='男' or gender='女'),    #检查约束,MySql不支持此约束,不报错但不生效
    constraint fk_stuinfo_major foreign key(majorId) references major(id)    #外键约束
    );
修改表时添加约束
  1. 添加非空约束
alter table 表名称 modify column 列名 列类型 not null;
  1. 添加默认约束
alter table 表名称 modify column 列名 列类型 default 默认值;
  1. 添加主键约束
#列级约束
alter table 表名称 modify column 列名 列类型 primary key;
#表级约束
alter table 表名称 add primary key(id);
  1. 添加唯一约束
#列级约束
alter table 表名称 modify column 列名 列类型 unique;
#表级约束
alter table 表名称 add unique(列名);
  1. 添加外键约束(列级写法可行,但无效果)
alter table 表名称 add constraint fk_stuinfo_magor foreign key(magorId) references major(id);
  1. 归纳语法
#列级约束
alter table 表名称 modify column 列名 列类型 新约束;
#表级约束
alter table 表名称 add constraint 约束名 约束类型(列名称) [外键的引用];

删除约束

  1. 删除非空约束
alter table 表名称 modify column 列名 列类型 [null];
  1. 删除默认约束
alter table 表名称 modify column 列名 列类型;
  1. 删除主键
# 列级删除
alter table 表名称 modify column id int;
# 表级删除
alter table 表名称 drop primary key;
  1. 删除唯一
alter table 表名称 drop index(索引名) 设置唯一时的名称;
  1. 删除外键
alter table 表名称 drop foreign key(索引名) 设置外键时的名称;

自增长

自动填充自增长的数值,oracle数据库中没有子增长但是有序列

自增长列特点:

  1. 自增长列必须和一个Key搭配(Key指主键、唯一、外键…)
  2. 一个表最多有一个自增长列
  3. 自增长列的类型只能是数值型
  4. 自增长列可以通过SET auto_increment_increment = 3;设置步长(全局),可以通过插入行时手动插入标识列值设置起始值。
  1. 创建表时设置自增长列
create table user(
    id int primary key auto_increment,
    name varchar(20)
    );
  1. 修改表时设置自增长列
alter table 表名称 modify column id int primary key auto_increment;
  1. 修改表时删除自增长列
alter table 表名称 modify column id int primary key;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值