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

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约束也不支持
表级约束
除了非空,默认.其他都支持.

主键和唯一的区别:
在这里插入图片描述
外键:
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;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值