数据库知识及SQL培训
关系型数据库:当前主流的关系型数据库有Oracle、DB2、SQL Server、MySQL等
1. 复杂查询可以用SQL语句方便的在一个表以及多个表之间做非常复杂的数据查询。
2. 事务支持使得对于安全性能很高的数据访问要求得以实现。
非关系型数据库(NOSQL):MongoDB等
1. 性能NOSQL是基于键值的,可以想象成表中的主键和值的对应关系,而且不需要经过SQL 层的解析,所以性能非常高。
sql left join 多表连接2. 可扩展性同样也是因为基于键值对,数据之间没有耦合性,所以非常容易水平扩展。
一、SQL介绍
SQL语言:结构化的查询语言。(Structured Query Language),SQL SERVER是关系数据库管理系统的标准语言。
数据库基础知识
1、库、表、字段(重点介绍一下建临时表、字段的数据类型)
2、主键、索引
3、视图
4、触发器、函数、存储过程
5、作业
二、SQL基础查询语句演示
6 【select】a,b,c,d,e,f,g,*
1 【from】table1 t1
2 【XXX join】table2 t2 【on】t1.l and ...... (跟逻辑与关系运算符)
3 【where】t1.col = XXX l = xxx l =xxx(跟逻辑与关系运算符)
4 【group by】t1.a,t1.b,t1.c
5 【order by】t1.a,t2.b,t1.c
上述每行的数字代表整段查询语句在内部执行时大致的执行顺序。
1.基本关键字
1.【select】其含义为‘检索’、‘查询’的意思,指查询、检索什么内容,也具有‘定义’的含义。
2.【from】指从哪里检索、从哪张表、视图等对象进行查询。
3.【where】指筛选条件,即添加特定阀值,来过滤出具体满足条件的数据记录。可以跟逻辑运算与关系运算。
4.【xxx join】关联匹配表与表之间按照特定字段进行匹配
5.【group by】分组聚合按照特定字段进行分组
6.【order by】排序按照特定字段进行排序
常用的运算符
有关系运算符:>,<,>=,<=,=,<>,!=
有逻辑运算符:!(not),&&(and),||(or)
1)案例1
查询并返回个股代码表中A股相关信息。
select symbol as '个股代码'
,sname as '个股名称'
,CompanyCode as '公司代码'
from Gg_securitycode
where stype = 'EQA'
如图所示:从个股代码表中查询、检索满足条件是A股市场的股票,并返回三个字段的结果集。(select 后面跟【*】指返回所有字段)
2)案列2
查询并返回个股代码表中A股相关信息并按照公司代码正序排序。
select symbol as'个股代码'
,sname as'个股名称'
,CompanyCode as'公司代码'
from Gg_securitycode
where stype='EQA'
orderby CompanyCode asc
如图,我们可以看到前一次没排序时输出的结果【白云机场】在排序后已经不在结果集前列。
2.统计类函数应用(聚合函数)
SQL内置了不少常用的统计类函数,用于数学统计计算。
如常用的求和,计数等。
1)案列1:
计算A股市场某年某月某日的总市值。
select sum(tcap) as '市场总市值'
from P_GG_KEYDATA
where TDATE = '20160729'
如图所示:这里使用了一个条件,即交易日为20160729,然后用SUM() 函数求TCAP总市值字段的和。
2)案列2
计算A股市场某年某月某日以来,A股每个交易日的总市值。
select tdate as '交易日'
,sum (tcap) as '市场总市值'
from P_GG_KEYDATA
where TDATE >= '20160720' and ISEDATE = 1
group by TDATE
如图所示:这里使用到了一个新的关键字【group by】,这个关键字意为分组聚合。
上图即为:按照每个交易日做分组聚合,对每个交易日的TCAP字段做求和运算。
通常应用中【group by】与各类聚合函数一起出现。
注意:在select 后所显示的字段中如果没有被聚合函数调用,则必须在group by 中出现
其他常用聚合函数列举:
avg()平均值,max()最大值,min()最小值,count() 数量,sqrt()平方根,square()平方
3)案列3
求某日A股中股价最高的个股,股价最低的个股,股价的平均值。
select tdate as '交易日'
,max(tclose) as '最贵的股票'
,min(tclose) as '最便宜的股票'
,avg(tclose) as '平均价格'
from P_GG_KEYDATA
where TDATE >= '20160720' and ISEDATE = 1
group by TDATE
3.多表关联
有时候我们所需要的数据并不在一张表里,可能分散在好几张不同的数据表中,此时我们需要对数据表进行关联查询,关联后我们可以获取不同数据表中的字段返回到一个结果集中。关联查询类型
inner join 内连接,取左右两边数据表能完全匹配的数据记录,即交集
left join 左连接,取以左侧数据表关键字为准的记录行数,右侧数据多剔少补空
right join 右连接,取以右侧数据表关键字为准的记录行数,左侧数据多剔少不空
full join 全连接,取左右两侧数据表所有记录,即并集
语法:from [table_a] XXXX join [table_b] on lumn_a=lumn_a

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。