MySQL语法及常用数据类型

本文介绍了SQL语言的基本概念,包括其组成部分(DDL、DML、DQL、DCL),书写规范,执行过程(连接层、SQL层、存储引擎层),以及常用的数据类型如整数、浮点、日期、时间和文本类型(ENUM和SET)。
摘要由CSDN通过智能技术生成

一、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、整数类型

取值范围

eg:

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

2、浮点数和定点数类型

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

 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)
    -> ;

 

3、日期与时间类型 

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');

 4、文本类型

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')
    -> ;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值