MySQL语法及常用数据类型

一、SQL语言概述

对数据库进行查询和修改操作的语言叫做SQL。SQL的含义就是结构化查询语言(Structured Query Language)。SQL包含以下4个部分:

1、数据定义语言(DDL):DROP、CREATE、ALTER等语句;

2、数据操作语言(DML):INSERT、UPDATE、DELETE语句;

3、数据查询语言(DQL):SELECT语句;

4、数据控制语言(DCL):GRANT、REVOKE、COMMIT、ROLLBACK的语句。

二、SQL语句的书写规范

1、在数据库系统中,SQL语句不区分大小写(建议用大写) ,但字符串常量区分大小写。

2、SQL语句可单行或多行书写,以“;”结尾。

3、关键词不能跨多行或简写。

4、用空格和缩进来提高语句的可读性。

5、子句通常位于独立行,便于编辑,提高可读性。

6、MySQL注释:使用“#”来注释

三、SQL语句执行过程

1、连接层

(1)提供连接协议:TCP/IP 、SOCKET;

(2)提供验证:用户、密码,IP,SOCKET;

(3)提供专用连接线程:接收用户SQL,返回结果。

通过以下语句可以查看到连接线程基本情况

mysql> show processlist;

2、SQL层

(1)接收上层传送的SQL语句;

(2)语法验证模块:验证语句语法,是否满足SQL_MODE;

(3)语义检查:判断SQL语句的类型

        DDL :数据定义语言、 DCL :数据控制语言、DML :数据操作语言、DQL: 数据查询语言等;

(4)权限检查:用户对库表有没有权限;

(5)解析器:对语句执行前,进行预处理,生成解析树(执行计划),说白了就是生成多种执行方案;

(6)优化器:根据解析器得出的多种执行计划,进行判断,选择最优的执行计划

         代价模型:资源(CPU IO MEM)的耗损评估性能好坏;

(7)执行器:根据最优执行计划,执行SQL语句,产生执行结果

         执行结果:在磁盘的xx位置上;

(8)提供查询缓存(默认是没开启的),会使用redis tair替代查询缓存功能;

(9)提供日志记录(日志管理章节):binlog,默认是没开启的;

         存储引擎层(类似于Linux中的文件系统);

         负责根据SQL层执行的结果,从磁盘上拿数据;

         将16进制的磁盘数据,交由SQL结构化化成表,

         连接层的专用线程返回给用户。

四、常用数据类型

1、整数类型

MySQL语法及常用数据类型_第1张图片

取值范围

MySQL语法及常用数据类型_第2张图片eg:

mysql> create table a1 (
    -> id int(10),
    -> stu_id tinyint
    -> );

2、浮点数和定点数类型

MySQL语法及常用数据类型_第3张图片

注:不论是定点数还是浮点类型,如果用户指定精度超出精度范围,则会四舍五入进行处理。

 eg:

mysql> create table a2 (
    -> a float,
    -> b double,
    -> c decimal(4,2)
    -> );
mysql> insert into a2 values 
    -> (6.5,8.9,4.506),
    -> (7.5555,888.888,2.33)
    -> ;

MySQL语法及常用数据类型_第4张图片 

3、日期与时间类型 

MySQL语法及常用数据类型_第5张图片

mysql> create table a3 (
    -> year year, #第一个为字段名  第二个为字段类型
    -> time time,
    -> date date,
    -> datetime datetime,
    -> timestamp timestamp
    -> );
mysql> insert into a3 values (2001,'12:34:54','2023-08-18','20230801122345','20050709184534');

MySQL语法及常用数据类型_第6张图片

 4、文本类型

MySQL语法及常用数据类型_第7张图片

ENUM类型:是一个字符串对象,其值为表创建时在列规定中枚举的一列值。枚举最多可以有65535个元素。

SET类型:是一个字符串对象,可以有零个或多个值,SET列最多可以有64个成员,其值为表创建时规定的一列值,指定包含多个SET成员的SET值时,各成员之间用逗号(,)间隔开。

eg:

mysql> create table a4 (
    -> a char(2),
    -> b varchar(4),
    -> c text,
    -> d enum('1','2','3'),
    -> e set('a','b','c','d')
    -> );
mysql> insert into a4 values
    -> ('22','rr','123456789','2','b,d')
    -> ;

MySQL语法及常用数据类型_第8张图片

你可能感兴趣的:(MySQL,mysql,数据库)