数据库学习Day3——运算符与通配符

选择所有数据:
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的话将得到空的结果。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

岛上码农

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

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

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

打赏作者

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

抵扣说明:

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

余额充值