当前位置: 首页>编程语言>正文

MySQL default加括号 mysql括号逻辑

选择所有数据:
SELECT * FROM table_name;

mySQL中的运算符基本和C/C++等编程语言相同。
部分不同的有:
不等于<>(也可以使用!=)
逻辑与AND(也可以使用&&)
逻辑或OR(也可以使用||)
逻辑非NOT(也可以使用!)
可以使用括号改变计算的优先级。
例如对于如下表单:

+----+-----------------+--------+-------+
 | ID | title           | author | pages |
 +----+-----------------+--------+-------+
 |  1 | The Green Mile  |      4 |   894 |
 |  2 | Guards, Guards! |      2 |   302 |
 |  3 | Imazdi          |      3 |   354 |
 |  4 | Gold            |      1 |   405 |
 |  5 | Howling Mad     |      3 |   294 |
 +----+-----------------+--------+-------+


选择ID在2-4之间的书本名:
SELECT title FROM book WHERE ID <= 4 && ID >=2;
结果为:

+-----------------+
 | title           |
 +-----------------+
 | Guards, Guards! |
 | Imazdi          |
 | Gold            |
 +-----------------+


使用括号,删选出ID小于等于2或者author等于3的:
SELECT title FROM book WHERE !(ID > 2 && ID != 3);

null
mySQL中NULL和编程语言中的null不同,它是一种特殊的类型,不能用作比较,例如:
WHERE author = null;这个断言语句返回的既不是true也不是false,即便author中有
null的选项。如果需要判断某一个字段为null或者not null应该使用IS操作符:
SELECT title FROM book WHERE author IS NOT NULL;
这个语句选取book中所有author非NULL的title项。
插入一行author为空的行:

INSERT INTO book(ID,title,pages)
 VALUES(NULL,'Freedom',230);


现在表单变成了:

+----+-----------------+--------+-------+
 | ID | title           | author | pages |
 +----+-----------------+--------+-------+
 |  1 | The Green Mile  |      4 |   894 |
 |  2 | Guards, Guards! |      2 |   302 |
 |  3 | Imazdi          |      3 |   354 |
 |  4 | Gold            |      1 |   405 |
 |  5 | Howling Mad     |      3 |   294 |
 |  6 | Freedom         |   NULL |   230 |
 +----+-----------------+--------+-------+


选择author为空的书名和页数:
SELECT title,pages FROM book WHERE author IS NULL;
这样就把刚刚插入的author为NULL的行给选取出来了:

+---------+-------+
 | title   | pages |
 +---------+-------+
 | Freedom |   230 |
 +---------+-------+


mySQL提供了"<=>"操作符判断两边的操作数是不是都是null,如果只有一边是NULL则返回0,否则返回1,例如
SELECT 1 <=> NULL, NULL <=> NULL, 1 <=> 1;
结果为(为啥1 <=> 1?):

+------------+---------------+---------+
 | 1 <=> NULL | NULL <=> NULL | 1 <=> 1 |
 +------------+---------------+---------+
 |          0 |             1 |       1 |
 +------------+---------------+---------+



成员测试:
查询一个值是否是集合中的一个成员,使用关键字IN:
SELECT TITLE FROM book WHERE author IN (1,3);
上面的语句查询作者在集合(1,3)中的书名:

+-------------+
 | TITLE       |
 +-------------+
 | Imazdi      |
 | Gold        |
 | Howling Mad |
 +-------------+


查询一个值是否在一定的范围内,使用关键字BETWEEN(也可以用比较操作符来完成):
SELECT TITLE FROM book WHERE ID BETWEEN 2 AND 4;
上面的语句查询ID在2-4之间的书名。

通配符%和关键字LIKE:
可以使用LIKE和通配符%搜索含有一定字符串的内容,通配符%用来替代任意长度的字符,包括0个,
可以对LIKE前加NOT操作,即选取通配字符串外的内容。
SELECT title FROM book WHERE title LIKE 'G%';
该语句查询开始字母为G的书名:

+-----------------+
 | title           |
 +-----------------+
 | Guards, Guards! |
 | Gold            |
 +-----------------+


字符'_','.'则只能匹配单个字符,例如Stac..匹配包含"Stac"且后面跟两个任意字符的字符串。
'[]':匹配括号内的任何字符,例如[Ss]tacey匹配"Stacey"或"stacey"的值,[a-zA-Z]匹配'a'-'z',
'A'-'Z'的任意罗马字符。
'^':匹配的字符必须以跟在'^'后的字符开头,例如与^Stacey匹配的字符必须以Stacey开头;
'$':匹配的字符必须以在'$'的字符结尾,例如与chese$匹配的字符必须以chese结尾。
'*':匹配其前面的任意个字符
扩展比较关键字REGEXP则在字符串比较中搜索任意位置的匹配字符,而不是开头。
SELECT title FROM book WHERE title REGEXP 'ee';
结果为:

+----------------+
 | title          |
 +----------------+
 | The Green Mile |
 | Freedom        |
 +----------------+


如果使用LIKE的话将得到空的结果。


https://www.xamrdz.com/lan/5qk1944374.html

相关文章: