第一章
数据库、表、列等概念
主键:一列或几列的值唯一标识表中每一行,每个表要求有主键
SQL:结构化查询语言
语言主要看的是MySQL,其他DBMS暂时不考虑。
第二章 检索数据
select prod_name, prod_id from Products;
distinct关键字:数据去重;limit限制结果,limit 10,5;
第三章 排序检索数据
order by排序,多列按顺序排列,desc降序,asc升序(默认)
第四章 过滤数据
where子句及其操作符,!=不等于,范围值between and;
空值检查 where prod_price is null
第五章 高级数据过滤
组合where字句,操作符and、or,增加过滤条件(and优先);
in操作符 where vend_id in ('DLL01','BRS01');
not操作符 否定其后条件的关键字;
第六章 通配符过滤(搜索耗时长)
like操作符 用于通配符搜索文本字段,用于未知量;
where prod_name like 'Fish%';%表示任意字符出现任意次数(搜索区分大小写)
下划线_通配符 匹配单个字符;
第七章 创建计算字段
计算字段在select语句内创建
concat拼接、rtrim删尾部空格 concat(rtrim(vend_name), ' (', rtrim(vend_country), ')')
算术计算执行,+-*/,quantity*item_price as expanded_price
第八章 函数处理数据
substring()提取部分字符、convert()数据类型转换、curdate()取当前日期、left();
length() 字节长度,数字字母占1,汉字占3;char_length() 字符长度,都占1;
year()、abs()取绝对值;
第九章 汇总数据
聚集函数avg()、count()、max()、min()、sum()
直接使用 select avg(prod_price) as avg_price from Products;
count(*)表中行数;count(column)特定列有值的行数,不包括null值;
第十章 分组数据
group by 子句创建分组,having子句分组后筛选;
除聚集函数外,select子句的每一列必须在group by子句中给出;group by子句可以对多列分组;
select子句顺序:select——from——where——group by ——having——order by
#具有两个以上产品且其价格均≥4的供应商
select vend_id, count(*) as num_prods from Products where prod_price>=4 group by vend_id
having count(*)>=2
第十一章 使用子查询(subquery)
where中嵌套子查询用于过滤,常用于where order_num in();这里的子查询只能单列;
子查询并不是最高效的方法;
作为计算字段使用子查询
#为每行主查询添加一个计算值
#查询每个员工的姓名及其部门名称
SELECT
employee_name,
(SELECT department_name
FROM departments
WHERE departments.department_id = employees.department_id) AS dept_name
FROM employees;
第十二章 联结表
关系型数据库:一类数据一个表,各表通过某些共同的值互相关联;
where子句创建联结(隐式连接)
没有连接条件的表返回结果是笛卡尔积(cross join),返回A*B行(不推荐)
select vend_name, prod_name, prod_price from Vendors, Products
where Vendors.vend_id=Products.vend_id;
from join显式连接(推荐)
#内连接(筛掉null值,只留下匹配的行)
select vend_name, prod_name, prod_price
from Vendors inner join Products on Vendors.vend_id=Products.vend_id;
联结多个表
SELECT v.vend_name, p.prod_name, p.prod_price,o.quantity, o.item_price,
FROM Vendors v
INNER JOIN Products p ON v.vend_id = p.vend_id
INNER JOIN OrderItems o ON p.prod_id = o.prod_id;