zoukankan      html  css  js  c++  java
  • SQL的表连接方式有哪些?

    SQL中连接按结果集分为:内连接,外连接,交叉连接
    内连接:inner join on,两表都满足的组合。内连接分为等值连接,不等连接,自然连接。
    等值连接:两表中相同的列都会出现在结果集中。
    自然连接:两表中具体相同列表的列会合并为同一列出现在结果集中。
    外连接:分为左(外)连接,右(外)连接,全连接
    左(外)连接:A left (outer) join B,以A表为基础,A表的全部数据,B表有的组合,没有的为。
    右(外)连接:A right(outer) join B,以B表为基础,B表的全部数据,A表有的组合,没有的位null。
    全连接:A full (outer) join 两表相同的组合在一起,A表有,B表没有的数据(显示为null),同样B表有,A表没有的显示为null。
    交叉连接:cross join,就是笛卡尔乘积。
    2、三范式
    1NF:表中的字段都是单一属性,不再可分。
    2NF:在1NF的基础上,表中所有的非主属性都必须完全依赖于任意一组候选键,不能仅依赖于候选键中的某个属性。
    3NF:在2NF的基础上,表中所有的属性都不依赖其他非主属性。
    简单的说就是:1NF表示每个属性不可分割,2NF表示非主属性不存在对主键的部分依赖,3NF表示不存在非主属性对主键的依赖传递。
    3、表的操作
    表的创建:create table 表名 (列名1 类型 约束,列2 类型 约束…)
    表的删除:drop table 表名
    表的更改(结构的更改,不是记录的更新):alter table 表名 add|drop 列名|约
    束名
    插入记录:insert into 表名…values…
    更新记录:update 表名 set 列名=值 where 条件
    删除记录:delete from 表名 where 条件
    4、数据的完整性
    数据完整性指的是存储在数据库中的数据的一致性和准确性。
    完整性分类:
    (1 )实体完整性:主键值必须唯一且非空。(主键约束)
    (2)引用完整性(也叫参照完整性):外键要么为空,要么引用主表中存在的记录。(外键约束)。
    (3)用户自定义完整性:针对某一具体关系数据库中的约束条件。
    5、SQL的查询优化
    (1)从表连接的角度优化:尽量使用内连接,因为内连接是两表都满足的行的组合,而外连接是以其中一个表的全部为基准。
    (2)尽量使用存储过程代替临时写SQL语句:因为存储过程是预先编译好的SQL语句的集合,这样可以减少编译时间。
    (3)从索引的角度优化:对那些常用的查询字段简历索引,这样查询时值进行索引扫描,不读取数据块。
    (4)还有一些常用的select优化技巧:
    (5)A、只查询那些需要访问的字段,来代替select*
    B、将过滤记录越多的where语句向前移:在一个SQL语句中,如果一个where条件过滤的数据库记录越多,定位越准确,则该where条件越应该前移。

    6、索引的作用,聚集索引与非聚集索引的区别

    索引是一个数据库对象,使用索引,可以是数据库程序无须对整个数据进行扫描,就可以在其中找到目标数据,从而提高查找效率。索引的底层采用的是B树。

    聚集索引:根据记录的key再表中排序数据行。
    非聚集索引:独立于记录的结构,非聚集所以包含的key,且每个键值项都有指向该简直的数据行的指针。

    聚集索引与非聚集索引的区别:
    (1)聚集索引的物理存储按索引排序,非聚集所以的物理存储不按索引排序。
    (2) 聚集索引插入,更新数据的速度比非聚集索引慢,单查询速度更快。
    (3) 聚集索引的叶级结点保存的是时间的数据项,而非聚集结点的叶级结点保存的是指向数据项的指针。
    (4)一个表只能有一个聚集索引(因为只有一种排序方式),但可以有多个非聚集索引。

    7、存储过程与函数的区别

    (1)函数有返回值,存储过程没有返回值。
    (2) 因为存储过程没有返回值,所以不能将存储过程的执行结果赋值给变量;函数有返回值类型,调用函数时,可以将函数的执行结果赋值给变量。也就是说,函数可以在select语句中使用,而存储过程则不能。

  • 相关阅读:
    Spring boot unable to determine jdbc url from datasouce
    Unable to create initial connections of pool. spring boot mysql
    spring boot MySQL Public Key Retrieval is not allowed
    spring boot no identifier specified for entity
    Establishing SSL connection without server's identity verification is not recommended
    eclipse unable to start within 45 seconds
    Oracle 数据库,远程访问 ora-12541:TNS:无监听程序
    macOS 下安装tomcat
    在macOS 上添加 JAVA_HOME 环境变量
    Maven2: Missing artifact but jars are in place
  • 原文地址:https://www.cnblogs.com/huaihe/p/11324464.html
Copyright © 2011-2022 走看看