欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

mysql基础---DDL语言,库和表的管理,常见数据类型介绍,常见约束。

程序员文章站 2022-05-30 17:16:17
...

DDL语言

DDL语言即数据定义语言

一、库和表的管理

1.库的管理
创建 CREATE,修改,删除 drop

(1)库的创建
语法:
#加上 if NOT EXISTS 是容错性的处理,存在库就不创建,不存在则创建
create datebase [if NOT EXISTS] 库名;

#案例:创建books数据库
create DATABASE if NOT EXISTS books;

(2)库的修改
修改库名,修改库名需要关闭服务然后再改,然后再重新启动。
语法:

RENAME DATABASE 库名 to 新库名;

#修改库的字符集
ALTER DATABASE books CHARACTER SET gbk;

(3)库的删除

DROP DATABASE if EXISTS books;

2.表的管理:创建,修改,删除
(1)表的创建
语法:
CREATE TABLE 表名(
列名 类型[(长度) 约束],

列名 类型[(长度) 约束]
);

#示例:创建book表
create TABLE book(
	id INT,#编号
	bName VARCHAR(20),
	price DOUBLE,#价格
	authorId INT,#作者编号
	publishDate datetime  #出版日期
);
#查看book表结构
DESC book;

#案例:创建表author
create TABLE author(
	id INT,
	au_name VARCHAR(20),
	nation VARCHAR(10)
);
DESC author;

(2)表的修改
语法:
ALTER TABLE 表名 add|drop|CHANGE|MODIFY COLUMN 列名 [列类型 约束];

#①修改列名;
ALTER TABLE book CHANGE COLUMN publishdate pubDate datetime;
#②修改列的类型或约束
ALTER table book MODIFY COLUMN pubdate TIMESTAMP;

#③添加新列
ALTER TABLE author ADD COLUMN annual DOUBLE;

#④删除列
ALTER TABLE author DROP COLUMN annual;

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

(3)表的删除
语法:

drop TABLE if EXISTS book_author;#if EXISTS 存在再删除

二、常见的数据类型
数值型:
整形
小数:
定点数
浮点数
字符型:
较短的文本:char,VARCHAR
较长的文本:text,BLOB(较长的二进制数据)
日期型:
datetime

1.整形
分类:
TINYINT,SMALLINT,MEDIUMINT,INT,BIGINT

2.小数
(1)浮点型:
FLOAT(m,d)
DOUBLE(M,D)

(2)定点型
DEC(M,D)
DECIMAL(M,D)

特点
①M和D :
M: 整数部位+小数部位
D: 小数部位
如果超过范围,则插入临界值

M和D都可以省略
如果是decimal,则M默认为10,D默认为0
如果是float和double,则会根据插入的数值的精度来决定精度

定点型的精确度较高,如果要求插入数值的精度较高如货币运算,优先使用定点型,否则就用
浮点型即可,因为浮点型占用的字节较少,节省空间.

3.字符型
较短的文本:
CHAR(M),VARIANCE(M),enum(‘a’,‘b’,…,‘m’)用于保存枚举,SET(‘a’,‘b’,…,‘m’)用于保存集合

char和varchar类型:
特点:
写法 特点 空间的耗费
char char(m) 固定长度 比较耗费
VARCHAR VARCHAR(m) 可变长度 比较节省

较长的文本:
text和blob(较大的二进制)

#enum的使用
CREATE TABLE tab_enum(
	e1 enum('a','b')
);
insert INTO tab_enum VALUES('a');
insert INTO tab_enum VALUES('b');
SELECT * from tab_enum;

#SET的使用
CREATE TABLE tab_set(
	s1 SET('a','b','c','m')
);
insert INTO tab_set VALUES('a');
insert INTO tab_set VALUES('b');
insert INTO tab_set VALUES('a,b');
insert INTO tab_set VALUES('c,b,a');
SELECT * from tab_set;

4.日期时间类型
DATE(expr)只有日期没有时间;
TIMESTAMP(expr) 既有日期也有时间戳;
datetime 既有日期也有时间戳;
year 只保存年;
TIME(expr)只保存时间没有日期;

CREATE TABLE tab_date(
		t1 datetime,
		t2 TIMESTAMP
);

INSERT INTO tab_date VALUES(NOW(),NOW());

SELECT * FROM tab_date;

三、常见约束

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

分类:六大约束
not NULL:非空约束,该字段的值不能为空
DEFAULT:默认值约束
PRIMARY KEY:主键,该字段的值具有唯一性,不允许为空.
UNIQUE:唯一约束,用于保证该字段的值具有唯一性,但可以为空;
CHECK:检查约束(mysql中不支持)
FOREIGN key:外键约束,用于限制两个表的关系,用于保证该字段的值必须来自于主表的关联列的值.
在从表添加外键约束.用于应用主表中某列的值.
约束的添加分类:
列级约束
六大约束语法上都支持.但外键约束没有效果,CHECK约束也不支持
表级约束
除了非空,默认.其他都支持.

主键和唯一的区别:
mysql基础---DDL语言,库和表的管理,常见数据类型介绍,常见约束。
外键:
1.要求在从表设置外键关系;
2.从表的外键列的类型和主表的关联列的类型要一致,名称可以不同;
3.主表的关联列必须是一个key(一般是主键或唯一键);
4.插入数据时,先插入主表,再插入从表;
删除数据时,要先删除从表,再删除主表

CREATE TABLE tb_name(
字段名 字段类型 列级约束,
字段名 字段类型,
表级约束
);

表级约束:
语法:
在各个字段的最下面
[CONSTRAINT 约束名] 约束类型(字段名)

1.创建表时添加约束
(1)添加列级约束

#专业表
CREATE TABLE major(
		id INT PRIMARY KEY,
		majorName VARCHAR(20)
);
#学生信息表
CREATE  TABLE stuinfo(
		id INT PRIMARY KEY,#主键
		stuName VARCHAR(20) NOT NULL, #非空
		gender CHAR(1),
		seat INT UNIQUE,#唯一
		age INT DEFAULT 18,#默认约束
		majorId INT(10),
		#表级约束 (	CONSTRAINT fk_stuinfo_major 可省略)
		CONSTRAINT fk_stuinfo_major FOREIGN KEY(majorId) REFERENCES students.major(id) #外键
);

2.修改表时添加约束;

语法:
1.添加列级约束
ALTER TABLE 表名 MODIFY COLUMN 字段名 字段类型 新约束;

2.添加表级约束
ALTER TABLE 表名 ADD [CONSTRAINT 约束名] 约束类型(字段名) [外键的引用(外键约束的时候才要)]

#先创建一个测试表
CREATE  TABLE stuinfo2(
		id INT,
		stuName VARCHAR(20),
		gender CHAR(1),
		seat INT,
		age INT,
		majorId INT(10)
);
DESC stuinfo2;

#(1)添加非空约束
ALTER TABLE stuinfo2 MODIFY COLUMN stuName VARCHAR (20) NOT NULL;
#(2)添加默认约束
ALTER TABLE stuinfo2 MODIFY COLUMN age int DEFAULT 18;
#(3)添加主键
#①列级约束
alter TABLE stuinfo2 MODIFY COLUMN id INT PRIMARY KEY;
#②表级约束
ALTER TABLE stuinfo2 ADD PRIMARY KEY(id);

#(4)添加唯一约束
#①列级约束
ALTER TABLE stuinfo2 MODIFY COLUMN seat INT UNIQUE;
#表级约束
ALTER TABLE stuinfo2 ADD UNIQUE(seat);

#(5)添加外键
ALTER TABLE stuinfo2 ADD FOREIGN KEY(majorid) REFERENCES major(id);

ALTER TABLE `stuinfo2` ADD FOREIGN KEY(`majorid`) REFERENCES `major`(`id`);

3.修改表时删除约束

#(1)删除非空约束
ALTER TABLE stuinfo2 MODIFY COLUMN stuName VARCHAR(20);
ALTER TABLE stuinfo2 MODIFY COLUMN stuName VARCHAR(20) NULL;

#(2)删除默认约束
ALTER TABLE stuinfo2 MODIFY COLUMN age INT;

#(3)删除主键
ALTER TABLE stuinfo2 DROP PRIMARY KEY;

#(4)删除唯一
alter TABLE stuinfo2 DROP INDEX seat;

#(5)删除外键
ALTER TABLE stuinfo2 DROP FOREIGN key majorId;
相关标签: mysql基础 mysql