WHERE、LIKE子句,DELETE语句、UPDATE更新、UNION、ORDER BY 语句

发布时间:2024年01月10日

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;

文章来源:https://blog.csdn.net/2301_77326975/article/details/135450076
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。