表完整性约束
作用:用于保证数据的完整性和一致性
约束条件 说明
PRIMARY KEY (PK):标识该字段为该表的主键,可以唯一的标识记录,不可以为空UNIQUE + NOT NULL
FOREIGN KEY (FK):标识该字段为该表的外键,实现表与表(父表主键/子表1外键/子表2外键) 之间的关联
NULL:标识是否允许为空,默认为NULL。
NOT NULL:标识该字段不能为空,可以修改。
UNIQUE KEY (UK):标识该字段的值是唯一的,可以为空,一个表中可以有多个UNIQUE KEY
AUTO_INCREMENT:标识该字段的值自动增长(整数类型,而且为主键)
DEFAULT:为该字段设置默认值
UNSIGNED:无符号,正数
1.主键 每张表里只能有一个主键,不能为空,而且唯一。 定义两种方式:
mysql> create table t7(hostname char(20) primary key,ip char(150));
mysql> create table t9(hostname char(20),ip char(150),primary key(hostname));
删除主键
mysql> alter table t7 drop primary key;
auto_increment--------自增 (每张表只能有一个字段为自曾) (成了key才可以自动增长)
mysql> CREATE TABLE department3 (
-> dept_id INT PRIMARY KEY AUTO_INCREMENT,
-> dept_name VARCHAR(30),
-> comment VARCHAR(50)
-> );
设置唯一约束 UNIQUE
mysql> CREATE TABLE department2 (
-> dept_id INT,
-> dept_name VARCHAR(30) UNIQUE,
-> comment VARCHAR(50)
-> );
插入数据的时候id和comment字段相同可以插入数据,如果有相同的名字不唯一。所以插入数据失
败。
- 是否允许为空,默认NULL,可设置NOT NULL,字段不允许为空,必须赋值
- 字段是否有默认值,缺省的默认值是NULL,如果插入记录时不给字段赋值,此字段使用默认值
sex enum('male','female') not null default 'male' #只能选择maie和female,不允许为
空,默认是male
age int unsigned NOT NULL default 20 #必须为正值(无符号) 不允许为空 默认是20
mysql> create table t5(id int(5),name varchar(10),age int(5) not null default 20);
指定字符集:
修改字符集 :在创建表的最后面指定一下: default charset=utf8 #可以指定中文
注意
如果报错进入server端服务器登陆mysql执行:
mysql> use mysql
mysql> update user set host = '%' where user = 'root';
mysql> flush privileges;