WHERE子句

作用:WHERE语句用于MySQL中过滤查询结果,只返回满足条件的结果

语法

SELECT column1, column2, ...

FROM table_name

WHERE condition;

column1, column2, ... 是你要选择的列的名称,如果使用 * 表示选择所有列。table_name 是你要从中查询数据的表的名称。WHERE condition 是用于指定过滤条件的子句。

1)可以使用多个表,表之间使用逗号隔开,使用where子句设置查询条件

2)可以指定任何条件,使用AND运算符或OR运算符的时候可以指定一个或多个条件。

3)WHERE子句也可用于DELETE或者UPDATE命令中

操作符描述实例=等号,检测两个值是否相等,如果相等返回true(A = B) 返回false。<>, !=不等于,检测两个值是否相等,如果不相等返回true(A != B) 返回 true。>大于号,检测左边的值是否大于右边的值, 如果左边的值大于右边的值返回true(A > B) 返回false。<小于号,检测左边的值是否小于右边的值, 如果左边的值小于右边的值返回true(A < B) 返回 true。>=小于号,检测左边的值是否小于右边的值, 如果左边的值小于右边的值返回true(A >= B) 返回false。<=小于等于号,检测左边的值是否小于或等于右边的值, 如果左边的值小于或等于右边的值返回true(A <= B) 返回 true。

1. 等于条件:

SELECT * FROM users WHERE username = 'test';

2. 不等于条件:

SELECT * FROM users WHERE username != 'runoob';

3. 大于条件:

SELECT * FROM products WHERE price > 50.00;

4. 小于条件:

SELECT * FROM orders WHERE order_date < '2023-01-01';

5. 大于等于条件:

SELECT * FROM employees WHERE salary >= 50000;

6. 小于等于条件:

SELECT * FROM students WHERE age <= 21;

7. 组合条件(AND、OR):

SELECT * FROM products WHERE category = 'Electronics' AND price > 100.00;

SELECT * FROM orders WHERE order_date >= '2023-01-01' OR total_amount > 1000.00;

LIKE子句

LIKE 子句是在 MySQL 中用于在 WHERE 子句中进行模糊匹配的关键字。它通常与通配符一起使用,用于搜索符合某种模式的字符串。

LIKE 子句中使用百分号 %字符来表示任意字符,类似于UNIX或正则表达式中的星号 *。

如果没有使用百分号 %, LIKE 子句与等号 = 的效果是一样的。

语法:

SELECT column1, column2, ...

FROM table_name

WHERE column_name LIKE pattern;

1)可以在WHERE使用LIKE子句指定条件

2)LIKE可以代替等号,LIKE通常与%一起使用

3)你可以在 DELETE 或 UPDATE 命令中使用 WHERE...LIKE 子句来指定条件。可以与AND和OR一起使用

4)%通配符表示零个或者多个字符,例如’a%‘就是以a开头的任意字符串

5)_通配符,表示一个字符

6)utf8mb4_general_ci 是一种不区分大小写的校对规则

示例

--'a%' 匹配以字母 'a' 开头的任何字符串。

SELECT * FROM customers WHERE last_name LIKE 'S%';

--_ 通配符表示一个字符。例如,'_r%' 匹配第二个字母为 'r' 的任何字符串。

SELECT * FROM products WHERE product_name LIKE '_a%';

--组合使用 % 和 _:

SELECT * FROM users WHERE username LIKE 'a%o_';

--不区分大小写的匹配:utf8mb4_general_ci 是一种不区分大小写的校对规则

SELECT * FROM employees WHERE last_name LIKE 'smi%' COLLATE utf8mb4_general_ci;

DELETE语句

DELETE FROM 命令来删除 MySQL 数据表中的记录。

语法

DELETE FROM table_name

WHERE condition;

如果不指定WHERE条件将会把表中的所有数据全部删除

--删除符合条件的行:

DELETE FROM tb_user WHERE id>3;

--使用子查询删除符合条件的行:

DELETE FROM customers

WHERE customer_id IN (

SELECT customer_id

FROM orders

WHERE order_date < '2023-01-01'

);

UPDATE更新

修改或更新 MySQL 中的数据,我们可以使用 UPDATE

语法

UPDATE table_name

SET column1 = value1, column2 = value2, ...

WHERE condition;

--更新单个列的值:

UPDATE employees SET salary = 60000 WHERE employee_id = 101;

--更新多个列的值:

UPDATE orders SET status = 'Shipped', ship_date = '2023-03-01' WHERE order_id = 1001;

--使用表达式更新值:

UPDATE products SET price = price * 1.1 WHERE category = 'Electronics';

--更新符合条件的所有行:

UPDATE students SET status = 'Graduated';

--更新使用子查询的值:

UPDATE customers

SET total_purchases = (

SELECT SUM(amount)

FROM orders

WHERE orders.customer_id = customers.customer_id

)

WHERE customer_type = 'Premium';

UNION

UNION 操作符用于连接两个以上的 SELECT 语句的结果组合到一个结果集合,并去除重复的行。

UNION 操作符必须由两个或多个 SELECT 语句组成,每个 SELECT 语句的列数和对应位置的数据类型必须相同。

 语法

SELECT column1, column2, ...

FROM table1

WHERE condition1

UNION

SELECT column1, column2, ...

FROM table2

WHERE condition2

[ORDER BY column1, column2, ...];

实例

select * from user where id>2 union select * from tb_user where id>2;

ORDER BY(排序) 语句

ORDER BY(排序) 语句可以按照一个或多个列的值进行升序(ASC(默认))或降序(DESC)排序。

语法

SELECT column1, column2, ...

FROM table_name

ORDER BY column1 [ASC | DESC], column2 [ASC | DESC], ...;

实例

select * from tb_user order by username desc;

--使用数字表示列的位置:

SELECT first_name, last_name, salary FROM employees ORDER BY 3 DESC, 1 ASC;

--使用表达式排序:

SELECT product_name, price * discount_rate AS discounted_price FROM products ORDER BY

discounted_price DESC;

推荐文章

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: