大家好!我是黄啊码,久等了,时间荏苒,转眼停更三个月了,这段时间搬砖去了,惭愧惭愧,先上课吧,嘘寒问暖的话有空再说。上一回留下了课题:如果where后边有and和or,哪个先执行?
先直接给答案:在mysql查询时,在where语句中,AND和OR可以同时使用,但AND的优先级要高于OR,但我们经常会遇到where条件中and与or同时出现的情况,这时候需要把and 的条件使用括号括起来或者or的条件括起来才会达到预期的效果,这是因为where条件中 and优先与or ,所以加上括号就可以改变优先级关系。
例子如下:
代码语言:javascript复制select * from user_info where (user_age>12 and user_age<16) or user_name='张三'
这样看来,这段sql代码的意思就是查出所有年龄12-16的学生或者名字为张三的,understand?
好了,回忆那么苦,我们就不做多停留,看看最新课程:MySQL函数运用
目录
什么是 SQL 函数
算术函数
字符串函数
日期函数
转换函数
算术函数
字符串函数
日期函数
转换函数
为什么使用 SQL 函数会带来问题
关于大小写的规范
什么是 SQL 函数
函数的作用是什么呢?它可以把我们经常使用的代码封装起来,需要的时候直接调用即可。这样既提高了代码效率,又提高了可维护性。
SQL 中的函数一般是在数据上执行的,可以很方便地转换和处理数据。一般来说,当我们从数据表中检索出数据之后,就可以进一步对这些数据进行操作,得到更有意义的结果,比如返回指定条件的函数,或者求某个字段的平均值等。
常用的 SQL 函数有哪些
SQL 提供了一些常用的内置函数,当然你也可以自己定义 SQL 函数。SQL 的内置函数对于不同的数据库软件来说具有一定的通用性,我们可以把内置函数分成四类:
- 算术函数
- 字符串函数
- 日期函数
- 转换函数
算术函数
这里我举一些简单的例子,你来体会下:
SELECT ABS(-2)
,运行结果为 2。
SELECT MOD(101,3)
,运行结果 2。
SELECT ROUND(37.25,1)
,运行结果 37.3。
字符串函数
SELECT CONCAT('abc', 666)
,运行结果为 abc666。
SELECT LENGTH('你好啊')
,运行结果为 9。
SELECT CHAR_LENGTH('你好')
,运行结果为 2。
SELECT LOWER('ABC')
,运行结果为 abc。
SELECT UPPER('abc')
,运行结果 ABC。
SELECT REPLACE('fabcd', 'abc', 123)
,运行结果为 f123d。
SELECT SUBSTRING('fabcd', 1,3)
,运行结果为 fab。
日期函数
日期函数是对数据表中的日期进行处理,常用的函数包括:
下面是一些简单的例子,你可自己运行下:
SELECT CURRENT_DATE()
,运行结果为 2019-04-03。
SELECT CURRENT_TIME()
,运行结果为 21:26:34。
SELECT CURRENT_TIMESTAMP()
,运行结果为 2019-04-03 21:26:34。
SELECT EXTRACT(YEAR FROM '2019-04-03')
,运行结果为 2019。
SELECT DATE('2019-04-01 12:00:05')
,运行结果为 2019-04-01。
这里需要注意的是,DATE 日期格式必须是 yyyy-mm-dd 的形式。如果要进行日期比较,就要使用 DATE 函数,不要直接使用日期与字符串进行比较,我会在后面的例子中讲具体的原因。
转换函数
转换函数可以转换数据之间的类型,常用的函数如下表所示:
SELECT CAST(123.123 AS INT)
,运行结果会报错。
SELECT CAST(123.123 AS DECIMAL(8,2))
,运行结果为 123.12。
SELECT COALESCE(null,1,2)
,运行结果为 1。
为什么使用 SQL 函数会带来问题
如果你学习过编程语言,就会知道语言是有不同版本的,比如 Python 会有 2.7 版本和 3.x 版本,但我们在使用 SQL 语言的时候,不是直接和这门语言打交道,而是通过它使用不同的数据库软件,即 DBMS。DBMS 之间的差异性很大,远大于同一个语言不同版本之间的差异。实际上,只有很少的函数是被 DBMS 同时支持的。比如,大多数 DBMS 使用(||)或者( )来做拼接符,而在 MySQL 中的字符串拼接函数为Concat()
。大部分 DBMS 会有自己特定的函数,这就意味着采用 SQL 函数的代码可移植性是很差的,因此在使用函数的时候需要特别注意。【简而言之就是sql语句对于dbms来说,兼容性还有待调整。】
关于大小写的规范
在 SQL 中,关键字和函数名是不用区分字母大小写的,比如 SELECT、WHERE、ORDER、GROUP BY 等关键字,以及 ABS、MOD、ROUND、MAX 等函数名。
不过在 SQL 中,你还是要确定大小写的规范,因为在 Linux 和 Windows 环境下,你可能会遇到不同的大小写问题。
比如 MySQL 在 Linux 的环境下,数据库名、表名、变量名是严格区分大小写的,而字段名是忽略大小写的
而 MySQL 在 Windows 的环境下全部不区分大小写
这就意味着如果你的变量名命名规范没有统一,就可能产生错误。这里有一个有关命名规范的建议:
- 关键字和函数名称全部大写;
- 数据库名、表名、字段名称全部小写;
- SQL 语句必须以分号结尾。
注:千万要记住黄啊码标红色的地方,不然很容易本地好好的代码迁移到服务器就挂了。
最后留一个脑图给大家当做复习用:
好了,今天的课程学到这里,有问题的留个言,别忘了一键三连,下次我们还会再见!
我是黄啊码,码字的码,退。。。退。。。退。。。朝!