SQL基础语句
前言
关系数据库 mysql sqlserver orcel
SQL语句基本构成
SELECT *
FROM customers
-- WHERE customer_id = 1 //-- 注释符号
ORDER BY first_name
SELECT子句
SELECT
first_name,
last_name,
points ,
(points+10) *100 AS 'discount_factor' //对某一列进行计算, 或者处理 AS 添加描述
FROM customers
SELECT DISTINCT state //DISTINCT 去重复 distinct
FROM customers
exercise
SELETCT *
FROM products
SELECT
name,
FROM products
SELECT DISTINCT price
FROM products
SELECT price *1.1 AS new price
FROM produts
WHERE 子句
SELECT *
FROM customers
WHERE points>30 // > >= < <= = <>
SELECT *
FROME customers
WHERE birth_date >'1991-09-08' //'1991-12-31' 是标准时间格式
exercise
SELECT *
FROM orders
WHERE ORDER_DATE>='1991-08-08'
AND OR NOT 运算符
SELECT *
FROM customers
WHERE birth_date> '1991-09-08' OR
(points>1000 AND state= 'va') // and 有更高的优先级
SELECT * // not 使用方式
FROM customers
WHERE NOT(birth_date>'1991-09-08' or points<1000)
//NOT(birth_date>'1991-09-08' or points<1000) 等效于
birth_date<='1991-09-08' and points >=1000)
exercise
SELECT *
FROM order_items
WHERE order_id = 6 AND unit_price *quantiy > 30
IN 运算符号
SELECT *
FROM customers
WHERE state in ('VA','GA','FL') // 等效 state = 'va' or state = 'ga' or state = 'fl'
exercise
SELECT *
FROM products
WHERE quantity in (49,38,72)
BETWEEN 运算符号
SELECT *
FROM customers
where points BETWEEN 1000 AND 3000 // 1000-3000
exercise
SELECT *
FROM customers
WHERE birth_date BETWEEN ''1990-01-01" AND "2000-01-01"
LIKE 子句
SELECT *
FROM customers
WHERE last_name LIKE 'B%' // ''%B% 任意位置, %b结尾是b , _y 不在乎低位是什么第二位是y "_" 代表一个占位符号, b___y 开头是b结尾是y,中间三个占位
-- % any number of characters
-- _ single character
exercise
SELECT *
FROM customers
WHERE address LIKE '%TRAIL%' OR address LIKE '%AVENUE%' AND
phone_num LIKE '%9' // 取反 NOT LIKE
REGEXP 运算符
regular expression
SELECT *
FROM customers
WHERE last_name REGXP 'field' // ^ $
'field | mac' 或者 or
'^field' 需要field 开头
'field$' 需要field 结尾
'[gim]e' e前面有 g , I , m
'e[fmq]' e后面有 f, m, q
'[a-h]e'
-- ^ beginning
-- $ end
-- | logic or
-- [abcd]
-- [a-f]
exercise
SELECT *
FROM customers
WHERE first_name REGXP 'ELKA|AMBUR'
SELECT *
FROM customers
WHERE last_name REGXP 'ey$|on$' //'' ey on结尾
SELECT *
FROM customers
WHERE last_name REGXP '^my|se' //'' ey on结尾
SELECT *
FROM customers
WHERE last_name REGXP 'b[ru]' //'' ey on结尾
IS NULL 运算符号
SELECT *
FROM customers
WHERE phone IS NULL
exercise
SELECT *
FROM orders
WHERE ship_id IS NULL
ORDER BY 子句
SELECT *
FROM customers
ORDER BY fist_name desc , last_name aesc //desc 倒序 aesc 正序
exercise
SELECT * , quantity *unit_price AS total_price
FROM order_items
WHERE order_id = 2
ORDER BY totle_price DESC
LIMIT 子句
SELECT *
FROM customers
LIMIT 300 //sqlserver 使用 TOP 关键字
SELECT *
FROM customers
LIMIT 6,3 // skip 6 take 3