如同字面上意思,筛选出指定相符的资料,可以以=来表示。
而NOT EQUAL
也可以以!=
表示,而我们也可以将NOT加在column_table之前表false
。
也就是 SELECT * FROM employee WHERE salary=8000 (true);
加上NOT後 SELECT * FROM employee WHERE NOT salary=8000 (false);
也是如同EQUAL
SELECT * FROM employee WHERE first_name LIKE "H%"; 姓氏为H开头的
SELECT * FROM employee WHERE NOT first_name LIKE "H%"; 姓氏非H开头的
当使用LIKE时,须注意,如果单纯使用她会不区分大小写,如果要区分大小写
记得在LIKE後面加上BINARY
即可。
未加上BINARY之前。
mysql> SELECT * FROM employee WHERE last_name LIKE "%D%";
+----+------------+-----------+------------------------+--------+------------+-------+
| id | first_name | last_name | title | salary | hire_date | notes |
+----+------------+-----------+------------------------+--------+------------+-------+
| 2 | Taylor | Edward | Software Architect | 7200 | 2002-09-21 | NULL |
| 3 | Vivian | Dickens | Database Administrator | 6000 | 2012-08-29 | NULL |
| 4 | Harry | Clifford | Database Administrator | 6800 | 2015-12-10 | NULL |
| 5 | Eliza | Clifford | Software Engineer | 4750 | 1998-10-19 | NULL |
加上BINARY之後。
mysql> SELECT * FROM employee WHERE last_name LIKE BINARY "%D%";
+----+------------+-----------+------------------------+--------+------------+-------+
| id | first_name | last_name | title | salary | hire_date | notes |
+----+------------+-----------+------------------------+--------+------------+-------+
| 3 | Vivian | Dickens | Database Administrator | 6000 | 2012-08-29 | NULL |
+----+------------+-----------+------------------------+--------+------------+-------+
1 row in set (0.01 sec)
抑或是我们可以在创建TABLE前,将BINARY加在资料类型之後,在操作上就会自动区分大小写。
CREATE TABLE user( username varchar(10) BINARY , password varchar(20) );
要获取大於等於或小於等於的资料,只须加>= or <=符号即可
SELECT * FROM employee where salary>=6000;
| id | first_name | last_name | title | salary | hire_date | notes |
+------------+-----------+------------------------+--------+--------+
| 2 | Taylor | Edward | Software Architect | 7200 | 2002-09-21 | NULL |
| 3 | Vivian | Dickens | Database Administrator | 6000 | 2012-08-29 | NULL |
| 4 | Harry | Clifford | Database Administrator | 6800 | 2015-12-10 | NULL |
| 7 | Melinda | Clifford | Project Manager | 8500 | 2013-10-29 | NULL |
| 8 | Jack | Chan | Test Engineer | 6500 | 2018-09-07 | NULL |
| 9 | Harley | Gilbert | Software Architect | 8000 | 2000-07-17 | NULL |
+------------+-----------+------------------------+--------+--------+
Between就是字面上的意思,就是在某两值之间。
mysql> SELECT * FROM employee where salary>=6000 OR salary<=8000;
等同於
mysql> SELECT * FROM employee where salary BETWEEN 6000 AND 8000;
in , not in 可查询指定column中的值。
mysql> SELECT * FROM employee where salary IN (6000,7200);
等同於
mysql> SELECT * FROM employee where salary=6000 OR salary=7200;
为表达式是一种通用的条件表达式
,可以利用其去对我们的资料做条件判断并创建新的column。
CASE
WHEN condition THEN result
WHEN condition THEN result
...
ELSE result
END AS column_name
...
我们依照薪水高低去做,高中低的判断,并且创建一个名为Tag的column,且以薪水由高到低去做排序。
SELECT
first_name,
last_name,
title,
salary,
case
when salary >= 7000 then "high"
when salary <= 6000 then "low"
else "medium"
END AS Tag
FROM employee
order by
salary desc;
+------------+-----------+------------------------+--------+--------+
| first_name | last_name | title | salary | Tag |
+------------+-----------+------------------------+--------+--------+
| Melinda | Clifford | Project Manager | 8500 | high
| Harley | Gilbert | Software Architect | 8000 | high |
| Harry | Clifford | Database Administrator | 6800 | medium |
| Jack | Chan | Test Engineer | 6500 | medium |
| Vivian | Dickens | Database Administrator | 6000 | low |
| Robin | Jackman | Software Engineer | 5500 | low |
+------------+-----------+------------------------+--------+--------+
综合以上作个练习题
1.我们需要按照票房多=>少,并筛选出在美国的电影且为2000-2010年,票房超过1亿美元的电影。
SELECT
title,
director_name,
title_year,
gross,
imdb_score
FROM movie
WHERE
title_year BETWEEN 2000
AND 2010
AND country = "USA"
AND gross > 100000000
order by
gross desc;
2.给电影评分,按照imdb多=>少 评分规则为imdb评分8分以上5颗星, 7-8分给予4颗星....低於五分给予1颗星
SELECT
title,
director_name,
title_year,
gross,
imdb_score,
CASE
WHEN imdb_score >= 8 THEN "*****"
WHEN imdb_score >= 7
AND imdb_score < 8 THEN "****"
WHEN imdb_score >= 6
AND imdb_score < 7 THEN "***"
WHEN imdb_score >= 5
AND imdb_score < 6 THEN "**"
ELSE "*"
END AS STAR
FROM movie
order by
imdb_score DESC;
>>: [C#] LeetCode 5. Longest Palindromic Substring
今天主要来提提Array、ArrayList、List其中一些不同的地方及概念,那麽首先先提提有关於...
人生在世不如意,十之八九。唯一能够预测四十年後自己小孩成就的只有那十分之一,叫做一事无成。 这两样东...
解释以下SQL语句: INSERT INTO departments(department_id, ...
1.文字工具 (档案12,影片Ps1) 左框 (1)文字工具 (1)文字: a.段落文字:拉框,拉大...
本章是最後一个章节,进入财务风险的感知层了,明天就是完赛日了,笔者会做个汇整给大家参考,谢谢大家。 ...