MySQL基础介绍

1. 什么是SQL

1.1 SQL简介

结构化查询语言

1.2 SQL的标准

SQL89 SQL92 SQL99 SQL03 SQL05

1.3 SQL_MODE

限制除数为零;设置SQL语句的;only_full_groupby;约束日期规范,防止出现零年零月零分(查看sql_mode:select@@sql_mode;)

1.4 SQL类型

DDL : 数据定义语言,库名,库属性,表名,表属性,列(列名,列属性),数据行
DCL : 数据控制语言,权限
DML : 数据操作语言,数据行
DQL : 数据查询语言,数据行

1.5 SQL功能

主要功能:管理、操作数据库对象

库:库名,库属性
表:表名,表属性,列(列名,列属性),数据行

2. MySQL规范性存储限制

2.1 字符集Charset

utf8 : 最大字节长度3个
utf8mb4 : 最大字节长度4个,可以存储emoji表情字符.
mysql> show charset;   ##查看所有的字符集.

2.2 排序规则

mysql> show collation;  ##默认是大小写不敏感(_ci, _bin)

2.4 数据类型

  • 数字类型
 tinyint:1字节可存储255个数字 ===>11111111===>0-2^8-1===>-2^7-2^7-1(3位)  
​ int:4字节长度  ===>0-2^32=>-2^32-2^32-1(10位数)
​ bigint:8字节长度  ===>0-2^64-1 ===>-2^63-2^63-1(20位数)
  • 字符串
char(10): 定长,最多10个字符,占用存储空间一定,最多存储255个字符
varchar(10): 最多存储65535个字符
    变长类型,最多10个,按需分配存储空间
    需要额外1个字符或2个字符存储字符长度
    因素:变长的字符串列,90%几率都是varchar
    具体的原因:  节省空间
enum('m','f'): 枚举类型
    enum('bj','sh','tj','cq')
  • 时间类型
TIMESTAMP:范围为从1000-01-01 00:00:00.000000 至 9999-12-31 23:59:59.999999

timestamp会受到时区的影响.1970-01-01 00:00:00.000000 至 2038-01-19 13:14:07.999999
  • 二进制类型:通过算法,转换成二进制,在录入到数据库
  • JSON : 字典类型;(一个大括号+一个键值对)
-- json的语法格式
mysql> CREATE TABLE t1 (jdoc JSON);

mysql> INSERT INTO t1 VALUES('{"key1": "value1", "key2": "value2"}');
-- json的查询语法格式
mysql> SELECT JSON_TYPE('["a", "b", 1]');
mysql> SELECT JSON_TYPE('"hello"');
  • gis : 地理位置

3. 约束

3.1 PrimaryKey(PK) 主键

特点:唯一且非空,一张表中只能有一个主键约束,一般是一个数字列,最好的是无意义的.

3.2 NOT NULL 非空

特点:不能为空。建议业务关键列(索引列),尽量设置成非空

3.3 UNIQUE 唯一约束

特点:不能有重复值

3.4 unsigned 数字列无符号

特点:必须要加载数字列后,表示数字无负数,一般适用于年龄……

4. 其他属性

4.1 AUTO INCREMENT自增长

特点:适用于ID主键列

4.2 DEFAULT默认值

特点:使用在NOT NULL列中,不填写值时,自动生成默认值

4.3 COMMNENT注释

特点:建议每个列都有一个注释

5. DCL控制语言

grant
remove

你可能感兴趣的:(MySQL基础介绍)