首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

MySQL中的数据类型及约束

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

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20200330A0RC7I00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券