表操作;
create table 表名(字段名 类型[(宽度) 约束条件])
解释:
类型;使用限制字段必须以什么样的数据类型传值
约束条件;约束条件是在类型之外 添加一种额外的限制
注意:
1.在同一张表中,字段名是不能相同
2.宽度和约束条件可选,字段名和类型是必须的
3.最后一个字段后不加逗号
基本数据类型
1.整形
作用;id号,证件号,年龄等,
分类;tinyint int(*****) bigint
测试。。。
create table t1(x tinyint)默认是有符号的
如果超过最大限制 自动存最大值
insert into t1 values(128),(-129);
create table t2(x tinyint unsigned);#无符号
insert into t2 values(-1),(256);
整形的宽度是显示宽度(整形的存储限制是一开始规定好的)
create table t3(x int(8)unsigned);
insert into t3 values(42615156156165156156156156151655156156165);
在创建表时;如果字段采用的是 整形类型,完全无需指定显示宽度,默认的显示宽度 就足够用了
2.浮点型
作用;工资,身高,
分类;float double decimal
测试。。。
create table t9(x float(255,30));#255是数字总个数,30是小数个数
create table t10(x double(255,30));
create table t11(x decimal(65,30));
不同点;
float与double类型存放的整数位比decimal更多
精度 低☞高 float double decimal
3.字符类型
定长char 变长varchar
测试。。。(字符的宽度限制单位是字符个数)
create table t12(x char(4));#超出4个报错,不够4个用空格补全
create table t13(x varchar(4));#不够4个不补全
注意;针对char类型 mysql在存储时会将数据用空格补全存放到硬盘中,但会在读出结果时自动去掉末尾的空格,因为末尾的空格在以下的场景中是无用的
mysql>select * from t14 where name='lxx';#name 字段明确地等于一个值在,该值后填充空格是没用的
mysql>select * from t14 where name like 'lxx';#name 字段模糊匹配一个值,该值后填充空格是有用的
char
优点:存取速度快
缺点:浪费空间
varchar
优点:节省空间
缺点:存取速度都慢
4.日期类型
date:1999-01-27
time:11:11:11
datetime:1999-01-27 11:11:11
year: 1999
测试。。。
create table student(id int,name char(16),
born_year year,
birth date,
class_time time,
reg_time datetime);
5.枚举与集合类型
枚举 enum 多选一个
集合 set 多选多
测试。。。
create table teacher(id int,name char(16),
sex enum('male','female','other'),
hobbies set('play','read','music'));
not null不能为空 default默认值
测试。。。
create table t15(id int,name char(16)not null);
create table t16(id int,name char(16)not null,sex
char(6)not null default'male’);
insert into t15(name,id) values('egon',1);
unique独一无二
单一唯一
create table t17(id int unique,name char(16));
create table sewer(id int unique,name char(16),
ip char(15),
port int,
unique(ip,pore));
primary key;主键
单单从约束角度去看,primary key就等同于 not null unique
create table t18(id int primary key);
强调:一张表中必须有,并且只能有一个主键
一张表中通常都应该有一个id字段,而且通常应该把id字段做成主键
联合主键;
create table t18(ip char(15),port int,primary key(ip,port));
auto_increment自动增加id编号
注意点:通常都给id和主键一起来用
auto_increment只能给被定义为key用,