写在前面
从之前做开发,到现在转做运营、数据分析。SQL一直都是至关重要的。做开发或者做数据分析,需要的SQL技能点,都不完全相同。本篇主要偏向于数据分析必备的SQL技能。
Excel数据分析暂告一段落了,现在开始整理SQL笔记了。
已知有如下4张表:
学生表:student(学号,学生姓名,出生年月,性别)
成绩表:score(学号,课程号,成绩)
课程表:course(课程号,课程名称,教师号)
教师表:teacher(教师号,教师姓名)
根据以上信息按照下面要求写出对应的SQL语句。
![a4414272ae08cb5fcd3862ac3ad4f773.png](https://i-blog.csdnimg.cn/blog_migrate/eca4f0dd8720e09a91c2eeaeee96260e.jpeg)
一、简单入门介绍
SQL,即Structured Query Language的缩写,意思是:结构化查询语言,是一种在数据库管理系统(Relational Database Management System, RDBMS)中查询数据,或通过RDBMS对数据库中的数据进行更改的语言。
常见的RDBMS有:
- Oracle Database:甲骨文公司的RDBMS
- SQL Server :微软公司的RDBMS
- DB2:IBM 公司的RDBMS
- PostgreSQL:开源的RDBMS
- MySQL :开源的RDBMS
RDBMS不同RDBMS的SQL语言略微有所不同,由于MySQL是开源、免费的,国内很多公司用的都是MySQL,所以本篇文章汇总的主要是MySQL的SQL语言。
根据对RDBMS 赋予的指令种类的不同,SQL 语句可以分为以下三类:
![1bb0adde2fda0998296b0cad9a6d84fd.png](https://i-blog.csdnimg.cn/blog_migrate/7eba042b75fffff63caed48b0103d277.jpeg)
提到数据库,就不得不提到“增、删、改、查”。作为数据分析师,大多数公司,出于安全的考虑,一般只会给数据分析师 查询数据 的权限,不会开放其他诸如“增、删、改”的操作权限,基于此,我们着重学习 select查询 语句即可,故本文以 select查询 为主。
二、简单查询
(一)基本规则
SQL语言以英文分号(;)结尾;
SQL语句不区分关键字的大小写;如:SELECT 同 select;
输入符号只能使用 英文状态 ;如:逗号(,)、点号(.);
/* */ 可以用于插入多行注释;
(二)基础查询
1、基本语法:
- 列的基本查询
select <列名> from <表名>;
- 查询表中所有的列
该语句的显示结果为每条数据的顺序随机。
select * from <表名>;
注:星号(*)是选取所有列的快捷方式;
- 为列设定别名
select <列名> as <新列名> from <表名>;
- 常数的查询
select <常值> as <新列名> from <表名>;
- 结果中删除重复行
关键词 distinct 用于返回唯一不同的值。null数据会合并为一条,distinct 只能 用在第一个列名之前。
select distinct <列名> from <表名>;
- where条件查询
select <列名> from <表名> where <列 运算符 值>;
注:where 只能指定行的条件,不能指定组的条件。对于分组后的筛选,需用 having 子句。
- 模糊查询
select <列名> from <表名> where <列名> like 条件
其中关于 like 条件,SQL提供了四种匹配模式,本文介绍常用的两种:
% :表示任意0个或多个字符。可匹配任意类型和长度的字符,有些情况下若是中文,请使用两个百分号(%%)表示。
select * from user where u_name like '%三%'
'孟%';:表示以"孟"开头的;
'%孟%';:表示带"孟"的;
'%孟';:表示以"孟"结尾的;