-- 创建整型表
create table myint(
int_1 tinyint,
int_2 smallint,
int_3 int,
int_4 bigint
)charset utf8;
-- 插入数据
insert into myint values(100,100,100,100); -- 有效数据
insert into myint values('a','b',100,100); -- 无效数据: 类型限定
insert into myint values(1000,10000,100000,100); -- 错误: 超出范围
-- 给表增加一个无符号类型
alter table myint add int_5 tinyint unsigned;
alter table myint add int_6 tinyint(1) unsigned;
-- 显示宽度为2,0填充
alter table myint add int_7 tinyint(2) zerofill;
-- 浮点数表
create table myfloat(
f1 float,
f2 float(10,2), -- 10位在精度范围之外
f3 float(6,2) -- 6位在精度范围之内
)charset utf8;
-- 插入数据
insert into myfloat values (100.10,1000.10,100.10);
insert into myfloat values (3e38,3.01e7,123.56);
-- 超出长度插入数据
insert into myfloat values(123456,1234.12,12345.56);-- 整数部分超出
-- 创建定点数表
create table mydecimal(
f1 float(10,2),
d1 decimal(10,2),
f2 float(10),
d2 decimal(10)
)charset utf8;
-- 插入数据
insert into mydecimal values(235234.54,23452.54,2314.34,1234.53);
insert into mydecimal values(1234.123456,1234.1234356,1341.43,134134.34);
insert into mydecimal values(99999999.99,99999999.999,1341.43,134134.34); -- 进位超出范围
-- 创建时间日期表
create table mydata(
d1 datetime,
d2 date,
d3 time,
d4 timestamp,
d5 year
)charset utf8;
-- 插入数据
insert into mydata values('2017-5-5 11:20:10',
'2017-1-5','10:12:11','2017-5-5 11:20:10',2017);
-- 时间使用负数
insert into mydata values('2017-5-5 11:20:10',
'2017-1-5','-10:12:11','2017-5-5 11:20:10',2017);
insert into mydata values('2017-5-5 11:20:10',
'2017-1-5','-2 10:12:11','2017-5-5 11:20:10',2017);-- -2过去2天:48
-- year可以使用2位或者4位
insert into mydata values('2017-5-5 11:20:10',
'2017-1-5','10:12:11','2017-5-5 11:20:10',70);
-- timestamp: 修改记录
update mydata set d4='2017-10-10 10:10:10'
where d5=1970;
-- 创建枚举表
create table myenum(
gender enum('男','女','保密')
)charset utf8;
-- 插入数据
insert into myenum values('男'),('保密'); -- 有效数据
-- 错误数据 -- 没有该元素
insert into myenum values('female'),('保密');
-- 将字段结果取出来进行+0运算
select gender +0,gender from myenum;
-- 数值插入枚举元素
insert into myenum values(1),(2);
-- 创建集合表
create table myset(
hobby set('篮球','足球','乒乓球','羽毛球','排球','台球','网球','棒球')
)charset utf8;
--
足球
台球 网球
--集合中:每一个元素都是对应一个二进制位,被选中为1,没选中为0,最后反过来
-- 0 1 0 0
--0 1 1 0
-- 反过来 01100010 = 98
-- 插入数据
insert into myset values('足球,台球,网球');
insert into myset values(3);
insert into myset values(98);
-- 查看集合数据
select hobby + 0,hobby from myset;
-- 颠倒元素出现的顺序
insert into myset values('网球,台球,足球');
-- 求出varchar在utf8和GBK下的实际最大值
create table myutf8(
name varchar(21844) -- 21844 * 3 + 2 = 65532 + 2 = 65534
)charset utf8;
create table mygbk(
name varchar(32766) -- 32766 * 2 + 2 = 65532 + 2 = 65534
)charset gbk;
create table myutf81(
age tinyint,
name varchar(1111)
)charset utf8;
create table mygbk1(
age tinyint,
name varchar(1111) -- 32766 * 2 + 2 = 65532 + 2 = 65534
)charset gbk;
create table myutf82(
age tinyint not null,
name varchar(1111) not null
)charset utf8;
create table mygbk2(
age tinyint not null,
name varchar(1111) not null -- 32766 * 2 + 2 = 65532 + 2 = 65534
)charset gbk;
-- text占用十个字节长度
create table mytext(
name varchar(21841) not null,-- 21841 * 3 + 2 = 65523 + 2 = 65525
content text not null -- 10
)charset utf8;
-- 创建班级表
create table myclass(
name varchar(20) not null,
room varchar(20) null -- 代表允许为空 不写默认就是允许为空
)charset utf8;
-- 创建表
create table myteacher(
name varchar(20) not null comment '姓名',
money decimal(10,2) not null comment '工资'
)charset utf8;
-- 默认值
create table mydefault(
name varchar(20) not null,
age tinyint unsigned default 0,
gender enum('男','女','保密') default '男'
)charset utf8;
-- 插入数据
insert into mydefault (name) values('李四');
insert into mydefault values('李四',28,default);
insert into mydefault values('李六',28,'女');