列属性(表的约束条件)

表的创建

CREATE TABLE 表名
(
列名a 数据类型(数据长度) 列级约束条件,
列名b 数据类型(数据长度) 列级约束条件,
列名c 数据类型(数据长度) 列级约束条件
...
表级约束条件(约束条件涉及到多个属性列,则须定义在表级上)
);

CREATE TABLE `runoob_tbl`(
   `runoob_id` INT UNSIGNED AUTO_INCREMENT,
   `runoob_title` VARCHAR(100) NOT NULL,
   `runoob_author` VARCHAR(40) NOT NULL,
   `submission_date` DATE,
   PRIMARY KEY ( `runoob_id` )
)ENGINE=InnoDB DEFAULT CHARSET=utf8;

常见的列属性(约束条件CONSTRAINTS)

列属性 说明
NULL 没有约束条件的默认值
NOT NULL 不允许为空
DEFAULT 默认值
UNIQUE 唯一值
PRIMARY KEY 主键
FOREIGN KEY 外键
AUTO_INCREMENT 自增
COMMENT 注释

一、NOT NULL

字段名 数据类型(数据长度) NOT NULL

phone INT(12) NOT NUL

二、DEFAULT

字段名 数据类型(数据长度) DEFAULT 默认值

age INT(10) DEFAULT 18

三、UNIQUE

1、列级

字段名 数据类型(数据长度) UNIQUE

id INT(4) UNIQUE

2、表级

UNIQUE (字段名)

CREATE TABLE department
(
  dpt_name   CHAR(20) NOT NULL,
  people_num INT(10) DEFAULT '10',
  UNIQUE (dpt_name),
 );

四、PRIMARY KEY

1、列级

字段名 数据类型(数据长度) PRIMARY KEY

id INT(4) PRIMARY KEY

2、表级

PRIMARY KEY(列a,列b,...)

create table my_pri(
number char(10),
course char(10),
score TINYINT,
PRIMARY KEY(number,course)--复合主键
)charset utf8;

3、追加主键。有两种方式:

# 第一为修改表字段属性;
alter TABLE my_pri MODIFY number char(11) PRIMARY KEY;

# 第二直接追加
alter table table_name add PRIMARY KEY(column) ;

alter TABLE my_pri add PRIMARY KEY(number,course);--增加复合主键

alter table my_pri add CONSTRAINT pk_score PRIMARY KEY(score)--使用关键字CONSTRAINT 且指定主键名字pk_score 

alter table my_pri add CONSTRAINT  PRIMARY KEY(score)--使用关键字CONSTRAINT 且使用默认名字

五、FOREIGN KEY

CONSTRAINT 外键名(自定义) FOREIGN KEY(外键列)REFERENCES 表名(外键列指向的列)

CREATE TABLE department
(
  dpt_name   CHAR(20) NOT NULL,    --外键列指向的列
  people_num INT(10) DEFAULT '10',
 );

CREATE TABLE employee
(
  id INT(10) PRIMARY KEY,
  name CHAR(20),
  in_dpt CHAR(20) NOT NULL,    --外键列
  CONSTRAINT emp_fk FOREIGN KEY (in_dpt) REFERENCES department(dpt_name)
 );

六、AUTO_INCREMENT

字段名 数据类型(数据长度) AUTO_INCREMENT,

id INT(10) AUTO_INCREMENT,

七、注释

1、# 单行注释

SELECT 1+1;     # This comment continues to the end of line

2、-- 单行注释(注意,-- 后要跟一个空格)

SELECT 1+1;     -- This comment continues to the end of line

3、/* */ 多行注释

mysql> SELECT 1 /* this is an in-line comment */ + 1;

mysql> SELECT 1+
/*
this is a
multiple-line comment
*/
1;

猜你喜欢

转载自blog.csdn.net/weixin_37641832/article/details/82819501