【MySQL】查询语句

文章目录

  • 选择语句 / 子句
  • 比较运算符
  • AND,OR,NOT运算符
  • IN运算符
  • BETWEEN运算符
  • LIKE运算符
  • REGEXP运算符

选择语句 / 子句

  • USE:选择使用的database
  • SELECT:选择查询的列
  • FROM:选择查询的表
  • WHERE:条件查询
  • ORDER BY :排序
-- 关键词:USE, SELECT, FROM,WHERE, ORDER BY
USE sql_store; -- 选择一个database

SELECT *  -- 选择所有的列
FROM customers -- 从customers这个表中
WHERE customer_id = 1 -- 查询条件:查到id为1的数据
ORDER BY first_name -- 根据firstname排序
-- 注意:SELECT, FROM, WHERE, ORDER BY的顺序是固定的,如果改变语句的顺序,会发生语法错误
-- 关键词:AS
SELECT
       first_name,
       last_name,
       points,
       (points + 10) * 100 AS discount_factor -- AS 可以为列取名字
FROM customers
-- 小小作业
SELECT
    name,
    unit_price,
    unit_price * 1.1 AS 'new price' -- 列名要想用空格的话,需要用单引号引起来,否则不能用空格
FROM products

比较运算符

  • 等于:是= 而不是==
  • 不等:!= 或者 <> ,这两个都表示不等
SELECT *
FROM customers
WHERE state = 'VA' //表示筛选在VA的数据

WHERE state <> 'VA' //表示筛选不在VA的数据
-- 注意:字符串需要用单引号引起

WHERE birth_date > '1990-01-01'
-- 筛选日期时,也要将日期用单引号引起。
-- MySQL标准或默认日期表述形式:4位年份-2位月份-2位日期
-- 小小练习
SELECT *
FROM orders
WHERE order_date >= '2019-01-01 '

AND,OR,NOT运算符

  • 优先级:AND > OR
SELECT *
FROM customers
WHERE birth_date > '1990-01-01' OR
      (points > 1000 AND state = 'VA')
-- 小小练习
SELECT *
FROM order_items
WHERE order_id = 6 AND unit_price * quantity > 30

IN运算符

SELECT *
FROM customers
-- 查询多个条件时用OR比较麻烦
WHERE state = 'VA' OR state = 'GA' OR state = 'FL'
-- 此时可以用IN运算符
WHERE state IN ('VA', 'FL', 'GA')
-- 可用NOT IN查询不在IN范围内的
WHERE state NOT IN ('VA', 'FL', 'GA')
-- 小小练习
SELECT *
FROM products
WHERE quantity_in_stock IN (49, 38, 72)

BETWEEN运算符

  • BETWEEN……AND……
SELECT *
FROM customers
-- 积分在1000到3000范围内的数据
WHERE points >= 1000 AND points <= 3000

-- 用BETWEEN更加简介
WHERE points BETWEEN 1000 AND 3000

-- 小小练习
SELECT *
FROM customers
WHERE birth_date BETWEEN '1990-01-01' AND '2000-01-01'

LIKE运算符

  • % 代表任意字符数
  • _ 代表一个单字符
SELECT *
FROM customers
-- 查询以b或B开头的lastname的数据,表示在b之后可以有任意字符数
WHERE last_name LIKE 'b%'

-- 表示在b之前和之后都可有任意字符数
WHERE last_name LIKE '%b%'

-- 表示y之前有5个字符
WHERE last_name LIKE '_____y'

-- 表示b和y之间有4个字符
WHERE last_name LIKE 'b____y'

-- 小小联系
-- 1
SELECT *
FROM customers
WHERE address LIKE '%trail%' OR
      address LIKE '%avenue%';

-- 2
SELECT *
FROM customers
WHERE phone LIKE '%9';

REGEXP运算符

你可能感兴趣的:(mysql,数据库)