ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

数据库-数据类型-数据库创建表的 约束以及 DDL操作

2020-11-17 22:01:16  阅读:592  来源: 互联网

标签:-- 数据库 数据类型 约束 user DDL table alter


-- MySql 的数据类型

-- 在创建表结构时,数据类型可以对字段约束,类似Java的数据类型
-- 数据类型分类
-- 1、数值类型 : 修饰字段数字的类型
-- tinyint 微整型 1个字节
-- smallint 短整型 2个字节
-- mediumint 中等整型 3个字节
-- int 整型 4个字节
-- BIGINT 长整型 8个字节
-- float 小数型 4个字节
-- double 小数型 8 个字节
-- decimal(总长度,小数点个数)

-- 在创建表时,指定数据类型
-- 创建表语法
create table 表名(
字段1 数据类型 [primary key] ,
字段2 数据类型 [not null]
...
)
-- 删除表 (一起删除与该表相关的所有记录 数据和约束)
drop table mytest1;

create table mytest1 (
id tinyint primary key ,
id_2 smallint not null,
id_3 mediumint ,
id_4 int ,
id_5 float ,
money decimal(5,2) -- 5:数值的整个个数, 2:小数点的个数
)

-- 2 文本类型 用于定义表的字段是文本的类型
-- char 不可变长度字符类型 0-255
-- varchar 可变长度字符类型 0-255
-- tinyblob 存储二进制类型(图像,视频等)0-255
-- tinytext 存储文本类型
-- blob 存储二进制类型(图像,视频等)
-- text 存储文本类型
-- mediumblob 存储二进制类型(图像,视频等)(中等大小)
-- mediumtext 存储文本类型
-- longblob 存储二进制类型(图像,视频等)(超大内存)
-- longtext 存储文本类型

create table mytest2(
id int primary key auto_increment, -- 主键自增长 默认从1开始
username varchar(20) , -- 可变长度
sex char(1) ,-- 不可变长度
introduce text, -- 存储文本类型
image blob

)

select * from mytest2

3、日期 时间类型
-- date 日期类型 yyyy-mm-dd
-- time 时间类型 hh:mi:ss
-- year 年份
-- datetime 日期时间类
-- timestamp
create table mytest3(
id int primary key auto_increment ,
birthday date ,
mytime time ,
bir_year year ,
publishDate datetime ,-- 发布时间
createDate timestamp -- 创建时间 需要打开自动更新时间戳操作 每次修改新增都自动更新为系统时间
)

select * from mytest3;

-- 数据库创建表的 约束以及 DDL操作

-- 所谓表的约束: 用于在创建表时,为了确保数据的完整性 订制数据表的规则。
mysql中常用约束
1、 主键约束 : 用于唯一标志该条记录的约束 (等价于 非空约束+唯一约束 , 一张表中只能有一个主键列 主键可以是多字段组合)

2、非空约束 : 约束该字段插入时不为空

3、唯一约束: 该字段的数据在一整列是唯一的

4、默认值约束: 设置该字段的 默认值

5、检查约束(check):设置字段值的范围是否符合指定条件

6、外键约束: 用于主外键关联的约束

-- 创建用户表 指定相关约束
create table t_user(
userid int primary key auto_increment, -- 主键 自增长 从1 开始
username varchar(20) not null, -- 非空约束
password varchar(20),
email varchar(50) unique , -- 唯一约束
sex char(1) default ('男'), -- 默认约束
age int check( age >0 and age<120), -- 检查约束年龄在0-120之间
birthday datetime default(now()) -- 如果没有指定生日,默认值为系统时间
)
-- 订单表
create table t_order(
orderid int primary key ,
orderno varchar(30) not null,
order_amout decimal(8,2), -- 订单金额
user_id int references t_user(userid) -- 外键约束
)

-- 以上约束 既可以在创建表的时候完成 ,也可以在创建表之后通过alter添加约束
create table my_user(
user_id int ,
user_name varchar(20)

)

-- 使用alter 添加 主键约束、 唯一约束、 检查约束 ,外键约束 其中非空约束不能单独添加
-- 1、主键约束语法: alter table 表名 add constraint 约束名 primary key (列名)
alter table my_user add constraint pk_userid primary key (user_id);

-- 2 唯一约束语法:
alter table 表名 add constraint 约束名 unique(列名);
alter table my_user add constraint uk_username unique(user_name );

-- 3、检查约束
alter table 表名 add constraint 约束名 check(列名);
alter table t_user add constraint ck_age check (age>0 and age<100);

-- 4、外键约束 (指定关联表的主键 )
alter table 表名 add constraint 约束名 foreign key(外键列名) references 主表(主键)

alter table t_order add constraint fk_userid foreign key (user_id) references t_user(userid);

-- 如果表创建好了 ,需要修改表结构,也可以通过alter 修改
select * from t_user;
-- 1 在t_user表中 新增 money 字段
-- 语法: alter table 表名 add column 字段名 数据类型(长度)
alter table t_user add column money decimal(8,2);

-- 2、删除表的字段 birthday
-- 语法: alter table 表名 drop column 字段名
alter table t_user drop column birthday ;

-- 3、修改字段的数据类型或长度
-- 语法: alter table 表名 modify column 字段名 数据类型(长度)
desc t_user;
alter table t_user modify column sex varchar(10);

-- DML insert update delete

标签:--,数据库,数据类型,约束,user,DDL,table,alter
来源: https://www.cnblogs.com/z5452830/p/13996814.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有