文章目录
表的创建
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;