mysql集合运算_SQL基础教程(mick)学习

数据处理通常情况下使用EXCEL,但也有其劣势,当数据量过大(10万条以上)就无法进行处理,现今数据量动辄几十上百万量的数据,就需要使用更高级的数据处理工具——DBMS。

学习的教材选择的是日本作家MICK所著的《SQL基础教程》。

一.思维导图

二.课程内容

1.SQL

DBMS(database management system):数据管理系统,能够实现多个用户同时安全简单地操作大量数据。

DBMS种类:HDB(层次数据库) RDB(关系数据库) OODB(面向对象数据库)

目前应用最广泛的是RDB,本书学习的就是这一类型,其他类型暂不作了解

SQL:用来进行操作关系数据库的语言。

SQL语句类型:DDL 数据定义语言

DCL 数据控制语言

DML数据操纵语言:用来查询或变更表中的记录

DML指令:SELECT(查询)INSERT(插入)UPDATE(更新)DELETE(删除)

实际使用90%都是DML类型,本书也是主讲这一类型。

创建数据库:a.安装MYSQL服务器端 安装Navicat Premium客户端 安装过程不再赘述,详 情参考猴哥教程:MYSQL猴子:超级详细的mysql安装指南​zhuanlan.zhihu.com88cb7658b7660c570d9a9fcc607e938b.png

Navicat Premium猴子:Mysql客户端:Navicat安装教程及问题汇总​zhuanlan.zhihu.com448f982c00fb4ef38ea619c08a6f7bc8.png

b.数据库创建,CREATE DATABASE

c.表的创建,CREATE TABLE,......PRIMARY KEY;

2.基础查询

a.SELECT,通过select语句查询并选取出必要数据,针对表中的列;SELECT语句是由select字句和from字句组成

语法:SELECT FROM

b.代表所有列,例如:select * from product

c.算数运算符,+ - * /,四则运算加减乘除,运算是以行为单位执行的,注意所有包含NULL(空值)的结算最终结果都为空值

d.比较运算符,= <> >= <= > < ,<>为不等于,需要注意不等号在左,等号在右,另外不能对NULL进行比较

e.逻辑运算符,NOT AND OR,NOT需要和其他查询条件组合使用,用力否定某一条件,在WHERE字句中使用AND和OR可以对多个查询条件进行组合,AND是逻辑积OR是逻辑和

3.聚合和排序

a.聚合,对表进行多种参数查询时,需要使用聚合函数来计算结果,COUNT(行数) SUM(和)AVG(平均值)MAX(最大值)MIN(最小值),SUM和AVG只适用于数值类型的列,MAX和MIN适用于所有数据类型的列

b.分组(行),使用GROUP BY字句进行分组

语法:select ,......

from

group by ,......

d.HAVING字句,对b分组后的结果按条件进行筛选

语法:select ,......

from

group by ,......

having

e.排序,ORDER BY,在SELECT字句末尾加上指定排列顺序,ASC代表升序,DESC代表降序,通常情况下没有标注默认ASC,需要指定可在列名后面标注

语法:ORDER BY ASC/DESC;

3.复杂查询

a.视图,实际上是SELECT语句,进行优化所使用,特点是能节省数据设备空间,另外创建视图更方便使用,直接使用SELECT语句就能得到结果

创建:CREATE VIEW视图名称......

AS

使用视图查询:先执行定义视图的SELECT语句,再根据结果在FROM子句中使用视图的SELECT语句

限制:定义视图时不能使用ORDER BY 字句,视图和表需要同时进行更新,通过汇总得来视图无法更新

b.视图的子查询,通俗来讲就是一次性的SELECT语句,直接用于FROM字句当中,用完也就消失了。子查询作为内层查询会首先执行,原则上子查询需要设定名称,其他情况书中没有说明暂时不研究,使用AS关键字来设定

e.标量子查询,标量即单一的意思,能够使用常数或者列名的地方都可以使用,通常上运用在比较运算符之中,如= >这类,返回的是某一行某一列的具体值,SELECT语句更好运算。查询顺序是从内到外,注意标量子查询有且只有一个结果

f.关联子查询,细分组内进行比较时子查询结果大于1个,就要用到关联子查询,使用时需要在表所对应的列名之前加上表的别名,以记述

4.函数、谓词、CASE表达式

a.函数

算数:加减乘除(+-*/)

ROUND 四舍五入函数,ROUND(对象数值,保留小数的位数),该函数对于数据的一致化处理有很大帮助

ABS绝对值函数,去掉数据中的负号

MOD求余函数,除法余数,MOD(17,4)AS MOD_FB,即1

字符串函数:||拼接函数,合并多个字符串使用,MYSQL中用不了,了解下即可

LENGTH字符串长度函数,就是计算该字符串包含多少个字符时使用,目前能想到的就是数据一致化时使用

LOWER函数,转换小写语法,

UPPER函数,转换大写语法,二者均仅对英文字母场合使用

REPLACE函数,字符串的替换,REPLACE(对象字符串,替换前的字符串,替换后的字符串)

SUBSTRING函数,截取字符串,SUBSTRING(对象字符串 FROM 截取起始位置 FOR 截取的字符数)

日期函数:CURRENT_DATE 当前日期

CURRENT_TIME 当前时间

CURRENT_TIMESTAMP 同时得到日期和时间

EXTRACT 截取日期元素 EXTRACT(日期元素 FROM 日期)

转换函数:CAST CAST(转换前的值AS想要转换的类型)通常会用在计算NULL(空值)中,将NULL转换为其他值就不会得出NULL结果

CASE函数:CASE表达式是一种运算函数,在区分情况下使用,称作(条件)分支,类似于IF语句,分为简单和搜索两种表达式,看看功能较全的搜索CASE表达式

语法:CASE WHEN THEN

WHEN THEN

WHEN THEN . . .

ELSE END

整个一块可以把他看做是一个确切的值,是一个表达式,可以写在SELECT语句中的任意位置

b.谓词:

LIKE谓词(模糊查询),用于字符串部分一致查询,分为三种类型,前方、中方、后方,例如,11134、31114、341111,查询使用使用%符号,“111%”即选取以111开头的所有字符串,其他类推

BETWEEN谓词,进行范围查询,其结果会包含临界值,如不想包含需要使用比较运算符

IN谓词,是一种简便的OR使用方法,就是书写更简洁,表达结果都相同,相反结果可以使用NOT IN 来否定

EXIXT谓词,这里暂时理解不了,慢慢攻克

5.集合运算

a.表的加减法:UNION(并集),表1+表2,会自动删除重复的记录,如果要保留需要注意,首先两张表的记录的列数相同,其次运算的列的类型也得一致,最后进行排序ORDER BY仅需要最后使用即可,不需要分表使用

TNTERSECT(交集),选取两张表中相同的记录,其次运算的列的类型也得一致,最后进行排序ORDER BY仅需要最后使用,不需要分表使用

TNTERSECT(交集),选取两张表中相同的记录,用法同上

EXCEPT(差集),选取两张表不同的记录,用法同上

b.联结(列): 添加其他表中的列

内联结(INNER JION),应用最广泛的联结运算,要点:1进行联结时在FROM字句中使用多张表。2在进行内联结时必须使用ON子句,写在FROM和WHERE字句之间,ON子句代表所指定的联结键,即相同的列名3在SELECT子句中需要按照“.”的格式进行书写。

外联结(OUTER JOIN) ,使用方法同上,结果包含NULL,内联结并不包含

交叉联结(CROSS JOIN),结果为积,没啥实际意义且要求计算设备性能优秀,故不研究了。

6.SQL高级处理和应用程序连接数据库

暂时不进行学习了,先把基础知识理解透并熟练运用,之后再进行SQL高阶进修,应用程序看情况,如有需要可以进行学习。

7.总结

SQL语句主干:SELECT.....(查什么) 5(执行顺序)

FROM (从哪里得来数据) 1

WHERE(处理条件) 2

GROUP BY(分组) 3

HAVING(对分组结果按条件过滤) 4

ORDER BY (对结果排序) 6

三.练习题

1.SQLzoo在线测验

2.常见面试题50道

这部分内容之后会单独发出来,还需要再琢磨下。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值