第三章 SQL语法入门

第三章 SQL语法入门

一、SQL语句概述

1、SQL语句介绍

  • 维基百科的定义:
    • SQL(Structured Query Language,结构化查询语句)是一种特定目的编程语言,用于管理关系数据库管理系统,或在关系流数据管理系统中进行流处理。
    • SQL基于关系代数和元组关系演算,包括一个数据定义语言和数据操作语言。SQL的范围包括数据插入、查询、更新和删除,数据库模式创建和修改,以及数据访问控制。

2、SQL语句分类

  • DDL(Definition Language)数据定义语言
    • 用于定义或修改数据库中的对象,如:表、索引、视图、数据库、存储过程、触发器、自定义函数等
  • DML(Data Manipulation Language)数据操作语言
    • 用于对数据库表中的数据进行操作,如插入,更新和删除
  • DCL(Data Control Language)数据控制语言
    • 用来设置或更改数据库事务、保存点操作、授权操作(用户或角色授权,权限回收,创建角色,删除角色)、锁表、锁实例等
  • DQL(Data Query Language)数据查询语言
    • 用来查询数据内数据,如查询数据,合并多个select语句的结果集、子查询

二、数据类型

1、数据类型

  • 数据类型是数据的基本属性,主要用于创建表时指定字段的数据类型,包括:
    • 常用数据类型
      • 数值类型、字符类型、日期类型等
    • 非常用数据类型
      • 布尔类型、空间数据类型、JSON数据类型等

2、常用数据类型

(1)数值类型:
  • 整数类型

    整数类型范围(Signed)范围(Unsigned)占用空间(Bytes)
    tinyint[-128,127][0,255]1
    smallint[-32768,32767][0,65535]2
    mediumint[-8388608,8388607][0,16777215]3
    int(integer)[-2147483648,2147483647][0,4294967295]4
    bigint8
  • 浮点类型

    • float:
      • 单精度浮点数,8位精度
      • 占4字节
    • double:
      • 双精度浮点数,16位精度
      • 占用8字节
  • 定点类型

    • decimal/numeric:
(2)字符类型:
  • char 与 varchar

    • char(n):
      • 存储定长字符串,n取值0~255
      • 若输入长度小于n,则用空格在右端补齐
    • varchar(n):
      • 存储变长字符串,n取值0~65535
      • 若输入长度小于n,不需要利用空格补齐
  • binary与var binary

    • binary(n):
      • 存储二进制定长字符串
      • 少于n个字节的会自动在尾部加 0x00 字节
    • varbinary(n):
      • 存储二进制变长字符串
      • 少于n个字节的不会去填补 0x00 字节
  • text

    • 存储大对象变长字符串
    • 关键词:tinytext(1 byte), text(2 bytes), mediumtext(3 bytes), longtext(4 bytes)
  • blob

    • 存储二进制大对象变长字符串
    • 关键词:tinyblob(1 byte), blob(2 bytes), mediumenblob(3 bytes), longblob(4 bytes)
  • enum

    • 单选枚举,最多可包含65535个不同的元素
  • set

    • 多选枚举,最多可包含64个元素
(3)日期类型:
日期类型范围格式占用空间(Bytes)
year1901/2155yyyy/yy1
date1000-01~01/9999-12-31yyyy-mm-dd3
time-838:59:59/838:59:59hh:mm:ss3
timestamp1970-01-01 00:00:00/2037-12-31 23:59:59yyyy-mm-dd hh-mm-ss4
datetime1000-01-01 00:00:00/9999-12-31 23:59:59yyyy-mm-dd hh-mm-ss8

3、非常用数据类型

  • 布尔类型
数据类型说明对应关键字取值范围占用空间
boolean存储布尔类型数据,转化为tinyint(1)存储bool / booleantrue / false1字节
  • 空间数据类型
    • geometry
    • point
    • linestring
    • polygon
  • JSON数据类型
    • 支持原生JSON数据类型,可以更有效地存储和管理 JSON 文档

4、数据类型案例介绍

三、系统函数

1、系统函数

  • 系统函数是对一些业务逻辑的封装,以完成特定的功能。系统函数可以有参数,也可以没有参数。系统函数执行完成后会返回执行结果。
  • 系统函数的分类如下:
    • 数值计算函数
    • 字符处理函数
    • 时间日期函数
    • 类型转换函数
    • 系统信息函数

2、数值计算函数

  • abs(X), cos(X), sin(X), asin(X); 返回表达式的绝对值,余弦值,正弦值,反余弦值和反正弦值。

    • abs(X)的返回值类型与参数 X 数据类型相同
    • abs(X)和acos函数说明:入参X是可转成数值类型的表达式,取值范围为[-1,1]。
    语法功能示例
    ceil(X)返回大于或等于指定表达式X的最小整数ceil(15.3) -> 16
    sign(X)取X结果的符号,大于0返回1,小于0返回-1,等于0返回0sign(2*3) -> 1
    sqrt(X)返回非负实数X的平方根。入参是可以转成非负数值型表达式sqrt(49) -> 7
    truncate(X, D)按指定的格式截取输入的数值数据。X是待截取的数据,D截取精度truncate(15.79,1) ->15.7;truncate(15.79,-1) -> 10
    floor(X)求小于或等于表达式X的值的最近的整数floor(12.8) -> 12
    pi()返回结果为Π的值,默认有效数字为7位pi() ->3.141593
    mod(X, Y)求模运算mod(29.3) -> 2

3、字符处理函数

  • concat(str[,…]),concat_ws(separator, str1, str2, …):拼接一个或多个字符串。第一个函数无分割符,第二个函数可以指定分隔符连接
  • hex(str):返回十六进制值的字符串表示形式
  • insert(str, pos, len, newstr), replace(str, src, dest):字符串插入和字符串替换函数
  • instr(str1, str2):字符串查找函数,返回要查找的字符串首次在源字符串中出现的位置
语法功能示例
left(str, length)返回指定字符串的左边几位字符left(‘abcdef’, 3) -> abc
length(str)获取字符串字节数的函数length(‘1234大’) -> 7
lower(str)将字符串转换成对应字符的小写lower(‘ABCD’) -> abcd
upper(str)将字符串转换成对应字符的大写upper(‘abcd’) -> ABCD
space(n)生成n个空格concat(‘123’,space(3),‘abc’) -> 123 abc
right(str, len)返回指定字符串的右边几位字符right(‘abcdef’, 3) -> def
reverse(str)返回字符串的倒序。仅支持string类型reverse(‘abcd’) -> dcba
substr(str, start[, len])字符串截取函数substr(‘abcdefg’, 3, 4) -> cdef

4、时间日期函数

  • date_format(date, format):格式化日期函数,根据format转化为需要的格式
  • extract(field from datetime):从指定的日期(datetime)中提取指定的时间字段(filed),按指定的格式截取输入的日期数据

5、类型转换函数

  • if(cond, exp1,exp2),ifnull(exp1, exp2),nullif(exp1, exp2):条件判断函数。
  • nullifh函数中,expr1和expr2应该为相同数据类型,或能隐式转换成相同数据类型,否则校验报错。
  • cast(value as type)/conver(value, type):类型转换函数
  • Type取值:binary, char(), date, time, datetime,decimal, signed,unsigned

6、系统信息函数

  • 系统信息函数用来查询MySQL数据库的系统信息。
    • version():返回数据库的版本号
    • connection_id():返回服务器的连接数
    • database():返回当前数据库名称
    • schema():返回当前schema名称
    • user(), system_user(), session_user(), current_user():返回当前用户名称
    • last_insert_id:返回最后生成的auto_increment的值
    • charset(str):返回字符串str的字符集
    • collation(str):返回字符串str的字符排列方式

四、操作符

1、操作符

  • 操作符可对一个或多个操作数进行处理,位置上可能处于操作数之前,之后,或者两个操作数之间
  • 常见操作符类型(从使用场景划分)
    • 逻辑操作符
    • 比较操作符
    • 算数操作符
    • 测试操作符
    • 通配符
    • 其他操作符

2、逻辑操作符

操作符功能
and支持在查询条件where/on/having语句中,用于条件之间的逻辑与操作
or支持在查询条件where/on/having语句中,用于条件之间的逻辑或操作
not支持在where/having子句后的条件表达式前加NOT关键字,对条件结果取反,常与关系运算合用,例如not in、not exists

3、比较操作符

操作符描述
<小于
>大于
<=小于或等于
>=大于或等于
=等于
<> 或 !=不等于

4、算术操作符

运算符描述运算符描述
+|按位或
-&按位与
*^按位异或
/除(不取整)<<左移位
%模运算>>右移位

5、测试操作符

运算符描述
in元素在指定的集合中
not in元素不在指定的集合中
exists存符合条件的元素
not exists不存在符合条件的元素
between … and …在两者之间,例如 a between x and y 等效于 a >= x and a <= y
not between … and …不在两者之间
is null等于NULL
is not null不等于NULL
like …[escape char]与…相匹配。仅支持字符类型
not like …[escape char]与…不匹配
regexp字符串与正则表达式相匹配,仅支持string类型
regexp_like字符串与正则表达式相匹配,支持string类型和numeric类型。表达式返回值是bool类型

6、通配符

通配符描述
%表示任意数量的字符,包括无字符,用于like和not like 语句中
_下划线,表示确切的一个未知字符,用于like和not like 语句中

7、其他操作符

操作符描述
单引号( ’ )表示字符串类型。如果在字符串文本里含有单引号,那么必须运用两个单引号示意
双引号( “ )/反引号( ` )表示表,字段,索引等Object Name或者是别名
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

刘学.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值