美文网首页
SQL基础应用

SQL基础应用

作者: 肥四_F4 | 来源:发表于2020-07-01 16:35 被阅读0次

1.什么是SQL?
关系型数据库当中通用的查询语言。全名:结构化查询语言。

  1. SQL标准(ANSI/ISO)
    SQL-89
    SQL-92
    SQL-99
    SQL-03

  2. SQL 常用分类
    DDL :数据定义语言
    DCL :数据控制语言
    DML :数据操作语言
    DQL:实际包含在DML

  3. SQL_MODE
    5.7之后采用的是严格模式
    作用:
    为了我们SQL在执行时更加严谨,符合常识,符合科学等。。。
    例子:
    1>日期格式:2020-07-01
    2>触发运算:除数不能为0

查看SQL_MODE

mysql> select@@sql_mode;
+-------------------------------------------------------------------------------------------------------------------------------------------+
| @@sql_mode                                                                                                                                |
+-------------------------------------------------------------------------------------------------------------------------------------------+
| ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION |
+-------------------------------------------------------------------------------------------------------------------------------------------+
设置
mysql> select@@sql_mode='';
+---------------+
| @@sql_mode='' |
+---------------+
|             0 |
+---------------+
1 row in set (0.00 sec)
mysql>set sql_mode='ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';
mysql> select@@sql_mode;
+-------------------------------------------------------------------------------------------------------------------------------------------+
| @@sql_mode                                                                                                                                |
+-------------------------------------------------------------------------------------------------------------------------------------------+
| ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION |
+-------------------------------------------------------------------------------------------------------------------------------------------+
  1. 字符集和校对规则
    5.1字符集 show charset;
    utf8
    utf8mb4

utf8 和utf8mb4 区别?
例如:utf8 不完整,emoji表情字符是不支持的, utf8mb4是支持的。
根本原因:utf8字符最大长度为3字节,utf8mb4是4字节
5.2校对规则(排序规则)
show collation;
作用:影响到了字符串的排序

6.数据类型 https://www.jianshu.com/p/08c4b78402ff
作用:约束存储数据的数据更加有意义,符合对于这个列的定义
6.1 数字类型

5.png

6.2 字符串类型

image.png
char(10)
定长类型的字符串类型。最多存储10个字符,如果存了5个,剩余空间用空格填充
varchar(10)
变长类型的字符串类型。最多存储10个字符,如果存了5个,按需分配存储空间,另外需要1-2字节,存储字符长度
怎么选择:一般情况下 变长字符串就用varchar 固定长度一般采用char类型
enum():枚举类型
应用场景:列中的数据,有限个数的值的时候,并且是有规律。
enum('bj','sh','tj'....)

6.3 时间日期

image.png
DATETIME 
范围为从 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 03:14:07.999999。
timestamp会受到时区的影响

6.4 二进制


image.png

6.5 json类型

  1. 约束和其他表属性
列属性

约束(一般建表时添加):
**primary key** :主键约束
设置为主键的列,此列的值必须非空且唯一,主键在一个表中只能有一个,但是可以有多个列一起构成。
**not null**      :非空约束
列值不能为空,也是表设计的规范,尽可能将所有的列设置为非空。可以设置默认值为0
**unique key** :唯一键
列值不能重复
**unsigned** :无符号
针对数字列,非负数,要跟在数字类型之后,比如int。

其他属性:
**key** :索引
可以在某列上建立索引,来优化查询,一般是根据需要后添加
**default**           :设置默认值,一般配合not null 使用
列中,没有录入值时,会自动使用default的值填充
**auto_increment**:自增长
针对数字列,顺序的自动填充数据(默认是从1开始,将来可以设定起始点和偏移量) 一般配合主键
**comment ** :  列或者表进行注释

相关文章

网友评论

      本文标题:SQL基础应用

      本文链接:https://www.haomeiwen.com/subject/cbocqktx.html