SQL学习笔记

本文基于Mosh Hamedani 的SQL教学视频,传送门av71348135,视频中用到的sql执行文件在这里cfk3 。那么,我们就开始吧。(持续更新中)

1.The SELECT Statement

目标:查找sql_store数据库的顾客表,要求按顾客名的字典序输出顾客编号为1的顾客记录

USE sql_store;
SELECT *
FROM customers
WHERE customer_id=1
ORDER BY first_name
注意:代码第1行末尾的分号不能丢,否则无法执行,还要留意SELECT,WHERE,ORDER BY的先后顺序。

2.The SELECT Clause

目标:查找顾客表,要求输出顾客的姓、名、积分、折现系数,其中折现系数=(积分+10)*100

SELECT

first_name,
last_name,
points,
(points+10)*100 AS 'discount factor' 
--DISTINCT state

FROM customers
注意:查找的各列之间用逗号隔开,新建的列要及时用AS命名,英文字母串要加单引号。代码第6行以--开头,这是SQL中注释的标准写法。取消注释后,第6行代码的意思是输出顾客表中不同州的名称。

3.The WHERE Clause

目标:查找订单表,要求输出2019年的所有订单记录

SELECT*
FROM orders
WHERE order_date>='2019-01-01'
注意:日期的格式要规范,即按照year-month-date的格式书写,且加单引号。常用的比较符号有=, >, <, >=, <=, != 和<>,最后两个符号表示的都是不等于。

4.The AND, OR, and NOT Operators

目标:查找顾客表,要求输出出生在1990年1月1日后,或者积分大于1000的顾客记录

SELECT*
FROM customers
WHERE birth_date>'1990-01-01' OR points>1000
--WHERE NOT(birth_date<='1990-01-01'AND points<=1000)
注意:为了保证逻辑正确,要适当添加括号,第4行在逻辑上与第3行是等同的。

5.The IN Operator

目标:查找顾客表,要求输出位于弗吉尼亚州、佛罗里达州或者佐治亚州的顾客记录

SELECT*
FROM customers
WHERE state IN('VA','FL','GA')
6.The BETWEEN Operator

目标:查找顾客表,要求输出在1990年1月1日和2000年1月1日之间出生的顾客记录(包含端点)

SELECT*
FROM customers
WHERE birth_date BETWEEN '1990-01-01' AND '2000-01-01'
--WHERE birth_date >='1990-01-01' AND birth_date<='2000-01-01'
注意:在MYSQL的语法中,BETWEEN AND语句是包含端点的,不包含QQ账号购买平台端点的情形可按照第4行注释来改写。

7.The LIKE Operator

目标:查找顾客表,要求输出地址包含TRAIL或AVENUE的顾客记录

SELECT*
FROM customers
WHERE address LIKE '%TRAIL%' OR

   address LIKE '%AVENUE%'

--% any number of characters
--_single character
注意:占位符%可表示任意长度的字母,而_表示一个字母。

8.The REGEXP Operator

目标:查找顾客表,要求输出 1.姓ELKA或AMBUR的顾客 2.名以EY或ON结尾的顾客 3.名以MY开头并且包含SE的顾客 4.名中包含B,且B之后是R或U(多行输出写在注释里)

SELECT*
FROM customers
WHERE first_name REGEXP 'elka|ambur'
--WHERE last_name REGEXP 'ey$|on$'
--WHERE last_name REGEXP '^my|se'
--WHERE last_name REGEXP 'b[ru]'
--^ beginning
--$ end
--| logical or
--[abcd]
--[a-h]

上一篇:mysql存储引擎优化参数


下一篇:python网络编程学习笔记(7):HTML和XHTML解析(HTMLParser、BeautifulSoup)