从零开始学习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);
发布了5 篇原创文章 · 获赞 14 · 访问量 5512

猜你喜欢

转载自blog.csdn.net/ThrStones/article/details/104756654