《SQL必知必会》上

第一章

数据库、表、列等概念

主键:一列或几列的值唯一标识表中每一行,每个表要求有主键

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;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值