1.数值类型
MySQL支持所有标准SQL数值数据类型。
作为SQL标准的扩展,MySQL也支持整数类型TINYINT、MEDIUMINT和BIGINT。
数值类型中的长度m是指显示长度,并不表示存储长度,只有字段指定zerofill 时有用
例如: int(3), 如果实际值是2,如果列指定了zerofill, 查询结果就是002,左边用0来填充
2.浮点类型
m 代表总个数 d代表小数位
比如:(6,2)就是对应的 6666,66
3.字符串类型
红框为常用的
1.要注意的是只有char固定长度
2.n值的是字符串的长度 这里比如n是10 就能存10个汉字,不是字节长度
(中文3个字节,英文1个字节)
3.char 和 varchar
1)char(n)若存入字符数小于n,则以空格补于其后,查询之时再将空格去掉。所以char类型存储的字符串末尾不能有空格,varchar不限于此。
2)char类型的字符串检索速度要比varchar 类型的快。
4.varchar 和 text
1)varchar可指定n, text 不能指定,内部存储varchar 是存入的实际字符数+1个字节(n255), text 是实际字符数+2个字节。
2)text类型不能有默认值。
3)varchar可直接创建索引,text 创建索引要指定前多少个字符。varchar 查询速度快于text, 在都创建索引的情况下,text 的索引似乎不起作用。
4.日期类型
约束类型:
1) 非空约束(not nul)
2) 唯一性约束(unique)
3) 主键约束(primary key) PK
4) 外键约束(foreign key) FK
5) 检查约束(目前MySQL不支持、Oracle 支持)不支持
约束的添加有两种
1.创建表的初期就添加约束
2.修改表的约束
查询表中的约束信息
SHOW KEYS FROM 表名
show keys from emp;
1.创建表时添加约束
1.自动增长的类型最好是int类型
2.在一个表中只有一个列是自动增长
3.表中只有主键和唯一性约束的列具备自动增长
示例:
创建departments表包含department_ id 该列为主键且自动增长,department name列不允许重复,location id 列不允含有空值。
CREATE TABLE departments ( department_id INT PRIMARY KEY auto_increment, department_name VARCHAR ( 30 ) UNIQUE, location_id INT NOT NULL );
1.设置主键
PRIMARY KEY
2.设置自动增长
auto_increment
3.唯一
UNIQUE
4.不为空
not null
查看约束
show keys from 表名
show keys from emp;
创建employees表包含employees_ id 该列为主键且自动增长,last_ name 列不允许含有空值,email 列不允许有重复不允许含有空值,dept id 为外键参照departments表的主键。
create table employees( employees_id int primary key auto_increment, last_name varchar(30) not null, email varchar(30)not null unique, dept_id int, constraint emp_fk foreign key(dept_id) references departments(department_id))
2.修改实现元素的添加和删除
添加主键约束
ALTER TABLE 表名 ADD PRIMARY KEY(列名)
alter table employees1 add primary key(employees_id);
添加自动增长
ALTER TABLE 表名 MODIFY 列名 类型 AUTO_INCREMENT
alter table employees1 modify employees_id int auto_increment;
删除主键约束
ALTER TABLE 表名 DROP PRIMARY KEY
alter table emp drop primary key;
添加非空约束
ALTER TABLE 表名 MODIFY 列名 类型 NOT NULL
alter table employee modify employee_id int not null;--int类型alter table employee modify salary float(8,2) not null;-- 浮点类型
删除非空约束
ALTER TABLE 表名 MODIFY 列名 类型 NULL
alter table employee modify employee_idint null;
添加唯一性约束
ALTER TABLE 表名 ADD CONSTRAINT 约束名 UNIQUE(列名)
alter table emp add constraint emp_uk unique(name);
删除唯一约束
ALTER TABLE 表名 DROP KEY 约束名
show key from 可以查看约束名
alter table emp drop key emp_uk;
添加外键约束
ALTER TABLE 表名 ADD CONSTRAINT 约束名 FOREIGNKEY(列名)
REFEWNCES 参照的表名(参照的列名)
alter table emp add constraint e_fk foregin key(dept_id)reference departments(department_id)
删除外键
ALTER TABLE 表名 DROP FOREIGN KEY 约束名
在创建外键的时候,mysql会将外键名放到索引中,所以还要多一步,删除索引
删除外键操作
alter table emp drop foreign key emp_fk
删除索引操作
ALTER TABLE 表名 DROP INDEX 索引名(索引名一般和外键名相同
alter table emp drop index emp_fk
领取专属 10元无门槛券
私享最新 技术干货