SQL入门教程

作者 : admin 本文共7476个字,预计阅读时间需要19分钟 发布时间: 2024-06-9 共2人阅读

目录:

一、为什么是sql

二、概述及单表查询

三、三步搞定安装配置及导入

四,练习题及答案

五、多表查询

六、注意事项

一、为什么是sql

你是一个普普通通的人力,每天面对的就是一张张的员工信息表

SQL入门教程插图

做一些简单的统计工作,大部分的工作只是简单的表格处理,甚至连宏都不需要,虽然有时候需要用一些笨方法,但是工作还是可以完成的。

但是突然有一天,你的老板突发奇想,觉得员工入职的都是好日子,打算只要员工入职了就去买股票去,然后扔给了你了一个表格,里面有着20年的股票数据,让你去算一下只要员工入职了就去买股票,当天是涨的多还是跌的多

SQL入门教程插图(1)

你要怎么办,你只能无奈的去翻找每个员工入职的日子,然后再去看看当天的股票是不是开盘,然后再算出来是涨还是跌。当然了,如果是一个Excel高手,会使用复杂的宏操作,也是可以通过编写宏来实现自动查询的,但作为一个普通打工者,学习宏显然并不如用笨办法去查询一下了。

但是,如果你会操作数据库,只需要三行代码,这个问题就解决了,两个表格就合并为一个表格了。

SQL入门教程插图(2)

只需要四行代码,结果也都统计出来了。

SQL入门教程插图(3)

最关键的是,这是通过两个小时学习,只需要掌握10个命令就可以做到的程度。也是我写这个教程的初衷,

UP不是程序员,只是在11月才接触到数据库,然后简单学了下发现可以很方便的实现很多的功能,但是看的视频都是教给想要做程序员的,讲的内容都是无比的复杂,如果不是程序员根本就没必要了解,于是就产生了这个想法,我们一个普通的人,只是为了工作方便学习一下数据库其实可以做到很简单的,只要掌握一些固定的句式,完全可以很快的入手,就当是给Excel加上了一个外挂而已了,我们又不要去做程序员。

二、概述及单表查询

数据库的查询只需要四行,不管是任何的查询,只要按照顺序写四行就可以了,当然了,每次查询都写四行,可能排版上不好看,为了更好看我们会分个段,但那只是浏览效果,从内容上还是只有四行。

第一行 查询内容 SELECT, 
第二行 数据来源 FROM,INNER JOIN 
第三行 查询条件 WHERE
第三行 输出形式 GROUP BY,ORDER BY,LIMIT

是的,只有7个关键词,记住这7个词就可以开始干活了。

下面结合具体案例说说用法,首先记住这张表,所有的内容都在这里了。

##查询内容
SELECT *
       字段1 别名1,字段2 别名2,字段3 别名3
       DISTINCT(去重) 字段列表
       COUNT(字段列表),MAX(), MIN(),AVG(),SUM()
#SELECT后可以跟两种内容,第一种是具体需要查询的字段名称,第二种就是函数,这里列举最常用的五个函数
       #COUNT(计数),MAX(求最大值),MIN(求最小值),AVG(求平均值),SUM*求和

##数据来源
FROM 主表名 别名
INNER JOIN 附表名 别名 ON 加入条件

##查询条件
WHERE  >,  =,<, !=, 
      BETWEEN...AND...,  IN(...),  LIKE(%,__), IS NULL   
      AND,  OR,  NOT
#大于,等于,小于,不等于
#在某个范围之内(含最小,最大),在In之后的列表中的值,模糊匹配,是NULL                                       
#并且(多个条件同时成立),或者(多个条件任意一个成立),非(不是)

##输出形式
#分组查询    
GROUP BY  分组字段名   排序方式(ASC升序,默认值  DESC降序)      HAVING 分组后过滤条件
#排序查询     
ORDER BY   
#分页查询     
LIMIT  起始索引(从0开始),查询记录数 

回到前面提到的员工信息表的表格了,我们针对这种表格来操作一下。

首先说明:用到的所有的符号都是英文状态下的符号

我把这个表格导入到了数据库以后

1、查看一下所有的内容

#此处的*就代表所有的字段内容,用来查询全部
SELECT *
FROM 员工信息表

SQL入门教程插图(4)

2、查询指定字段name,workno,age

#字段就是一个表格的表头了,想要查询什么内容就输入表头,多个表头之间用','分割开就好

SELECT name,workno,age
FROM 员工信息表

SQL入门教程插图(5)

3、在这个表格里,表头是英文的,我想要给别人展示的时候是中文展示,查询所有员工的工作地址,起一个中文别名进行展示

#在字段后输入空格,然后再空格后直接输入的内容就是给当前字段起了一个别名,后期可以用别名来代替该字段

SELECT workaddress 工作地址
FROM 员工信息表

SQL入门教程插图(6)

4、以上查询中结果是有重复的,现在需要去重展示工作地址

#DISTINCT去重关键词,使用时直接放在字段前面即可

SELECT DISTINCT workaddress 工作地址
FROM 员工信息表

SQL入门教程插图(7)

5、统计该企业员工数量

#COUNT表示计数,此处可以用*表示对整个表格计数,也可以指定具体字段,表示统计该字段的数量

SELECT COUNT(*)
FROM 员工信息表

SQL入门教程插图(8)

6、统计该企业的平均年龄

#AVG表示平均数,统计哪里的数据()内填入字段即可,同理SUM,MAX,MIN同样的用法

SELECT AVG(age)
FROM 员工信息表

SQL入门教程插图(9)

以上就是数据库查询前两行的内容,现在我们加入第三行,这一行可以加入查询条件了。

7、查询年龄为88岁的员工

# = 没有什么好说的,两边相等,除了表示数字相等,还可用来表示字符串,但表字符串的时候需要加''引号,后续有案例。

SELECT *
FROM 员工信息表
WHERE age = 88

SQL入门教程插图(10)

8、查询年龄小于20的员工信息

#<小于,大于,>=大于等于,!=不等于,一看就懂

SELECT *
FROM 员工信息表
WHERE age < 20

SQL入门教程插图(11)

9、原表格中有一些人没有身份证号,找出他们来

#NULL代表空的意思,IS NULL就是这里是空的意思,IS NOT NULL就是这里不是空了

SELECT *
FROM 员工信息表
WHERE idcard is null

SQL入门教程插图(12)

10、查询年龄在15岁(包含)到22岁(包含)之间的员工信息

#BETTEN...AND..表示一个范围,输入范围的两端即可,当然次数也可以用>=...AND
#当然此处可以用AND,表达为:age >= 15 AND age <= 22

SELECT *
FROM 员工信息表
WHERE age BETWEEN 15 and 22

SQL入门教程插图(13)

11、查询年龄等于18或20或40的员工信息

#BETWEEN...AND...是一个范围内区间,包含区间内的所有,而IN是明确指定范围,()内的内容就是指定好的范围
#此处可以用or,表示为:age = 18 or age = 20 or age = 40

SELECT *
FROM 员工信息表
WHERE age in (18,20,40)

SQL入门教程插图(14)

12,查询性别为女且年龄小于25岁的员工

#AND就是并列,多个条件同时满足,OR就是多个条件满足一个即可
# = 后是一个字符,这里的女要加上''

SELECT *
FROM 员工信息表
WHERE age <= 25 and gender = '女'

SQL入门教程插图(15)

13、查询姓名为两个字的员工信息

#LIKE表示模糊查询的意思,有两种形式,第一个是_(下划线),每个_表示一个字符。第二个是%,不特指定位数

SELECT *
FROM 员工信息表
WHERE name LIKE'__'

SQL入门教程插图(16)

14、查询身份证号最后一位是X的员工信息

#此处演示的就是%的用法,%表示不特定位数,这里表示巡查结尾是X,前面位数不指定

SELECT *
FROM 员工信息表
WHERE idcard LIKE'%X'

SQL入门教程插图(17)

15、统计下上海地区员工的年龄之和

#此处就是第一行的内容的组合,字段和函数是可以同时使用的,只要用','分隔开即可

SELECT SUM(age)
FROM 员工信息表
WHERE workaddress = '上海'

SQL入门教程插图(18)

前三行讲完了,现在开始进入最后一行。像上一个例子,只是输出了一个结果201,但是展示上并不直观,为了方便的展示出来,我们就需要一些展示形式。

16、根据性别分组,统计男性员工和女性员工的平均年龄。

#GROUP BY分组展示,是对查询的结果进行展示,此处我们想展示一性别为分组的结果

SELECT gender,AVG(age)
FROM 员工信息表
GROUP BY gender

SQL入门教程插图(19)

17、查询年龄小于45的员工,并根据工作地址分组,获取员工数量大于等于3的工作地址。

#HAVING是对查询的结果进行再次查询的意思
#首先是条件查询年龄小于45岁,然后通过COUNT统计出来员工的数量
#然后HAVING对COUNT统计数来的结果在进行查询,找到大于等于3的结果进行展示。

SELECT workaddress,COUNT(*)
FROM 员工信息表
WHERE age = 3

SQL入门教程插图(20)

18、根据年龄对公司的员工进行升序排序

#ORDER BY排序展示,是对表格进行操作,对内容进行排序展示,而GROUP BY是对查询结果进行展示
#ORDER BY默认是升序排序,如果需要降序培训可以在字段后加DESC,如本案例age DESC 则表示对年龄进行降序排序

SELECT *
FROM 员工信息表
ORDER BY age 

SQL入门教程插图(21)

19、查询第一页员工数据,每页展示10条记录

#LIMIT用来展示数量,关键词后跟两个数字,第一个表示从第几个数据开始展示,第二个表示每页展示多少数据。
#LIMIT的展示是从0开始,所以从第一页开始展示是0

SELECT *
FROM 员工信息表
LIMIT 0,10

SQL入门教程插图(22)

以上,就是单表查询需要的所有的关键词,不知道这么写有没有看懂呢,当然了这只是最粗糙的展示,每个关键词还是有一些细节的。

如果看了最开始的例子你对sql有了兴趣,看了第二部分的介绍你觉得数据库好像并不是很难,也想要自己尝试一下了,那就进入第三部分吧。

三、三步搞定安装配置及导入

1、安装软件。我们不是为了做程序员的,我们就是为了工作方便,所以软件上建议不要选最专业的,以界面简单好操作,够用就行的原则。推荐Navicat。这里给个链接,可以直接下载下来安装就好了。因为一些众所周知的原因,安装好了以后进入界面如果提示升级的话,看好了版本,本软件是第12版,如果是提示更新12版,可以升级,如果是提示升级到最新版那就一定不要升级了。

Navicat​ddns.weisizheng.com:8888/s/22thxb

2、申请一个数据库服务器。

数据库的内容是要有一个服务器来存储的,可以自己部署服务器,也可以用本机作为服务器,但也需要自己部署,不推荐初学者使用,作为初学我们就是有现成的免费的可以用就直接使用就好了。

这里推荐一个网站:SQLask – 免费的MySQL数据库

看上去像是给这个网站再打广告,但是确实没有找到更傻瓜的网站,输入数据库名字和用户名,建议英文了,然后直接申请就可以。

注意:这个网站点了申请以后出来结果马上截屏保存,他这个内容只展示一次,如果没有保存到,就浪费了,必须从新申请了,没办法找回。

SQL入门教程插图(23)

3、用下载安装好的Navicat链接这个网站申请的服务器即可。

SQL入门教程插图(24)

打开软件点击链接,然后点击MYSQL

SQL入门教程插图(25)

把自己申请好的服务器信息填写进去即可,然后点击确认,服务器就连接好了。

如果你想要创建自己的数据也很简单,申请了服务器以后,在表那里右键选择导入向导

SQL入门教程插图(26)

SQL入门教程插图(27)

选择你的Excel文件,连续点击下一步都用默认设置

SQL入门教程插图(28)

这里点击开始

SQL入门教程插图(29)

再点击开始,一张属于自己的数据表格就生成了

SQL入门教程插图(30)

打开数据表以后点击新建查询就可以开始操作了

四、练习及答案

我已经把我操作的内容放在了这个服务器上了,如果你感兴趣现在就可以连接到本服务器上自己去练习了。

我把题目汇总到了下面,并且把答案也附在了下面,现在就开始练习吧。

如果练习了以后你觉得有兴趣那就继续往下看吧。

● 1、查询指定字段name,workno,age
● 2、查询所有字段
● 3、查询所有员工的工作地址,起别名
● 4,、查询公司员工的上班地址(不要重复)
● 5、查询年龄等于88的员工
● 6、查询年龄小于20的员工信息
● 7、查询年龄小于等于20的员工信息
● 8、查询没有身份证号的员工信息
● 9、查询有身份证号的员工信息
● 10、查询年龄不等于88的员工信息
● 11、查询年龄在15岁(包含)到20岁(包含)之间的员工信息
● 12、查询性别为女且年龄小于25岁的员工信息
● 13、查询年龄等于18或20或40的员工信息
● 14、查询姓名为两个字的员工信息
● 15、查询身份证号最后一位是X的员工信息
● 16、统计该企业员工数量
● 17、统计该企业员工的平均年龄
● 18、统计该企业员工的最小年龄
● 19、统计上海地区员工的年龄之和
● 20、根据性别分组,统计男性员工和女性员工的数量
● 21、根据性别分组,统计男性员工和女性员工的平均年龄。
● 22、查询年龄小于45的员工,并根据工作地址分组,获取员工数量大于等于3的工作地址。
● 23、根据年龄对公司的员工进行升序排序
● 24、根据入职时间,对员工进行降序排序
● 25、根据年龄对公司的员工进行升序排序,年龄相同,再按照入职时间进行降序排序
● 26、查询第一页员工数据,每页展示10条记录
● 27、查询第二页员工数据,每页展示10条记录
● 28、查询年龄为20,21,22,23岁的女性员工信息
● 29,查询性别为男,并且年龄在20-40岁(含)以内的姓名为三个字的员工
● 30,统计员工表中,年龄小于60岁的,男性员工和女性员工的人数
● 31,查询所有年龄小于等于35岁员工的姓名和年龄,并对查询结果按年龄升序排序,如果年龄相同按入职时间降序排序
● 32,查询性别为男,且年龄在20-40岁(含)以内的前5个员工信息,对查询的结果按年龄升序排序,年龄相同按入职时间升序排序

答案:

案例答案
● 1、查询指定字段name,workno,age

SELECT name,workno,age
FROM 员工信息表

● 2、查询所有字段

SELECT *
FROM 员工信息表

● 3、查询所有员工的工作地址,起别名

SELECT workaddress 工作地址
FROM 员工信息表

● 4,、查询公司员工的上班地址(不要重复)

SELECT DISTINCT workaddress 工作地址
FROM 员工信息表

● 5、查询年龄等于88的员工

 SELECT *
FROM 员工信息表
WHERE age = 88

● 6、查询年龄小于20的员工信息

SELECT *
FROM 员工信息表
WHERE age < 20

● 7、查询年龄小于等于20的员工信息

SELECT *
FROM 员工信息表
WHERE age <= 20

● 8、查询没有身份证号的员工

SELECT *
FROM 员工信息表
WHERE idcard is null

● 9、查询有身份证号的员工信息

SELECT *
FROM 员工信息表
WHERE idcard is not null

● 10、查询年龄不等于88的员工信息

SELECT *
FROM 员工信息表
WHERE age != 88

● 11、查询年龄在15岁(包含)到20岁(包含)之间的员工信息

SELECT *
FROM 员工信息表
WHERE age BETWEEN 15 and 20
 
SELECT *
FROM 员工信息表
WHERE age >=15 and age <= 20

● 12、查询性别为女且年龄小于25岁的员工信息

SELECT *
FROM 员工信息表
WHERE age <= 25 and gender = '女'

● 13、查询年龄等于18或20或40的员工信息

SELECT *
FROM 员工信息表
WHERE age = 18 or age = 20 or age = 40

SELECT *
FROM 员工信息表
WHERE age in (18,20,40)

● 14、查询姓名为两个字的员工信息

SELECT *
FROM 员工信息表
WHERE name LIKE'__'

● 15、查询身份证号最后一位是X的员工信息

SELECT *
FROM 员工信息表
WHERE idcard LIKE'%X'

● 16、统计该企业员工数量

SELECT COUNT(*)
FROM 员工信息表

● 17、统计该企业员工的平均年龄

SELECT AVG(age)
FROM 员工信息表

● 18、统计该企业员工的最小年龄

SELECT MIN(age)
FROM 员工信息表

● 19、统计上海地区员工的年龄之和

SELECT SUM(age)
FROM 员工信息表
WHERE workaddress = '上海'

● 20、根据性别分组,统计男性员工和女性员工的数量

SELECT gender,COUNT(*)
FROM 员工信息表
GROUP BY gender 

● 21、根据性别分组,统计男性员工和女性员工的平均年龄。

SELECT gender,AVG(age)
FROM 员工信息表
GROUP BY gender 

● 22、查询年龄小于45的员工,并根据工作地址分组,获取员工数量大于等于3的工作地址。

SELECT workaddress,COUNT(*)
FROM 员工信息表
WHERE age = 3

● 23、根据年龄对公司的员工进行升序排序

SELECT *
FROM 员工信息表
ORDER BY age 

● 24、根据入职时间,对员工进行降序排序

SELECT *
FROM 员工信息表
ORDER BY entrydate  DESC

● 25、根据年龄对公司的员工进行升序排序,年龄相同,再按照入职时间进行降序排序

SELECT *
FROM 员工信息表
ORDER BY age,entrydate DESC

● 26、查询第一页员工数据,每页展示10条记录

SELECT *
FROM 员工信息表
LIMIT 0,10

● 27、查询第二页员工数据,每页展示10条记录

SELECT *
FROM 员工信息表
LIMIT 10,10

● 28、查询年龄为20,21,22,23岁的女性员工信息

SELECT *
FROM 员工信息表
WHERE age in (20,21,22,23)

● 29,查询性别为男,并且年龄在20-40岁(含)以内的姓名为三个字的员工

SELECT *
FROM 员工信息表
WHERE gender = '男' AND age BETWEEN 20 AND 40 AND name LIKE'___'

● 30,统计员工表中,年龄小于60岁的,男性员工和女性员工的人数

SELECT gender,COUNT(*)
FROM 员工信息表
WHERE age < 60
GROUP BY gender

● 31,查询所有年龄小于等于35岁员工的姓名和年龄,并对查询结果按年龄升序排序,如果年龄相同按入职时间降序排序

SELECT `name`,age
FROM 员工信息表
WHERE age <= 35
ORDER BY age,entrydate DESC

● 32,查询性别为男,且年龄在20-40岁(含)以内的前5个员工信息,对查询的结果按年龄升序排序,年龄相同按入职时间升序排序

SELECT *
FROM 员工信息表
WHERE gender = '男' AND age BETWEEN 20 AND 40 
ORDER BY age,entrydate DESC
LIMIT 5

五、多表查询

这部分内容还在构思,先看看上面的反应了,留个群吧,看看有没有人加,给我提提意见,也说说自己想法,我继续完善我这个教程。知乎不能发码,想进的私信我了

本站无任何商业行为
个人在线分享 » SQL入门教程
E-->