mysql表连接的分类_SQL分类、表连接、范式

SQL是一种语言;MySql(免费),Oracle(最贵)和SQL Server(中等贵)是指数据库系统。

数据库只是一个结构化的数据集合。

Oracle 创一代+高富帅 // Microsoft Sqlserver 2014富二代 // Mysql 屌丝创业青年

关系型数据库: mysql/oracle/db2/informix/sysbase/sql server

非关系型数据库: (特点: 面向对象或者集合)

NoSql数据库: MongoDB/redis(特点是面向文档)

规范化过程主要为克服插入异常,更新异常,删除异常,数据冗余四个问题。

----------------------------SQL语句的分类:-------------------------------

DDL(Data Definition Languages)数据定义语言: 用于定义数据库对象

对数据库内部的对象(表、视图、索引、同义词、聚簇等)进行创建、删除、修改的操作语言。在数据库中创建新表或删除表(CREAT TABLE 或 DROP TABLE);常用的语句关键字包括 create、drop、alter等,例如表,视图,触发器,存储过程等。

如:

CREATE TABLE/VIEW/INDEX/SYN/CLUSTER

DQL(Data Query Languages)数据查询语言:用于检索数据库

用于从数据库中的一个或多个表中查询数据(SELECT)。保留字SELECT是DQL(也是所有SQL)用得最多的动词,其他DQL常用的保留字有WHERE,ORDER BY,GROUP BY和HAVING。

DML(Data Manipulation Language)数据操纵语句: 用于改变数据库数据

也称为动作查询语言。用于插入、删除、更新数据库记录,并检查数据完整性,常用的语句关键字主要包括 insert、delete、udpate 等。 只是对表内部数据的操作,而不涉及到表的定义、结构的修改,更不会涉及到其他对象。

DCL(Data Control Language)数据控制语句: (自动提交事务)

用来授予或回收访问数据库的某种特权,并控制数据库操纵事务发生的时间及效果,对数据库实行监视等。这些语句定义了数据库、表、字段、用户的访问权限和安全级别。主要的语句关键字包括 grant(授权)、revoke(撤回) 等。

TPL事务处理语言

CCL指针控制语言

---------------------------SQL数据库表连接:------------------------------

主要分为:内连接、外连接(左连接、右连接 、全连接)、交叉连接(笛卡尔积)。

俩个表,分别为ScoreEntity和StudentBindPaperTypeEntity,现在要查询俩个表中都有的studentID中的数据。

1.内连接(inner join……on):

select *

from ScoreEntity as b

inner join

StudentBindPaperTypeEntity as s

ON b.StudentId=s.StudentId

取两表的交集,查询的结果中含有b.StudentId=s.StudentId的重复列。于是,这样就查询到了所需要的信息,我们可以在这个信息上进行自己想要的增删改查啦。

2.外连接(left | right | full outer join ……on),其中outer可以省略:

select *

from ScoreEntity as b

left join

StudentBindPaperTypeEntity as s

ON b.StudentId=s.StudentId

左连接是查询出左表的所有数据,右表中有对应的则显示出来,没有对应的则显示为null.

注:A left join B on 与 A,B where 有相同效果,如下:

select student.* ,Score.* from student inner join Score on student.id=Score.sid

select student.* , Score.* from student, Score where student.id=Score.sid

右连接的道理和左连接的道理类似,以右表为准,查询出右表的所有数据,左表中有对应的则显示出来,没有对应的则显示为null.

完全外连接是首先按照左边的表进行遍历,然后按照右边的表进行遍历,这样的结果一定会出现同一行中,左面的表有值,而右边的表是null,右面的表有值,而左面的表是null的现象啦。

3.交叉连接:

select * from student, score; 隐式

select * from student cross join score; 显示

例如:

select student.* ,Score.* from student cross join Score 注意没有on条件

交叉联接返回左表中的所有行,左表中的每一行与右表中的所有行组合。相当于两个表中的所有行进行排列组合。若表a有X行,表b有Y行,则将返回XY行记录。

自然连接(Natural join)

专业术语:自然连接是在广义笛卡尔积R×S中选出同名属性上符合相等条件元组,再进行投影,去掉重复的同名属性,组成新的关系。

自然连接:

select * from table1 natural [inner/left outer/right outer/full outer] join table2;

自然连接是一种特殊的等值连接,自然连接无需指定连接列,SQL会检查两个表中是否相同名称和类型的列,如果没有则返回错误。它要求两个关系中进行比较的分量必须是相同的属性组,并且在结果中把重复的属性列去掉。

联合查询(union join)

是一种很少见的连接方式。Oracle、MySQL均不支持,作用是:找出全外连接和内连接之间差异的所有行。这在数据分析中排错中比较常用。也可利用数据库的集合操作来实现此功能。

---------------------------数据库范式:------------------------------

关系数据库有六种范式:第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、巴斯-科德范式(BCNF)、第四范式(4NF)和第五范式(5NF,又称完美范式)。而降低范式就是增加字段,减少了查询时的关联,提高查询效率。

第一范式:确保有一个主键,表的列的具有原子性,即列的信息,不能分解。通俗理解即一个字段只存储一项信息。

第二范式 : 满足所有1NF的规则,必须有任意列不依赖主键关系。通俗理解是任意一个字段都只依赖表中的同一个字段。

若一张表的数据包括:“学号、姓名、课程号、授课老师”中,设“学号、课程号”为主键,其中,一门课程可以有多个老师进行授课。会存在如下关系:

第三范式:满足第二范式 , 所有非主字段都是依赖于主键。通俗解释就是一张表最多只存两层同类型信息

参考文章:

参考实战:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值