一、库的管理

对于库创建、修改、删除操作关键字:

创建: create
修改: alter
删除: drop

语法:

create database [if not exists]库名;

#案例:创建库Books

CREATE DATABASE IF NOT EXISTS books ;

输入命令操作前存在的数据库

mysql not null约束能命名吗 mysql约束命令_mysql


输入操作命令

mysql not null约束能命名吗 mysql约束命令_数据库_02


结果可以看见新增了一个books数据库

mysql not null约束能命名吗 mysql约束命令_主键_03


#2、库的修改(一般不用)

RENAME DATABASE books TO 新库名;#更改库的字符集(一般不用)

ALTER DATABASE books CHARACTER SET gbk;

#案例、库的删除

DROP DATABASE IF EXISTS books;

mysql not null约束能命名吗 mysql约束命令_mysql


输入删除命令以后需要在图形化页面刷新后此处books已经找不到了。

二、表的管理

#1.表的创建 ★
/*
语法:
create table 表名(
列名 列的类型【(长度) 约束】,
列名 列的类型【(长度) 约束】,
列名 列的类型【(长度) 约束】,

列名 列的类型【(长度) 约束】
)
*/
#案例:创建表Book

CREATE TABLE book(
	id INT,#编号
	bName VARCHAR(20),#图书名
	price DOUBLE,#价格
	authorId  INT,#作者编号
	publishDate DATETIME#出版日期
);

1.选择要进入的数据库 use 数据库名进入想要进入的数据库,

2.创建的books库为例输入创建表内容以上诉代码为例:

mysql not null约束能命名吗 mysql约束命令_mysql_05


3.图形化页面的到所示结果:

mysql not null约束能命名吗 mysql约束命令_字段_06


#2.表的修改
 /*
 语法
alter table 表名 add|drop|modify|change column 列名 【列类型 约束】;
 */
#①修改表列名
 ALTER TABLE book CHANGE COLUMN publishdate pubDate DATETIME;

修改了上诉publishDate的列表名字为pubDate

mysql not null约束能命名吗 mysql约束命令_数据库_07


#②修改列的类型或约束

ALTER TABLE book MODIFY COLUMN pubdate TIMESTAMP;#③添加新列

ALTER TABLE book ADD COLUMN annual DOUBLE;

向book表中添加列:

mysql not null约束能命名吗 mysql约束命令_mysql_08


#④删除列

ALTER TABLE book_author DROP COLUMN annual;

#⑤修改表名
ALTER TABLE author RENAME TO book_author;

三、常见约束

常见约束案例

含义:一种限制,用于限制表中的数据,为了保证表中的数据的准确和可靠性


分类:六大约束
	NOT NULL:非空,用于保证该字段的值不能为空
	比如姓名、学号等
	DEFAULT:默认,用于保证该字段有默认值
	比如性别
	PRIMARY KEY:主键,用于保证该字段的值具有唯一性,并且非空
	比如学号、员工编号等
	UNIQUE:唯一,用于保证该字段的值具有唯一性,可以为空
	比如座位号
	CHECK:检查约束【mysql中不支持】
	比如年龄、性别
	FOREIGN KEY:外键,用于限制两个表的关系,用于保证该字段的值必须来自于主表的关联列的值
		在从表添加外键约束,用于引用主表中某列的值
	比如学生表的专业编号,员工表的部门编号,员工表的工种编号
	

添加约束的时机:
	1.创建表时
	2.修改表时

一、创建表时添加约束

一、添加列级约束
语法:
直接在字段名和类型后面追加 约束类型即可。
只支持:默认、非空、主键、唯一

CREATE TABLE stuinfo(
	id INT PRIMARY KEY,#主键
	stuName VARCHAR(20) NOT NULL UNIQUE,#非空
	gender CHAR(1) CHECK(gender='男' OR gender ='女'),#检查
	seat INT UNIQUE,#唯一
	age INT DEFAULT  18,#默认约束
	majorId INT REFERENCES major(id)#外键
);

二、添加表级约束
语法:在各个字段的最下面
【constraint 约束名】 约束类型(字段名)

CREATE TABLE stuinfo(
   id INT,
   stuname VARCHAR(20),
   gender CHAR(1),
   seat INT,
   age INT,
   majorid INT,
   CONSTRAINT pk PRIMARY KEY(id),#主键
   CONSTRAINT uq UNIQUE(seat),#唯一键
   CONSTRAINT ck CHECK(gender ='男' OR gender  = '女'),#检查
   CONSTRAINT fk_stuinfo_major FOREIGN KEY(majorid) REFERENCES major(id)#外键
);

#通用的写法:★

CREATE TABLE IF NOT EXISTS stuinfo(
	id INT PRIMARY KEY,
	stuname VARCHAR(20),
	sex CHAR(1),
	age INT DEFAULT 18,
	seat INT UNIQUE,
	majorid INT,
	CONSTRAINT fk_stuinfo_major FOREIGN KEY(majorid) REFERENCES major(id)
);

二、修改表时添加约束

1、添加列级约束
alter table 表名 modify column 字段名 字段类型 新约束;

2、添加表级约束
alter table 表名 add 【constraint 约束名】 约束类型(字段名) 【外键的引用】;

CREATE TABLE stuinfo(
	id INT,
	stuname VARCHAR(20),
	gender CHAR(1),
	seat INT,
	age INT,
	majorid INT
)
#1.添加非空约束
 ALTER TABLE stuinfo MODIFY COLUMN stuname VARCHAR(20) NOT NULL;
 #2.添加默认约束
 ALTER TABLE stuinfo MODIFY COLUMN age INT DEFAULT 18;
 #3.添加主键
 #①列级约束
 ALTER TABLE stuinfo MODIFY COLUMN id INT PRIMARY KEY;
 #②表级约束
 ALTER TABLE stuinfo ADD PRIMARY KEY(id);#4.添加唯一
#①列级约束
 ALTER TABLE stuinfo MODIFY COLUMN seat INT UNIQUE;
 #②表级约束
 ALTER TABLE stuinfo ADD UNIQUE(seat);#5.添加外键
 ALTER TABLE stuinfo ADD CONSTRAINT fk_stuinfo_major FOREIGN KEY(majorid) REFERENCES major(id);

三、修改表时删除约束

#1.删除非空约束
ALTER TABLE stuinfo MODIFY COLUMN stuname VARCHAR(20) NULL;

#2.删除默认约束
ALTER TABLE stuinfo MODIFY COLUMN age INT ;

#3.删除主键
ALTER TABLE stuinfo DROP PRIMARY KEY;

#4.删除唯一
ALTER TABLE stuinfo DROP INDEX seat;

#5.删除外键
ALTER TABLE stuinfo DROP FOREIGN KEY fk_stuinfo_major;
SHOW INDEX FROM stuinfo;

常见约束练习

#1.向表emp2的id列中添加PRIMARY KEY约束(my_emp_id_pk)

ALTER TABLE emp2 MODIFY COLUMN id INT PRIMARY KEY;
ALTER TABLE emp2 ADD CONSTRAINT my_emp_id_pk PRIMARY KEY(id);

#2.	向表dept2的id列中添加PRIMARY KEY约束(my_dept_id_pk)

#3.	向表emp2中添加列dept_id,并在其中定义FOREIGN KEY约束,与之相关联的列是dept2表中的id列。
ALTER TABLE emp2 ADD COLUMN dept_id INT;
ALTER TABLE emp2 ADD CONSTRAINT fk_emp2_dept2 FOREIGN KEY(dept_id) REFERENCES dept2(id);

		位置		支持的约束类型			是否可以起约束名
列级约束:	列的后面	语法都支持,但外键没有效果	不可以
表级约束:	所有列的下面	默认和非空不支持,其他支持	可以(主键没有效果)

mysql not null约束能命名吗 mysql约束命令_字段_09


mysql not null约束能命名吗 mysql约束命令_数据库_10