这是一篇既不严谨也不专业的,完全站在非程序员的视角写的教程,作为非程序人员,我们既不需要考虑实现原理,也不用在意处理效率,能用就行。
准备做成视频,这也就是视频的文案,目前是初稿发上来征求意见,同时也建了个交流群,欢迎非专业人士进来
——————分割线——————
目录:
一、为什么是sql
二、概述及单表查询
三、三步搞定安装配置及导入
四,练习题及答案
五、多表查询
六、注意事项
一、为什么是sql
你是一个普普通通的人力,每天面对的就是一张张的员工信息表
做一些简单的统计工作,大部分的工作只是简单的表格处理,甚至连宏都不需要,虽然有时候需要用一些笨方法,但是工作还是可以完成的。
但是突然有一天,你的老板突发奇想,觉得员工入职的都是好日子,打算只要员工入职了就去买股票去,然后扔给了你了一个表格,里面有着20年的股票数据,让你去算一下只要员工入职了就去买股票,当天是涨的多还是跌的多
你要怎么办,你只能无奈的去翻找每个员工入职的日子,然后再去看看当天的股票是不是开盘,然后再算出来是涨还是跌。当然了,如果是一个Excel高手,会使用复杂的宏操作,也是可以通过编写宏来实现自动查询的,但作为一个普通打工者,学习宏显然并不如用笨办法去查询一下了。
但是,如果你会操作数据库,只需要三行代码,这个问题就解决了,两个表格就合并为一个表格了。
只需要四行代码,结果也都统计出来了。
最关键的是,这是通过两个小时学习,只需要掌握10个命令就可以做到的程度。也是我写这个教程的初衷,
UP不是程序员,只是在11月才接触到数据库,然后简单学了下发现可以很方便的实现很多的功能,但是看的视频都是教给想要做程序员的,讲的内容都是无比的复杂,如果不是程序员根本就没必要了解,于是就产生了这个想法,我们一个普通的人,只是为了工作方便学习一下数据库其实可以做到很简单的,只要掌握一些固定的句式,完全可以很快的入手,就当是给Excel加上了一个外挂而已了,我们又不要去做程序员。
二、概述及单表查询
数据库的查询只需要四行,不管是任何的查询,只要按照顺序写四行就可以了,当然了,每次查询都写四行,可能排版上不好看,为了更好看我们会分个段,但那只是浏览效果,从内容上还是只有四行。
是的,只有7个关键词,记住这7个词就可以开始干活了。
下面结合具体案例说说用法,首先记住这张表,所有的内容都在这里了。
回到前面提到的员工信息表的表格了,我们针对这种表格来操作一下。
首先说明:用到的所有的符号都是英文状态下的符号
我把这个表格导入到了数据库以后
1、查看一下所有的内容
#此处的*就代表所有的字段内容,用来查询全部
SELECT *
FROM 员工信息表
2、查询指定字段name,workno,age
#字段就是一个表格的表头了,想要查询什么内容就输入表头,多个表头之间用','分割开就好
SELECT name,workno,age
FROM 员工信息表
3、在这个表格里,表头是英文的,我想要给别人展示的时候是中文展示,查询所有员工的工作地址,起一个中文别名进行展示
#在字段后输入空格,然后再空格后直接输入的内容就是给当前字段起了一个别名,后期可以用别名来代替该字段
SELECT workaddress 工作地址
FROM 员工信息表
4、以上查询中结果是有重复的,现在需要去重展示工作地址
#DISTINCT去重关键词,使用时直接放在字段前面即可
SELECT DISTINCT workaddress 工作地址
FROM 员工信息表
5、统计该企业员工数量
#COUNT表示计数,此处可以用*表示对整个表格计数,也可以指定具体字段,表示统计该字段的数量
SELECT COUNT(*)
FROM 员工信息表
6、统计该企业的平均年龄
#AVG表示平均数,统计哪里的数据()内填入字段即可,同理SUM,MAX,MIN同样的用法
SELECT AVG(age)
FROM 员工信息表
以上就是数据库查询前两行的内容,现在我们加入第三行,这一行可以加入查询条件了。
7、查询年龄为88岁的员工
#=没有什么好说的,两边相等,除了表示数字相等,还可用来表示字符串,但表字符串的时候需要加''引号,后续有案例。
SELECT *
FROM 员工信息表
WHERE age = 88
8、查询年龄小于20的员工信息
#<小于,<=小于等于,>大于,>=大于等于,!=不等于,一看就懂
SELECT *
FROM 员工信息表
WHERE age < 20
9、原表格中有一些人没有身份证号,找出他们来
#NULL代表空的意思,ISNULL就是这里是空的意思,ISNOTNULL就是这里不是空了
SELECT *
FROM 员工信息表
WHERE idcard is null
10、查询年龄在15岁(包含)到22岁(包含)之间的员工信息
#BETTEN...AND..表示一个范围,输入范围的两端即可,当然次数也可以用>=...AND
#当然此处可以用AND,表达为:age >= 15 AND age <= 22
SELECT *
FROM 员工信息表
WHERE age BETWEEN 15 and 22
11、查询年龄等于18或20或40的员工信息
#BETWEEN...AND...是一个范围内区间,包含区间内的所有,而IN是明确指定范围,()内的内容就是指定好的范围#此处可以用or,表示为:age = 18 or age = 20 or age = 40
SELECT *
FROM 员工信息表
WHERE age in (18,20,40)
12,查询性别为女且年龄小于25岁的员工
#AND就是并列,多个条件同时满足,OR就是多个条件满足一个即可#=后是一个字符,这里的女要加上''
SELECT *
FROM 员工信息表
WHERE age <= 25 and gender = '女'
13、查询姓名为两个字的员工信息
#LIKE表示模糊查询的意思,有两种形式,第一个是_(下划线),每个_表示一个字符。第二个是%,不特指定位数
SELECT *
FROM 员工信息表
WHERE name LIKE '__'
14、查询身份证号最后一位是X的员工信息
#此处演示的就是%的用法,%表示不特定位数,这里表示巡查结尾是X,前面位数不指定
SELECT *
FROM 员工信息表
WHERE idcard LIKE '%X'
15、统计下上海地区员工的年龄之和
#此处就是第一行的内容的组合,字段和函数是可以同时使用的,只要用','分隔开即可
SELECT SUM(age)
FROM 员工信息表
WHERE workaddress = '上海'
前三行讲完了,现在开始进入最后一行。像上一个例子,只是输出了一个结果201,但是展示上并不直观,为了方便的展示出来,我们就需要一些展示形式。
16、根据性别分组,统计男性员工和女性员工的平均年龄。
#GROUPBY分组展示,是对查询的结果进行展示,此处我们想展示一性别为分组的结果
SELECT gender,AVG(age)
FROM 员工信息表
GROUP BY gender
17、查询年龄小于45的员工,并根据工作地址分组,获取员工数量大于等于3的工作地址。
#HAVING是对查询的结果进行再次查询的意思#首先是条件查询年龄小于45岁,然后通过COUNT统计出来员工的数量#然后HAVING对COUNT统计数来的结果在进行查询,找到大于等于3的结果进行展示。
SELECT workaddress,COUNT(*)
FROM 员工信息表
WHERE age <= 45
GROUPBY workaddress HAVING COUNT(*) >= 3
18、根据年龄对公司的员工进行升序排序
#ORDERBY排序展示,是对表格进行操作,对内容进行排序展示,而GROUPBY是对查询结果进行展示#ORDERBY默认是升序排序,如果需要降序培训可以在字段后加DESC,如本案例ageDESC则表示对年龄进行降序排序
SELECT *
FROM 员工信息表
ORDER BY age
19、查询第一页员工数据,每页展示10条记录
#LIMIT用来展示数量,关键词后跟两个数字,第一个表示从第几个数据开始展示,第二个表示每页展示多少数据。#LIMIT的展示是从0开始,所以从第一页开始展示是0
SELECT *
FROM 员工信息表
LIMIT 0,10
以上,就是单表查询需要的所有的关键词,不知道这么写有没有看懂呢,当然了这只是最粗糙的展示,每个关键词还是有一些细节的。
如果看了最开始的例子你对sql有了兴趣,看了第二部分的介绍你觉得数据库好像并不是很难,也想要自己尝试一下了,那就进入第三部分吧。
三、三步搞定安装配置及导入
1、安装软件。我们不是为了做程序员的,我们就是为了工作方便,所以软件上建议不要选最专业的,以界面简单好操作,够用就行的原则。推荐Navicat。这里给个链接,可以直接下载下来安装就好了。因为一些众所周知的原因,安装好了以后进入界面如果提示升级的话,看好了版本,本软件是第12版,如果是提示更新12版,可以升级,如果是提示升级到最新版那就一定不要升级了。
http://ddns.weisizheng.com:8888/s/yar9i7
2、申请一个数据库服务器。
数据库的内容是要有一个服务器来存储的,可以自己部署服务器,也可以用本机作为服务器,但也需要自己部署,不推荐初学者使用,作为初学我们就是有现成的免费的可以用就直接使用就好了。
这里推荐一个网站:SQLPub - 免费的MySQL数据库
看上去像是给这个网站再打广告,但是确实没有找到更傻瓜的网站,输入数据库名字和用户名,建议英文了,然后直接申请就可以。
注意:这个网站点了申请以后出来结果马上截屏保存,他这个内容只展示一次,如果没有保存到,就浪费了一个邮箱,必须从新申请了,没办法找回。
这是我申请的结果
3、用下载安装好的Navicat链接这个网站申请的服务器即可。
打开软件点击链接,然后点击MYSQL
把自己申请好的服务器信息填写进去即可,然后点击确认,服务器就连接好了。
如果你想要创建自己的数据也很简单,申请了服务器以后,在表那里右键选择导入向导
选择你的Excel文件,连续点击下一步都用默认设置
这里点击开始
再点击开始,一张属于自己的数据表格就生成了
打开数据表以后点击新建查询就可以开始操作了
四、练习及答案
我已经把我操作的内容放在了这个服务器上了,如果你感兴趣现在就可以连接到本服务器上自己去练习了。
我把题目汇总到了下面,并且把答案也附在了下面,现在就开始练习吧。
如果练习了以后你觉得有兴趣那就继续往下看吧。
● 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员工信息表WHEREage<=25andgender='女'
● 13、查询年龄等于18或20或40的员工信息
SELECT * FROM 员工信息表 WHERE age = 18 or age = 20 or age = 40
SELECT * FROM 员工信息表 WHERE agein (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 <= 45 GROUP BY workaddress HAVING COUNT(*)>=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 agein (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 LIMIT5
五、多表查询
这部分内容还在构思,先看看上面的反应了,留个群吧,看看有没有人加,给我提提意见,也说说自己想法,我继续完善我这个教程。知乎不能发码,想进的私信我了。
网友评论