从零开始学习MySQL--基础查询教程1--004

E-R图

导入准备好的SQL语句,E-R图如下,

在这里插入图片描述

数据库的表组成

  • customers : 存储客户的数据。
  • products : 存储汽车的数据。
  • productLines : 存储产品类别数据。
  • orders : 存储客户订购的销售订单。
  • orderDetails : 存储每个销售订单的订单产品数据项。
  • payments : 存储客户订单的付款数据信息。
  • employees : 存储所有员工信息以及组织结构。
  • offices : 存储销售处数据, 类似于各个分公司。

select 语句

select
	column_1, column_2, ...
from
	table_1
[INNER | LEFT |RIGHT] JOIN table_2 ON conditions
where
	conditions
GROUP BY column_1
HAVING group_conditions
order by column_1
limit offset, length;

- select 之后是逗号分隔列或星号( * )的列表, 表示要返回所有列。
- from 指定要查询数据的表或视图。
- JOIN 根据某些连接条件从其他表中获取数据。
- where 过滤结果集中的行。
- GROUP BY 将一组行组合成小分组, 并对每个小分组应用聚合函数。
- HAVING 过滤器基于 GROUP BY 子句定义的小分组。
- order by 指定用于排序的列的列表。
- limit 限制返回行的数量。
--查询所有的员工信息
select * from employees;

--查询所有的员工姓名及工作
select firstname,lastname,jobtitle from employees;

--去掉lastname重复的数据,使用DISTINCT 子句,排重
select distinct lastname from employees;
select distinct lastname from employees order by lastname;

--如果不适用聚合函数,group by 也可以达到相同的效果
select distinct state from customers;
select state from customers group by state;

--distinct句和group by子句之间的区别是group by子句可对结果集进行排序,而distinct子句不进行排序

--null数据的处理
select state from customers;
select distinct state from customers;

--多列排重
select distinct state, city from customers where state is not null order by state , city;

--distinct和聚合函数
select count(distinct state) from customers where country = 'USA';

--distinct与limit子句
select distinct state from customers where state is not NULL limit 3;

--比较运算符的使用
select lastname, firstname, jobtitle from employees where jobtitle <> 'Sales Rep';
select lastname, firstname, officeCode from employees where officecode > 5;
select lastname, firstname, officeCode from employees where officecode <= 4;
常见的比较运算符
操作符描述
=等于, 几乎任何数据类型都可以使用它。
<> 或 !=不等于
<小于, 通常使用数字和日期/时间数据类型。
>大于,
<=小于或等于
>=大于或等于
运算符优先级
select true or false and false;  --true;先and 后or

select (true or false) and false;  --false
IN 操作符–和or的作用相似

(not in:取反面)

select officeCode, city, phone, country from offices where country in ('USA' , 'France');
select officeCode, city, phone, country from offices where country not in ('USA' , 'France');
IN 与子查询
--查找总金额大于 60000 的订单
select orderNumber, customerNumber, status, shippedDate from orders
where orderNumber in (
    select orderNumber from orderDetails group by orderNumber having sum(quantityOrdered * priceEach) > 60000);
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值