关闭

【复习】数据库知识

标签: 数据库sql
50人阅读 评论(0) 收藏 举报

一、SQL简单语法

1.集合运算

union、union all(保留重复)

intersect、intersect all(保留重复)

except、except all(保留重复)


2.空值

is null

= null(返回unknown)


3.聚集函数

avg()、max()、min()、sum()、count() 

count()会计算null列,其他会忽略null列

不能用count(distinct *),但可count(distinct ID).

count(空集)返回0,其他函数如max(空集)会返回null.


group by ...

having ...(针对group by)


some、every处理布尔值的聚集

some:其中有true返回true,所有均为false返回false.

every:所有均为true返回true,其中有false返回false.


4.嵌套子查询

select (子查询句) as tablename1(a1,b1,c1..)

from (子查询句) as tablename2(a2,b2,c2...)

where tablename3(a3,b3,c3) in/not in (子查询句)


unique/not unque 传入表中是否含重复元组

exists/not exists 传入表中是否为空集

with tablename(a,b,c..) as (子查询句) with子句提供定义临时关系的方法,这个定义只包含with子句的查询有效.


5.连接表达式

table1 join table2 on table1.a=table2.a;

(inner) join

natural join 如果两张表中有相同名字的列,但是数据类型不一致,如果能隐式转换,则能正常连接,但如果隐式转换不成功,则报错。

left outer join 左向外联接的结果集包括  LEFT OUTER子句中指定的左表的所有行,而不仅仅是联接列所匹配的行。如果左表的某行在右表中没有匹配行,则在相关联的结果集行中右表的所有选择列表列均为空值。     

right outer join 右向外联接是左向外联接的反向联接。将返回右表的所有行。如果右表的某行在左表中没有匹配行,则将为左表返回空值。  

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


6.视图和索引

create view viewname(a,b,c...) as

(子查询句)

视图实际上只是存储了子查询句,方便调用查询句.(有物化视图能根据表的改变而改变,但是要付出较大的更新开销)

create index indexname on table(a,b..)

索引是将指定列的地址进行记录,下次调用时可以直接通过索引访问到该指定列,减少了查询的时间.


7.事务

事务(Transaction)是访问并可能更新数据库中各种数据项的一个程序执行单元(unit)。
事务的四个特性(A-C-I-D):1.原子性(atomicity) 2.一致性(consistency) 3.隔离性(isolation) 4.持久性(durability) 

commit work:提交当前事务

rollback work:回滚当前事务


8.like

例:

SELECT * FROM Persons
WHERE City LIKE 'N%'

通配符 描述
% 替代一个或多个字符
_ 仅替代一个字符
[charlist] 字符列中的任何单一字符

[^charlist]

或者

[!charlist]

不在字符列中的任何单一字符

9.top 注释:并非所有的数据库系统都支持 TOP 子句。

SQL Server 的语法:

SELECT TOP number|percent column_name(s)
FROM table_name

MySQL 和 Oracle 中的 SQL SELECT TOP 是等价的

MySQL 语法

SELECT column_name(s)
FROM table_name
LIMIT number

例子

SELECT *
FROM Persons
LIMIT 5

Oracle 语法

SELECT column_name(s)
FROM table_name
WHERE ROWNUM <= number

例子

SELECT *
FROM Persons
WHERE ROWNUM <= 5


二、进阶SQL

1.存储过程和函数

语法举例:

存储过程:

create procedure procedurename(in a,out b)

begin

(子查询句)

end

in表示待赋值的参数

out表示为返回结果而在过程中设置的值

调用时:exec 存储过程名 参数


函数(参数为20长度内的字符串,返回值为表):

create function functionname(a varchar(20)) return table(a,b,c...)

return table (子查询句);

调用时其实与系统函数的调用类似


总体来说,

存储过程
   

    1. 功能强大,限制少
    2. 不能直接引用返回值
    3. 用select语句返回记录集

自定义函数


   1. 诸多限制,有许多语句不能使用,许多功能不能实现
   2. 可以直接引用返回值
   3. 用表变量返回记录集


2.触发器

 触发器对表进行插入、更新、删除的时候会自动执行的特殊存储过程。触发器一般用在check约束更加复杂的约束上面。触发器和普通的存储过程的区别是:触发器是当对某一个表进行操作。诸如:update、insert、delete这些操作的时候,系统会自动调用执行该表上对应的触发器。

语法:

Create Trigger truStudent            --truStudent是触发器名称
       On Student                         --哪个表中创建触发器 
       for Update                          --触发什么样事件/insert/delete
     As                                        
       if Update(StudentID)           --如果什么样的事件触发 
       begin 

         Update BorrowRecord 
           Set StudentID=i.StudentID 
           From BorrowRecord br , Deleted   d ,Inserted i      --那就做什么样的事(具体实现上面for update) 
           Where br.StudentID=d.StudentID 

       end        

0
0
查看评论

数据库基础知识复习

1.     数据视图与数据模型 数据抽象共有三个层次:物理层、逻辑层和视图层。在逻辑层使用的数据模型包括两类:一类是概念数据模型,主要用于数据库设计,它能被一般的用户理解,与人的思维表达方式比较接近。这样的模型有实体-联系模型(ERM);另一类是逻...
  • yutianzuijin
  • yutianzuijin
  • 2013-10-03 00:03
  • 74475

iOS知识点汇总复习

@ 看到这个关键字,我们就应该想到,这是Object-C对C语言的扩展,例如@interface XXX。 @interface 声明类 @implementation 实现类 @protocol 声明协议 @optional 与@protocol配合使用,说明协议中的某个或者某几个方法可以不...
  • chuangzaozhe1
  • chuangzaozhe1
  • 2014-03-10 17:33
  • 1914

Java知识复习

package Function; /*  *  void方法不需要return语句,但它能用于终止方法并返回到方法的调用者 提前返回。   *  有无return语句都会返回到调用函数,非void的函数会捎带一个返回数而已。  *...
  • suyin1993
  • suyin1993
  • 2016-03-04 21:13
  • 222

iOS知识点总结——复习大纲

截至2013年11月4日,从事移动开发已经快三年,一直从事项目的开发,从未对知识点进行总结,恰逢最近事件较为宽裕,对iOS开发进行相应的知识点总结,以便自身提高,以下是复习大纲: 一.     语言部分(OC语言部分) 1.  ...
  • javayujiafeng
  • javayujiafeng
  • 2013-11-04 16:27
  • 1274

Java基础复习,整理知识点

最近开始复习Java基础,和Android,将知识点整理如下,另外开始尝试使用MarkDown写博客,写的有问题的地方还请各位包含。Android部分的内容整理见我的另一篇博客1.Java关键字总结梳理首先这里总结一下在编写类时常常会碰到的一些关键字:private,public,protected...
  • SCUcoder
  • SCUcoder
  • 2016-03-07 19:51
  • 5020

数据库期末复习-(1)

教材:数据库系统概论第五版 王珊编 高等教育出版社第一章:绪论1、数据库:长期储存在计算机内的、有组织的、可共享的数据集合。 2、数据库管理系统(DBMS)的主要功能:数据定义(DDL)、数据操纵(DML)、数据控制(DCL)、数据库的建立和维护等。 3、简述文件系统和数据库系统的区别:文件...
  • ZHangFFYY
  • ZHangFFYY
  • 2017-06-04 10:22
  • 482

Java 知识结构图

  • wuxiaobingandbob
  • wuxiaobingandbob
  • 2016-04-25 12:42
  • 961

Java web复习要点

1.ServletConfig与ServletContext的区别?     每个Servlet都有一个ServletConfig对象,用于向Servlet传递Servlet初始化参数,通过其可以访问ServletContext。每个Web应用只有一个ServletC...
  • u010717479
  • u010717479
  • 2016-06-27 10:46
  • 343

Python基础知识复习整理(1)

之前对python有一定的了解,最近不是很忙又重新看了一下基础知识,将重要的知识点整理了一下做了笔记。
  • wutong9509
  • wutong9509
  • 2017-04-12 17:29
  • 421

思维导图总结 Android知识点大全

第一,本思维导图是用xmind创建的,知识点是在学习Android两个多月来的一点总结,
  • huolangge
  • huolangge
  • 2014-11-09 10:40
  • 1554
    个人资料
    • 访问:1152次
    • 积分:102
    • 等级:
    • 排名:千里之外
    • 原创:9篇
    • 转载:3篇
    • 译文:0篇
    • 评论:2条
    文章分类
    最新评论