搭配实例的sql笔记(更新ing)

mysql和本笔记使用的例子文件都在里面

链接:https://pan.baidu.com/s/1Bbk7_bKZJWBEZjU6QDHM2w
提取码:u4bz

本文语法全部大写 实际上可以不大写
这仅仅作为一种规范

语法

检索单一表数据

SELECT

SELECT 
	last_name,
	first_name,
	points,
	points*10+100 AS 'discount factor'
FROM customers

在这里插入图片描述

DISTINCT关键字 可以去重

SELECT DISTINCT state
FROM customers

在这里插入图片描述

WHERE

SELECT *
FROM customers
WHERE birth_date > '1990-01-01'

在这里插入图片描述

AND OR NOT

SELECT *
FROM customers
WHERE birth_date > '1990-01-01' AND points >1000

在这里插入图片描述

SELECT *
FROM customers
WHERE birth_date > '1990-01-01' or points >1000

在这里插入图片描述

AND 优先级大于 OR 记不住可以加括号 加括号是好习惯

SELECT *
FROM customers
WHERE NOT (birth_date > '1990-01-01' or points >1000)

在这里插入图片描述

IN

SELECT *
FROM customers
WHERE state='VA' OR state ='GA' OR state='FL'

IN也可以完成上面做的事 如下
在这里插入图片描述

BETWEEN

SELECT *
FROM customers
WHERE points >=1000 AND POINTS <=3000

BETWEEN也可以做上面的事 如下
在这里插入图片描述
接下来 我将很少截图了 我觉得直接写即可

LIKE

SELECT *
FROM customers
WHERE last_name LIKE '%b%'

查找customers里 last_name含有b的项

SELECT *
FROM customers
WHERE last_name LIKE 'b____y'

查找customers里 last_name是首字母为b 中间有四个未知字母 尾字母为y的项

REGEXP

简单举几个例子√

SELECT *
FROM customers
WHERE last_name REGEXP 'field|mac'

查询包含field 或 mac的


SELECT *
FROM customers
WHERE last_name REGEXP 'field$|mac|rose'

查询以field结尾 或 包含mac rose 的


SELECT *
FROM customers
WHERE last_name REGEXP '[gim]e'

查询包含ge 或 ie 或 me的


SELECT *
FROM customers
WHERE last_name REGEXP '[a-h]e'

查询包含ae be ce… he的

^ 开头
$ 结尾
| 或
[abcd] ,[a-f] 见实例

IS NULL

SELECT *
FROM customers
WHERE phone IS NULL

查询电话号为空的项

ORDERED

SELECT *
FROM customers
ORDER BY first_name DESC

按first_name反着排列

SELECT *
FROM customers
ORDER BY state DESC,first_name DESC

如果按state逆序比较优先级一致 那么将按name逆序为规则进行排列
先按第一个 再按第二个排列

LIMIT

SELECT *
FROM customers
ORDER BY points DESC
LIMIT 3

先按积分降序排列每项 取前三个

SELECT *
FROM customers
ORDER BY points DESC
LIMIT 6,3

排序后 跳过前六条 取接下来的三条

检索多表数据

INNER JOIN

SELECT order_id,o.customer_id,first_name,last_name
FROM orders o
INNER JOIN customers c
	ON o.customer_id=c.customer_id 

连接orders和cutomers两个表

SELECT * FROM order_items oi
JOIN sql_inventory.products p
	ON oi.product_id=p.product_id

跨库合并表

USE sql_hr;
SELECT *
FROM employees e
JOIN employees m
 ON e.reports_to=m.employee_id

自合并 建议自行尝试并理解

USE sql_invoicing;
SELECT 
*
FROM payments p
JOIN payment_methods m
 ON  p.payment_id=m.payment_method_id
JOIN clients c
 ON p.client_id=c.client_id

多表合并(两个以上)

SELECT *
FROM order_items oi
JOIN order_item_notes oin
	ON oi.order_Id=oin.order_Id
	AND oi.product_id=oin.product_id 

复合合并(带条件的合并)

SELECT *
FROM orders o, customers c
WHERE o.customer_id=c.customer_id

隐式合并语法

SELECT 
	p.product_id,
    p.name,
    o.quantity
FROM  products p
LEFT JOIN order_items o
ON p.product_id=o.product_id
 ORDER BY p.product_id

外连接

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值