1.truncate、delete、drop的区别

(1)truncate、drop是不可以rollback的,但是delete是可以rollback的。DELETE语句执行删除的过程是每次从表中删除一行,并且同时将该行的删除操作作为事务记录在日志中保存以便进行进行回滚操作。TRUNCATE TABLE 则一次性地从表中删除所有的数据并不把单独的删除操作记录记入日志保存,删除行是不能恢复的。并且在删除的过程中不会激活与表有关的删除触发器。执行速度快。

(2)TRUNCATE 只能对TABLE;DELETE可以是table和view。drop、truncate不能删除有外键约束的表。

(3)TRUNCATE 和DELETE只删除数据,而DROP则删除整个表(结构和数据)。TRUNCATE TABLE 删除表中的所有行,但表结构及其列、约束、索引等保持不变,但其状态会变为:invalid。新行标识所用的计数值重置为该列的种子。如果想保留标识计数值,请改用 DELETE。如果要删除表定义及其数据,请使用 DROP TABLE 语句。

2.连接的种类

一、外连接

1.左连接:left join 或 left outer join

左连接是根据某个条件以及左边的表连接数据,右边的表没数据的话则填null;

select 查询字段 from 表1 leftr join 表2 on 表1.字段1 = 表2.字段2

2.右连接:right join 或 right outer join

右连接是根据某个条件以及右边的表连接数据,左边的表没数据的话则填null;

select 查询字段 from 表1 right join 表2 on 表1.字段1 = 表2.字段2

3.完整外部联接:full join 或 full outer join

完整外部联接返回左表和右表中的所有行。当某行在另一个表中没有匹配行时,则另一个表的选择列表列包含空值。如果表之间有匹配行,则整个结果集行包含基表的数据值。

二、内连接:join 或 inner join

内连接是根据某个条件连接两个表共有的数据所有字段;

三、交叉连接(完全):cross join (不带条件where...)

没有 WHERE 子句的交叉联接将产生联接所涉及的表的笛卡尔积。第一个表的行数乘以第二个表的行数等于笛卡尔积结果集的大小。(table1和table2交叉连接产生3*3=9条记录)

3.数据库三范式

  • 第一范式(1NF):是指数据库表的每一列都是不可分割,即列不可分。
  • 第二范式(2NF):非主属性必须完全依赖主键,不能部分依赖主键,即不能部分依赖。
  • 第三范式(3NF):属性不依赖于其它非主属性,即不能传递依赖。

最新文章

  1. img标签src=""和background-image:url();引发两次请求页面bug
  2. ExtJS笔记 Proxy
  3. 诚聘:全栈开发人员,三线城市10-16K
  4. 项目后台判断session过期的页面代码
  5. 怎么制作生成苹果手机app应用的下载二维码图片
  6. shell常用命令的用法
  7. HDU 4633 Who's Aunt Zhang (Polya定理+快速幂)
  8. 深入理解java嵌套类和内部类
  9. QT设置前景图位置(配色简单漂亮)
  10. linux平台很nice的工具
  11. java:利用静态字段和构造函数实现已建对象数查询
  12. [HNOI2015]菜肴制作 拓扑序
  13. Delphi 在dbgrideh中表格输入数据时有效性的检查(转)
  14. Java中Access restriction:····的解决方法
  15. JS-使用indexof来统计字符出现次数
  16. ASP.NET 上传大文件(原创)
  17. GDC NEC单机自动化设置
  18. Ubuntu下 git 服务器的搭建【转】
  19. 给iOS开发新手送点福利,简述UISlide的属性和用法
  20. 自动化测试===uiautomator2类似appium

热门文章

  1. Python基础之集合
  2. VBA - ONE
  3. VSCode打开多个项目文件夹的解决方法
  4. ASO的效果应该如何去评判,有什么标准可以量化指标
  5. debug_backtrace
  6. oracle连表语法
  7. redis相关操作
  8. MongoDB安全使用指引
  9. ElasticSearch - 信息聚合系列之聚合过滤
  10. inux中ifreq 结构体分析和使用(转)