MySQL数据库学习笔记
一、数据库简介
MySQL数据库是一款关系型数据库管理系统,主要用于中小规模的数据的存储和处理,是现在相当流行的一款数据库类型。
关系型数据库是采用了关系模型来组织数据的数据库,实体之间的关系有一对一、一对多、多对多三种。
二、数据库的三大范式
范式:数据库设计时需要遵循一定的种规则,在关系型数据库中,这种规则就被称为范式。
1、第一范式(1NF):
基本数据项不可再分,也就是属性已经是最小的了,不能再继续向下划分。
2、第二范式(2NF):
满足第一范式的前提下,要有一个主键且其他属性要完全依赖于主键。
3、第三范式(3NF):
在满足第二范式的前提下,所有属性不能传递依赖于主键。
在此之外还有一些其他的范式存在,比如第四范式(BCNF)等,但一般情况下满足三大范式就已经是一个比较成功的数据库设计了。
三、SQL语句
1、介绍
SQL语句也被称作结构化查询语句,主要用于对关系型数据库进行各种操作,如:增删查改、建库删库等。
基本上所有的关系型数据库都支持SQL语言,但不同的关系型数据库SQL的细节方面会有些区别,不过都大同小异。
2、特点:
(1)、支持多行书写。
(2)、每一行语句都以分号结尾。
(3)、其本身不区分大小写。
3、分类
SQL语句依据实现的功能不同可分为四种:
(1)、数据库查询语言(DQL)
主要用于查询数据库中表的记录,关键字有select、from、where等。
(2)、数据库操作语言(DML)
主要用于对数据库中的数据进行添加、更新和删除操作,关键字有insert、delete、update等。
(3)、数据库定义语言(DDL)
主要用于定义和删除数据库对象,如数据库、表、列等,关键字有create,alter,drop等。
(4)、数据库控制语言(DCL)
主要用于数据库的访问权限、安全级别以及用户管理等,关键字有grant等。
4、数据库定义语言的使用
(1)、创建数据库
CREATE DATABASE TEST;
#创建一个名为 TEST 的数据库。
CREATE DATABASE TEST character set utf8 COLLATE utf8_general_ci;
#创建新数据库并设置字符集和排序规则
(2)、删除数据库
DROP DATABASE TEST; #删除名为 TEST 的数据库。
(3)、创建表
create table 表名(
字段名1 数据类型 [列级约束条件],
字段名2 数据类型 [列级约束条件],
字段名3 数据类型 [列级约束条件],
…
[,表级约束条件]);
#创建表,中括号内的是可选项。
#表级约束: CONSTRAINT `CONSTRAINT_1` CHECK (`id` = 5 or `id` = 6)
(4)、修改表
ALETER TABLE 表名
[add 新列名 数据类型[列级约束条件]] # 添加新的一列
[DROP COLUMN 列名[restrict|cascade]] # 默认是restrict,cascade是强制删除
[MODIFY COLUMN 列名 新数据类型] # 修改某一列的数据类型
举例:
# 添加列
alter table 表名 add 新列名 数据类型[列级约束条件];
# 修改数据类型
ALTER TABLE ld MODIFY COLUMN sex char(2);
# 删除列
alter table 表名 drop 列名;
(5)、删除表
drop table 表名;
附录
一、约束条件
1、列级约束条件
对一个数据列建立的约束,就被称为列级约束条件。
约束条件 | 约束描述 |
---|---|
primary key | 主键约束,约束的值可唯一的标识对应的记录 |
foreign key | 外键约束,约束与表之间的关系 |
unique | 唯一约束,约束字段的值是惟一的 |
not null | 非空约束,非空字段的值不能为空 |
default | 默认值约束,用于保证该字段在不设置具体的内容时,有一个默认值。 |
check | 检查约束,限制某个字段的值取值范围,MySQL8支持 |
auto_increment | 自增约束可以使表中某个字段的值自动增加,但一张表中只能存在一个自增长字段, |
2、表级约束条件
一般是对多个数据列建立的约束,但也可以应用于一列上。
约束条件 | 约束描述 |
---|---|
primary key | 主键约束,约束的值可唯一的标识对应的记录 |
foreign key | 外键约束,约束与表之间的关系 |
unique | 唯一约束,约束字段的值是惟一的 |
check | 检查约束,限制某个字段的值取值范围 |
二、SQL常用数据类型
数据类型 | 类型 | 大小 | 无符号范围 |
---|---|---|---|
SMALLINT | 整数 | 2 Bytes | (0,65 535) |
INT | 整数 | 4 Bytes | (0,4 294 967 295) |
FLOAT | 浮点型 | 4 Bytes | 0,(1.175 494 351 E-38,3.402 823 466 E+38) |
DOUBLE | 浮点型 | 8 Bytes | 0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308) |
DATETIME | 日期和时间类型 | 8 Bytes | '1000-01-01 00:00:00' 到 '9999-12-31 23:59:59' |
CHAR | 字符串类型 | - | 大小可以自行设置,是定长字符串,0-255 Bytes |
VARCHAR | 字符串类型 | - | 大小可以自行设置,是可变字符串,0-65535 Bytes |
梗知识
- CRUD程序员,CRUD是数据库增删查改英文的缩写,用这个来形容程序员是有些贬义的,但更多的是用来自嘲玩梗。