第二章
这一章主要采用举实例....
create table my_int
(int_1 int,
int_2 int unsigned,
int_3 tinyint,
int_4 tinyint unsigned );
一.数字类型
整数型,浮点型,定点型,bit(位)类型
insert into my_int values(1000,1000,100,100);
insert into my_int values(1000,-1000,100,100);
desc my_int;
(一)整型
1.零填充(默认使用无符号类型,负数不能用0填充)
create table my_int2
( int_1 int(3) zerofill,
int_2 tinyint(6) zerofill
);
desc my_int2;
insert into my_int2 values(1234,2);
select * from my_int2;
(二)浮点数型(float,double)
create table my_float (f1 float, f2 float );
insert into my_float values(111111,1.11111);
insert into my_float values(1111111,1.111111);
insert into my_float values(1111114,1111115);
insert into my_float values(11111169,11111159);
select * from my_float;
(三)定点数类型
create table my_decimal (d1 decimal(4,2), d2 decimal(4,2));
insert into my_decimal values(1.234,1.235);
insert into my_decimal values(99.99,99.999);
select * from my_decimal;
(四)bit类型
select ASCII('A');
select BIN(65),length(bin(65));
create table my_bit(b bit(7));
insert into my_bit values(65);
select * from my_bit;
select * from my_bit where b=65;
select b'1000001';
二.时间日期类型
1.year类型
create table my_year(y year);
insert into my_year values(2020);
insert into my_year values('0');
select * from my_year;
2.date类型
create table my_date(d date);
insert into my_date values('2021-12-14');
insert into my_date values(current_date);
insert into my_date values(now());
select * from my_date;
insert into my_date values('20210101'),('2021-03-19'),(201127);
3.time类型
create table my_time(t time);
insert into my_time values('231134'),(234521),('2 11:30:50'),('12:30:00');
select * from my_time;
4.datetime类型(日期和时间)
create table my_datetime(d datetime);
insert into my_datetime values (now());
insert into my_datetime values('20211127123432');
select * from my_datetime;
5.timestamp类型(日期和时间)显示和datetime相同,但是取值范围比它小
select current_timestamp;
create table my_timestamp (t1 timestamp, t2 timestamp default current_timestamp on update current_timestamp, t3 timestamp default current_timestamp );
desc my_timestamp;
三.字符串类型
1.char类型和varchar类型
char(4)类型无论插入值得长度是多少,所占用的存储空间是不变的, 但是varchar(4)类型占用的字节数为实际长度加1;
2.text类型(用于保存大文本数据)
3.enum类型
create table my_enum(gender enum('male','female'));
insert into my_enum values('male'),('female');
insert into my_enum values('m');#插入不成功
4.set类型(与枚举类型的区别就是可以选择一个或者多个值来保存)
create table my_set (hobby set('book','game','code'));
insert into my_set values('book'),('game,code');
select * from my_set;
5.binary类型和varBinary类型
create table my_binary (b1 binary(4), b2 varbinary(4) );
insert into my_binary values('abc','xyz');
select * from my_binary;
select b1 from my_binary where b1='abc\0';
select b2 from my_binary where b2='xyz';
select b1 from my_binary where b1='ABC\0';#区分大小写
6.blob类型(区分大小写)
blob类型是根据二进制编码进行比较和排序,而text类型数据是根据文本模式 进行比较和排序的 7.json数据类型是json数组用列表的形式,json对象用元组。 json数据类型的字段以字符串的方式插入数据
约束
一.表级约束(维护数据库的完整性)
默认约束、非空约束、唯一约束、主键约束、外键约束、自增
1.默认约束(用于为数据表中的字段指定默认值)(default)
create table my_defaule (name varchar(10), age int unsigned default 18 );
desc my_defaule;
insert into my_defaule values();
insert into my_defaule(name) values('a');
insert into my_defaule values('b',20);
insert into my_defaule values('c',null);
select * from my_defaule;
(1)删除默认约束和增加默认约束
alter table my_defaule modify age int unsigned;
alter table my_defaule modify age int unsigned default 18;
2.非空约束(字段的值不能为空)
create table my_not_null
(n1 int,
n2 int not null,
n3 int not null default 18 );
desc my_not_null;
insert into my_not_null(n2) values(20);
select * from my_not_null;
(1)删除非空约束
alter table my_not_null modify n2 int;
(2)增加非空约束
alter table my_not_null modify n2 int not null;
3.唯一约束(表中不能出现重复字段)
create table my_unique1
(id int unsigned unique,
username varchar(10) unique
);#列级约束
create table my_unique2
(
id int unsigned,
username varchar(10),
unique(id),
unique(username)
);#表级约束
desc my_unique1;
insert into my_unique1(id) values(1);
(1)添加唯一约束(用索引的方式)
create table my_unique3 (id int );
alter table my_unique3 add unique(id);
(2)删除唯一约束
alter table my_unique3 drop index id;
(3)创建复合唯一约束
create table my_unique4
(
id int unsigned,
username varchar(10),
unique(id,username)
);
insert into my_unique4 values(1,'23');
insert into my_unique4 values(1,'2');
4.主键约束(唯一标识某条记录)
create table my_primary
(id int primary key,
username varchar(10));
desc my_primary;
(1)删除主键约束
alter table my_primary drop primary key;
(2)添加主键约束
alter table my_primary add primary key(id);
5.自动增长
create table my_auto_increment
(id int unsigned primary key auto_increment,
username varchar(20)
);
desc my_auto_increment;
insert into my_auto_increment(username) values('a'),('b');
select * from my_auto_increment;
(1)修改字自动增长的值
alter table my_auto_increment auto_increment=10;
(2)删除自动增长
alter table my_auto_increment modify id int unsigned;
(3)添加自动增长
alter table my_auto_increment modify id int unsigned auto_increment;
show variables like 'auto_incre%';