一. SQL简单介绍
(1)类似linux中的shell,统一标准,能够应用于各种数据库
(2)SQL标准:SQL-92或SQL-99
(3)SQL验证:SQL_MODE约束
二. SQL常用分类
(1)DDL:数据定义语言
(2)DCL: 数据控制语言
(3)DML: 数据操作语言
(4)DQL: 数据查询语言
三. 数据类型(表的核心属性,字符集)
作用:保证数据的准确性和标准性
3.1 种类
3.1.1 数值类型
image.png
image.png
3.1.2 字符类型
image.png
image.png
char(10)与varchar(10)的区别(括号内的数字是自己规定限制的字符长度):
char(10)类型:是定长类型,不管存储什么长度的数据,都立即分配你所指定的固定字符串长度的存储空间,若数据小于你所指定的,无法沾满则用空来填充
varchar(10)类型:可变长度类型,按需分配存储空间,在你指定的长度的字符串存储空间中只要不超过你所指定的长度,需要多少就分配多少(但每次都要计算所需要字符串长度的存储空间)在varchar类型中,除了存储字符串本身外,还会存储字符长度,对于<=255个字符的会额外占用1个字节存储长度;>255个字符的会额外占用2个字节长度存储字符长度
注意:对于char(10)与varchar(10)的数据类型,括号中表示的是最多的字符个数
基础字符:a(字母)----1字节 1(数字)----1字节 {(符号)----1字节
中文:张---gbk字符集---2字节 张---utf8---3字节 张---utf8mb4---4字节
3.1.3 时间类型
image.png
image.png
3.1.4 二进制类型
一般不使用,neo4j:图片,视频的存储应用
image.png
3.1.5 枚举类型
enum(‘bj’,‘sh’,‘tj’,...)
对应着编号1,2,3,...
四. 表与列的属性
4.1 列属性
约束作用(一般建表时添加)
(1)not null:非空约束
- 列值不能为空,也是表设计的规范,尽可能将所有的列设置为非空。若无法保证,可以设置默认值,可以设置默认值为0。
(2)unique key:唯一键
- 列值不能重复,手机号,身份证号,银行卡号种类的列设定为UK
(3)primary key:主键约束
- 设置为主键的列,此列的值必须非空且唯一,主键在一个表中只能有一个,但是可以有多个列一起构成,一般会在表中设置自增长的id列。
(4)unsigned:无符号
- 针对数字列,非负数。一般是在int或tinyint后添加的附加属性
其他属性
(1)key:属性
- 可以在某列上建立索引,来优化查询,一般是根据需要后添加
(2)default:默认值
- 列中,没有录入值时,会自动使用default的值填充
(3)auto_increment:自增长
- 针对数字列,顺序的自动填充数据(默认是从1开始,将来可以设定起始点和偏移量)
(4)comment:注释信息
4.2 表属性
存储引擎:
InnoDB(默认的)
字符集和排序规则:
utf8
utf8mb4
五. 字符集及校对规则
5.1 字符集(charset)
show charset;(mysql中的查看方式)
gbk:中文字符占2个字节
utf8(mb3):中文字符占3个字节
utf8mb4:中文字符占4个字节
create database xs charset utf8mb4;
create table t1 ()charset utf8mb4;
5.2 校对/排序规则(collation)
5.2.1 举例
- 举例数据:Asd, ads, ass, bca, cda, Cdd
- 不区分大小写:ads, Asd, ass, bca, cda, Cdd
- 区分大小写:Asd, Cdd, ads, ass, bca, cda
5.2.2 utf8mb4字符集
show collaction(在mysql中查看方式)
(1)utf8mb4_general_ci: 通过校对默认值,不区分大小写
(2)utf8mb4_bin:区分大小写
六. DDL数据定义语言
6.1 库的定义
6.1.1 标准建库语句
mysql> create database db charset utf8mb4;(创建)
mysql> show create database xuexiao;(查看)
6.1.2 创建数据库方式
create database school;
create schema sch;
show charset;
show collation;
CREATE DATABASE test CHARSET utf8;
create database xyz charset utf8mb4 collate utf8mb4_bin;
6.1.3 建库规范
1.库名不能有大写字母
2.建库要加字符集
3.库名不能有数字开头
库名要和业务相关
6.1.4 删除库
drop database oldboy;(生产中禁用)
6.1.5 修改库(一般就是修改字符集)
SHOW CREATE DATABASE school;
ALTER DATABASE school CHARSET utf8;
6.1.6 查询库
show databases;
show create database oldboy;
6.2 表的定义
6.2.1 创建表
模板
create table stu(</