MySQL提升

MySQL提升

一、MySQL数据类型

1.数值类型

​ TINYINT 极小的整数 -128—127

​ SMALLINT 小的整数

​ MEDIUMINT 偏小的整数

​ INT 中等的整数 INTGER

​ FLOAT 单精度浮点数

​ DOUBLE 双精度浮点数

2.日期/时间

​ DATE 日期 Year - Month - Day

​ TIME 时间 HH:mm:ss

​ YEAR 年

​ DATETIME 日期时间

​ TIMESTAMP 时间戳

3.字符串类型

​ VARCHAR 可变字符串 VARCHAR(50)

​ 优点:占用空间优化

​ 缺点:效率偏低

​ CHAR 定长字符串 CHAR(20) 只能为20

​ 优点:效率非常高

​ 缺点:占用空间大

​ TEXT 长文本数据

​ LONGTEXT 极大文本数据

二、表约束

约束:规定,我们可以给字段的数据设置存储的规则
例如:字段的数据不能为空,不能有重复的等等
约束 = 键

注意:

情况一:如果表没有定义主键,那么非空约束+唯一约束=主键,会吧这个字段当做主键(伪主键)
情况二:如果我们指定了主键,那么非空约束+唯一约束就不会变成主键(但效果一样)

自增约束:

只能给数值类型的主键字段添加,和主键一样,只能有一个,设置了自增约束,我们就可以不给这个字段传值,会自动写入,默认每次+1

三、外键约束

作用:关联其他表的,保证数据完整性与安全性,联合操作限制其他表的
简单来说结束插入的值必须在关联表中存在猜可以插入
要求:lnnoD8,外键字段必须和关联字的数据类型一致,必须关联主键,外键名在整个库中需要唯一

表与表之间的关系:

一对一关系:外键字段+唯一约束

一对多关系:外键字段

多对多关系:外键字段+联合主键

(1)非空约束

DESC `表名` // 查看表的结构
DELETE FROM `表名` WHERE `字段` IS NULL; // 删除字段为空的内容
ALTER TABLE `表名` MODIFY `字段` 类型 NOT NULL; // 非空约束
ALTER TABLE `表名` MODIFY `字段` 类型; // 删除非空约束

(2)唯一约束

ALTER TABLE `表名` ADD UNIQUE `字段_UNI`(`字段`); // 唯一
ALTER TABLE `表名` DROP KEY `字段_UNI`; // 删除唯一约束

(3)主键约束

ALTER TABLE `表名` ADD PRIMARY KEY (`字段`); // 非空+唯一等于主键,一张表只能有一个主键
ALTER TABLE `表名` DROP PRIMARY KEY; // 删除主键

(3)自增约束

ALTER TABLE `表名` CHANGE`id` `id` INT NOT NULL AUTO_INCREMENT; // 需要有主键才能设置自增

(4)默认约束

ALTER TABLE `表名` ALTER `字段` SET DEFAULT 18; // 设置默认值为18 
ALTER TABLE `表名` ALTER `字段` SET DEFAULT NULL; // 去除默认约束

(5)外键约束

ALTER TABLE `当前表` ADD FOREIGN KEY (`当前表的字段`) REFERENCES `参照的表` (`参照表的字段`);
CREATE TABLE `card`(  // 一卡通
	`id` INT PRIMARY KEY AUTO_INCREMENT,
	`money` FLOAT DEFAULT 0);
CREATE TABLE `classes`(  // 班级表
	`id` INT PRIMARY KEY AUTO_INCREMENT,
	`name` VARCHAR(30) NOT NULL,
	`slogan` TEXT);
CREATE TABLE `course`( // 课程表
	`id` INT PRIMARY KEY AUTO_INCREMENT,
	`name VARCHAR(30) NOT NULL,
	`scoure` FLOAT DEFAULT 10,
	UNIQUE KEY (`name`));
CREATE TABLE `student`(  // 学生表  
	`id` INT PRIMARY KEY AUTO_INCREMENT,
	`name` VARCHAR(30) NOT NULL,
	`age` INT,
	`card_id` INT,
	`class_id` INT,
	 CONSTRAINT `card_id_uni` UNIQUE KEY (`card_id`),
	 CONSTRAINT `card_if_for` FOREIGN KEY (`card_id`) 	      REFERENCES `card`(`id`) ON DELETE SET NULL,
	 CONSTRAINT `classes_id_for` FOREIGN KEY       (`classes_id`) REFERENCES `classes`(`id`));
CREATE TABLE `course_student`( // 学生选修课程记录表
	`id` INT NOT NULL UNIQUE KEY AUTO_INCREMENT,
	`student_id` INT,
	`course_id` INT,
	PRIMARY KEY (`student_id`,`course_id`),
	CONSTRAINT `student_id_for` FOREIGN KEY (`student_id`)) REFERENCES `student` (`id`),
	CONSTRAINT `course_id_for` FOREIGN KEY
	(`course_id_for`) REFERENCES `course`(`id`));
	

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值