DDL-数据表的创建

来源:互联网 发布:人类学 知乎 编辑:程序博客网 时间:2024/05/21 20:29
-- DDL(*)(Data Definition Language):数据定义语言,用来定义数据库对象:库、表、列等;-- 操作数据表,数据表的创建-- 切换数据库use mydatabase;-- 删除数据表drop table test;-- CREATE TABLE  表名 ( 属性名 数据类型 [完整性约束条件],-- 属性名 数据类型 [完整性约束条件],-- ) [字符集];-- 创建数据表create table test (-- 主键(主键约束) primary key 唯一的约束该字段里面的数据,不能重复,不可为空-- 自增 AUTO_INCREMENT 自增长字段必须是数字,且为键。一张表最多只能有一个自增长  使用:不写,null,defaultid int primary key auto_increment ,-- 自动生成唯一值id serial,-- 唯一性(唯一约束)unique/unique key  字段具有唯一性,数据不能重复tname VARCHAR(20) unique,    -- varchar:可变长度字符串类型-- 非空约束 not nulltbirth 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:sstdate date,          -- date:日期类型,格式为:yyyy-MM-ddtdatetime datetime,  -- datetime:日期时间类型 yyyy-MM-dd hh:mm:sstyesr 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 keyalter  table t2 modify id int primary key;    -- 删除主键 (主键不可更新)-- alter table 表名 drop primary keyalter 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

原创粉丝点击