DDL-数据表的创建


-- 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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值