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