-- DDL(*)(Data Definition Language):数据定义语言,用来定义数据库对象:库、表、列等;
-- 操作数据表,数据表的创建
-- 切换数据库
use mydatabase;
-- 删除数据表
drop table test;
-- CREATE TABLE 表名 ( 属性名 数据类型 [完整性约束条件],
-- 属性名 数据类型 [完整性约束条件],
-- ) [字符集];
-- 创建数据表
create table test (
-- 主键(主键约束) primary key 唯一的约束该字段里面的数据,不能重复,不可为空
-- 自增 AUTO_INCREMENT 自增长字段必须是数字,且为键。一张表最多只能有一个自增长 使用:不写,null,default
id int primary key auto_increment ,
-- 自动生成唯一值
id serial,
-- 唯一性(唯一约束)unique/unique key 字段具有唯一性,数据不能重复
tname VARCHAR(20) unique, -- varchar:可变长度字符串类型
-- 非空约束 not null
tbirth date not null,-- date:日期类型,格式为:yyyy-MM-dd;
-- 浮点型:超出指定范围,会丢失精度,自动四舍五入
-- 当插入数据时,整数部分是不能超过长度的,但小数部分可以,四舍五入。因为四舍五入二导致整数部分超出指定的长度,系统也运行成立
tsal double(5,2), -- double:双精度浮点数,例如double(5,2)表示最多5位,其中必须有2位小数 8字节
tcomm float(5,2), -- float:单精度浮点数,用法同double,不加括号表示没有小数部分 4个字节
-- 定点型:绝对的保证整数部分不会被四舍五入,不会丢失精度,理论上小数部分也不会丢失精度。
-- 整数部分不能超出长度,小数部分长度可以随意超出,四舍五入。定点数长度溢出,是不会进位的,会报错
tmoney DECIMAL(5,2), -- DECIMAL/DEC(M,D):定点数类型,用法同浮点型,M+2个字节
-- 日期与时间类型
ttime time, -- time:时间类型,格式为:hh:mm:ss
tdate date, -- date:日期类型,格式为:yyyy-MM-dd
tdatetime datetime, -- datetime:日期时间类型 yyyy-MM-dd hh:mm:ss
tyesr year(2), -- year: 年份类型, 格式为:YY year(2)或YYYY year(4)
tstamp timestamp, -- timestamp:时间戳类型 yyyy-MM-dd hh:mm:ss 会自动赋值
-- 字符串类型
tchar char(20), -- char:定长字符串,磁盘在定义结构的时候,就已经确定了最终数据的存储长度
-- char(L)在UTF8环境下,需要L*3=12个字节 L最大为255
-- 定长的磁盘空间比较浪费,但效率高。如果数据基本上确定长度一样,就使用定长
tvarchar varchar(20), -- varchar:变长字符串,在分配空间的时候,按照最大的空间分配,但实际最终用了多少,是根据具体的数据来确定的
-- varchar(L) utf8环境下,大小为L*3+1(byte).理论长度是65536个字符,但会多出1~2个字节来确定存储的实际长度
-- 变长的磁盘空间比较节省,但效率低,如果数据不确定长度(不同数据有变化),就使用变长
ttext text, -- text:文本字符串(储存文字),如果数据量非常大,通常说超过了255个字符,就用文本字符串
tblob blob, -- blob:文本字符串(存储二进制数据)
-- 枚举:在进行数据规范的时候,系统会自动建立一个数字和枚举元素的对应关系,放到日志中
-- 再进行数据插入的时候,系统自动将字符转换成对象的数字,提取数据的时候,自动将数值转换为字符串 编号从1开始
gender enum('男','女') DEFAULT '男',
-- 集合字符串:和枚举类似,实际存储的是数字,不是字符串。
tset set('男','女') default'男' -- 集合中的每一个元素都对应一个二进制位,将他们反过来,就是对应的十进制的数字。
-- default:默认值,在数据进行插入的时候,不给该字段赋值,直接使用DEFAULT代替值
-- comment:专门用来描述字段,会根据表创建语句保存。用来给程序猿进行了解的。
-- foreign key:外面的键,键不在自己表中。如果一张表中有一个字段指向另外一张表的主键,那么该字段称之为外键
-- foreign key(外键字段) references 外部表(主键字段)
-- foreign key (ttext) references tuser(id)
-- primary key(主键字段列表)来创建联合主键。
)charset utf8;
-- 追加主键
-- alter table 表名 add primary key(字段列表)
alter table t2 add primary key (id);
-- 修改表字段属性
-- alter table 表名 modify 字段名 数据类型 primary key
alter table t2 modify id int primary key;
-- 删除主键 (主键不可更新)
-- alter table 表名 drop primary key
alter table t2 drop primary key ;
-- 追加外键
-- alter table 表名 add [constraint 外键名字] foreign key (外键字段) references 父表(主键字段);
ALTER TABLE t1 ADD CONSTRAINT k_1 FOREIGN KEY (uid)REFERENCES test(id);
ALTER TABLE t1 ADD FOREIGN KEY (uid)REFERENCES test(id);
-- 删除外键
-- alter table 表名 drop foreign key 外键名字
ALTER TABLE t2 DROP foreign KEY t_k;
-- 新建一张表t2,同时将另一张表的数据t1复制进去
CREATE TABLE t2 AS SELECT * FROM t1
DDL-数据表的创建
最新推荐文章于 2024-05-26 21:15:28 发布