大家好!我是黄啊码,久等了,时间荏苒,转眼停更三个月了,这段时间搬砖去了,惭愧惭愧,先上课吧,嘘寒问暖的话有空再说。上一回留下了课题:如果where后边有and和or,哪个先执行?
先直接给答案:在mysql查询时,在where语句中,AND和OR可以同时使用,但AND的优先级要高于OR,但我们经常会遇到where条件中and与or同时出现的情况,这时候需要把and 的条件使用括号括起来或者or的条件括起来才会达到预期的效果,这是因为where条件中 and优先与or ,所以加上括号就可以改变优先级关系。
例子如下:
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 的内置函数对于不同的数据库软件来说具有一定的通用性,我们可以把内置函数分成四类:
这里我举一些简单的例子,你来体会下:
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。
如果你学习过编程语言,就会知道语言是有不同版本的,比如 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 的环境下全部不区分大小写
这就意味着如果你的变量名命名规范没有统一,就可能产生错误。这里有一个有关命名规范的建议:
注:千万要记住黄啊码标红色的地方,不然很容易本地好好的代码迁移到服务器就挂了。
最后留一个脑图给大家当做复习用:
好了,今天的课程学到这里,有问题的留个言,别忘了一键三连,下次我们还会再见!
我是黄啊码,码字的码,退。。。退。。。退。。。朝!