一,数据类型
介绍:MySQL中定义数据字段的类型对你数据库的优化是非常重要的。
MySQL支持多种类型,大致可以分为三类:数值、日期/时间和字符串(字符)类型。
1)字符类型:char varchar text blob
2)数值类型:int bigint float decimal
int -> int
bigint -> long
float -> 成绩
decimal -> 货币类型(精度,小数)
3)日期类型:date time datetime timestamp
date -> yyyy:MM:dd HH:mm:ss
time -> HH:mm:ss
datetime -> yyyy:MM:dd
timestamp(时间戳) -> 长整数
二,建表
示例:
--建表
create table tb_book(
id int,
bname VARCHAR(20),
price double
)
--删除库&表
drop database if exists 旧库名;
create database 新库名;
drop database if exists 旧表名;
create database 表名();
--查看表数据类型
desc tb_book
三,表的修改
--修改book表的bname为uname,数据类型也改了
alter table tb_book change column bname uname VARCHAR(33);
--修改列类型或约束
alter table tb_book modify column pubdate TIMESTAMP
--添加新列(书籍数量)
alter table tb_book add column num int;
--删除列
alter table tb_book drop column num;
--修改表名
alter table tb_book rename to books
--复制表(想要改动原有表数据又怕出错,后续想要回退到之前的表设计)
create table tb_book_copy as select *from tb_book
--新建表,只想要某张表其中几个字段
create table tb_book_some as select id,bname from tb_book
--在项目开发阶段数据异常,需要正式数据(开发时使用数据≠投入使用时的数据),只保留表结构
create table tb_book_test as select *from tb_book where 1=0
PS:where后填不成立的条件
--保留部分表结构
create table tb_book_test as select id,bname from tb_book where 1=0
查看效果:
四,约束
一种限制,用于限制表中的数据,为了保证表中的数据的准确和可靠性
表级约束:
create table tb_stu(
id,int primary key,#主键约束
stuName VARCHAR(22) not null#非空约束
sex char(1) check(sex='男'or sex='女'),#检查约束(MySQL中不支持)
seat int unique,#唯一约束
age int default 18,#默认约束
majorId int references major(id)#外键约束
)
列级约束:
create table tb_stu(
id int,
stuName VARCHAR(22),
sex char(1),
seat int,
age int,
majorId int,
constraint pk primary key(id),#主键约束
constraint uq unique(seat),#唯一约束
constraint ck check(sex='男'or sex='女'),#检查约束(MySQL中不支持)
constraint tb_major foreign key(majorId) references major(id)#外键约束
)
修改时添加约束:
#主键
alter table tb_stu modify column id primary key
alter table tb_stu add primary key(id)
#非空
alter table tb_stu modify column stuName VARCHAR(22) not null
#默认
alter table tb_stu modify column age int default 18
#唯一
alter table tb_stu modify column seat int unique
alter table tb_stu add unique(seat)
#外键
alter table tb_stu add constraint tb_major foreign key(majorId) references major(id)
修改表时删除约束
alter table tb_stu modify column stuName VARCHAR(22) null#删除非空,即重新设置字段
alter table tb_stu modify column age int#删除默认,即重新设置字段
alter table tb_stu drop primary key(id)#主键
alter table tb_stu drop unique(seat)#唯一
alter table tb_stu drop foreign key tb_major#外键