文章目录
目录
前言
本文为学习笔记,仅简单介绍了 MySQL基本语法要素和MySQL运算符一些简单的知识。
走过路过的小伙伴们点个赞和关注再走吧,欢迎评论区交流,一起努力一起成长呀!
笔芯
4.1、基本语法要素
SQL结构化查询语言是一种访问关系数据库的标准语言
Sql语言分类:
数据定义语言(DDL):用于创建和删除数据库对象等操作,create(创建)、drop(删除)、alter(修改)
数据查询语言(DQL):用于数据库中的数据进行查询,常用命令:select
数据操作语言(DML):用于操作数据库中所包含的数据,常用命令:insert、update、delete
数据控制语言(DCL):用来控制数据库组件的存取许可,存取权限等,常用命令:grant、commit、rollback、savepoint
MySQL标识符
用于命名那个数据库对象
标识符命名规则:
标识符由字母数字或下划线组成。以字母或下划线开头标识符是否区分大小写看操作系统,windows不敏感,linux、Unix系统默认是敏感的。可通过show Variables like% ‘table_name’命令查看lower_case_table_names的值是否区分大小写,0代表区分大小写,1代表不区分大小写。
SQL大小写建议:
SQL关键字使用大写字母,如SELECT、INTO、UPDATE、WHERE等
预定义类型使用大写字母,如INT、VARCHAR、BOOLEAN、DATE等
内置函数使用大写字母,如SUBSTR、COUNT、TO_CHAR等
函数保留字使用大写字母,如BEGIN、DECLARE、LOOP、ELSEIF等
数据库对象使用小写字母,如数据库表名、列名、视图名、函数名等
用户声明的标识符使用小写字母
MySQL字符集
MySQL字符集和对应的校对原则可通过show character set命令查看。
MySQL8数据库默认字符集为utf8mb4,8.0版本之前默认字符集为latin1。可通过show variables like 'character%'命令查看数据库默认的字符集。
MySQL对于字符集的支持细化到4个层次:服务器(Server)、数据库(DataBase)、数据表(Table)、连接(Connection)。MySQL对于字符集的指定可以细化到一个数据库、一张表和一列。
注:用户可通过修改配置文件(my.ini) 、SQL命令、创建数据库和表时指定等方式修改字符集默认值。
4.2、运算符
MySQL的内部运算符有四大类
算术运算符
比较运算符
逻辑运算符
位运算符
算术运算符
用于各类数值运算的加、减、乘、除、求余,+、-、*、\、%。
例:SELECT 3+2,1.5*3,3/5,100-23.5,5%3;
比较运算符
比较运算符是查询数据时最常用的一类运算符。select语句中的条件语句经常要使用比较运算符来判断表中的哪些记录是符合条件的。
=(等于,如果相等,返回1,否则返回0。),
>(大于,如果大于,返回1;否则,返回0。空值不能用>来判断),
<(小于,同上),
>=(大于等于,同上),
<=(小于等于,同上),
!=或<>(不等于, “<>”和“!=”用来判断数字、字符串、表达式等是否不相等。如果不相等,则返回1;否则,返回0。),
is null(判断操作数为空,为null时,结果返回1;否则,返回0。),
is not null(不为空,is not null与is null相反。),
例:SELECT 'A'>'B',1+2=3,'X'<'x',2<>2,'a'<= 'a';
SELECT null is not null,11.3 is null,11.5 is not null;
between(区间比较between and运算符用于判断数据是否在某个取值范围内。也可以添加not运算符对一个between运算进行取反,表达式为: x between m and n。如果x大于等于m,且小于等于n,结果将返回1,否则将返回0。),
例:SELECT 10.5 not between 0 and 10, 20 between 0 and 50;
in(属于。判断数据是否存在于某个集合中。表达式为: x in(值1,值2,...,值n)。
如果x等于值1到值n中的任何一个值,结果将返回1。如果不是,结果将返回0。)
not in(不属于)
例:SELECT 5 in(1,3,5,7,9), 2 not in (1,10);
like(like运算符用来匹配字符串。其中字符“%”匹配任意个字符;字符“_”匹配一个字符。like运算符表达式为: x like s。如果x与字符串s匹配,结果将返回1,否则返回0。),
not like(后面会学到模糊查询)
例:SELECT 'MySQL' like 'MY%', 'QST' like 'Q_';
regexp(用于通过正则表达式匹配字符串。常与“^”、“$”和“.”等正则表达式符号一起使用。“^”用来匹配字符串的开始部分;“$”用来匹配字符串的结尾部分;“.”用来代表字符串中的一个字符。表达式格式为: x regexp‘匹配方式’。 如果x满足匹配方式,结果将返回1,否则将返回0。)
例: 查找以qst字符开头或以database字符串结尾的所有职位
SELECT jobname FROM job WHERE jobname REGEXP'^qst|database$';
逻辑运算符
逻辑运算符又称为布尔运算符,用来判断表达式的真假。如果表达式是真,结果返回1。如果表达式是假,结果返回0。MySQL中支持以下4种逻辑运算符。
与运算: “&&”或“and”
如果所有数据不为0且不为空时,结果返回1;如果存在任何一个数据为0时,结果返回0;如果存在一个数据为null且没有数据为O时,结果返回null。与运算符支持多个数据同时进行运算。
或运算:“||”或“or”
所有数据中存在任何一个数据不为非0数字时,结果返回1;如果数据中不包含非0的数字,但包含null时,结果返回null;如果操作数中只有0时,结果返回0。或运算符“II”也可以同时操作多个数据。
非运算:“!”或not
通过非运算,将返回与操作数据相反的结果。如果操作数据是非0的数字,结果返回0;如果操作数据是0,结果返回1;如果操作数据是null,结果返回null。
异或运算:xor
只要其中任何一个操作数据为null时,结果返回null;如果对于非null的操作数,如果两个操作数都是非0或者都是0,则返回值为0;如果一个为0,另一个为非0值,回值为1。
例:SELECT not('A'='B'), ('c' ='C') and ('c'<'D')or (1=2);
SELECT ('c'='C')&&(1=2),('A'='a') xor (1+1=3);
位运算符:
位运算会先将操作数变成二进制数,进行位运算,然后再将计算结果从二进制数变回十进制数。
MySQL支持6种位运算符:
&(按位与)
进行该运算时,数据库系统会先将十进制的数转换为二进制的数。然后对应操作数的每个二进制位上进行与运算。1和1相与得1,与0相与得0。运算完成后再将二进制数变回十进制数
|(按位或)
将操作数化为二进制数后,每位都进行或运算。1和任何数进行或运算的结果都是1,0与0或运算结果为0。
~(按位取反)
将操作数化为二进制数后,每位都进行取反运算。1取反后变成0,0取反后变成1。
^(按位异或)
将操作数化为二进制数后,每位都进行异或运算。相同的数异或之后结果是0,不同的数异或之后结果为1
<<(按位左移)
“m<<”表示m的二进制数向左移n位,右边补上n个0。例如,二进制数001左移1位后将变成0010
>>(按位右移)
“m>>n”表示m的二进制数向右移n位,左边补上n个0。例如,二进制数011右移1位后变成001,最后一个1直接被移出
例:SELECT 1&2,2|3,100>>5,~1,2^4;
运算优先级
在一个表达式中按照运算符优先级从高到低,从左到右的级别进行运算操作。如果优先级相同,则表达式左边的运算符先运算。
优先级从高到低如下所示!->~->^->*,/ ,iv,%,mod->+,-,->,>>,<<,->&->|->,=>,一,=,>,>=,!=,,in,is,null,like,regexp->between and,case,when,then,else->not->&&,and->ll,or;xor->:=(赋值号)