3.1-3.3SQL 基本操作

3.1简介

1.       SQL是由IBM开发的,原名Sequel,是20世纪70年代IBM的System R项目的一部分。SQL——StructuredQuery Language

2.       86年ANSI 和ISO发布了SQL-86,后面又有SQL-89SQL-92,SQL:1999,SQL:2003,SQL:2006, SQL:2008.

3.       SQL由如下几部分组成:

a)       DDL

b)       DML

c)       Integrity ,用于定义引用完整性约束。

d)       视图定义命令

e)       事务控制命令

f)        嵌入式SQL或者动态SQL

g)       授权命令

3.2DDL

4.       DDL可用于定义关系及其相关属性:

a)       关系的方案

b)       各个属性的类型

c)       约束

d)       索引

e)       安全信息和授权、认证信息

f)        各个关系在磁盘上的物理存储结构

3.2.1常用类型

5.       char(n), varchar(n),int,smallint,numeric(p,d),real,double,float(n),nvarchar

6.       char长度不足时会补空白,进行字符串比较时不方便。尽量使用varchar

3.2.2常用方案定义语句

7.       createtable r
(A1 D1,
A2 D2,
. . . ,
An
Dn
,
integrity-constraint
1,
. . . ,
integrity-constraintk);

8.       常用约束:primary key ,foreign key , not null

9.       createtable instructor
(ID varchar (5),
name varchar (20) not null,
dept name varchar (20),
salary numeric (8,2),
primary key (ID),
foreign key (dept name) references department)

10.   insert intoinstructor
values (10211, ’Smith’, ’Biology’, 66000);

11.   delete fromstudent;

12.   drop table r;

13.   增、删属性

alter table r add A D; alter table r drop A;

3.3基本的查询语法

14.   查询由三部分组成:

15.   Select、from、where

16.   显式地不去重的查询用all

17.   select all dept name
from instructor;

18.   SQL语句的结构:

19.   select A1, A2, . . . , An
from r1, r2, . . ., rm
where P;

20.   Ai 是属性名,ri是关系名,P是谓词,如果省略where子句,则谓词默认为true

21.   理解SQL语句可按照这个顺序:from where select

22.   From子句会对列出的关系求笛卡尔积,得到的关系中包含输入的关系中的全部属性,多个关系中同名的属性用关系名区分。求笛卡尔积时,一个关系中的元组会与另一个关系中的全部元组进行连接。

23.   理解SQL语句得到结果的过程:

a)       对from子句中列出的关系求笛卡尔积

b)       使用where子句中的谓语过滤第一步求得的关系

c)       对第二步得到的每一个元组,输出select子句中列出的属性。

24.   上面的顺序不是SQL语句真正的执行顺序。真正执行的时候会进行优化,只对那些能满足Where条件的元素求笛卡尔积。

25.   写查询语句时如果不写where条件,会直接输出整个笛卡尔积。如果两个关系各有100个元组,他们的笛卡尔积就有10000个元组。

3.3.3自然连接

26.   连接两个关系的方式有许多种,一种是前面提到的先求笛卡尔积,然后使用谓词进行过滤,另一种较为常用的是自然连接:如果两个关系中有同名属性,则只有两个元组的同名属性的值相同时才会连接。

27.   在笛卡尔积中同名属性会出现两次,分别以两个关系名前辍,自然连接中同名属性只出现一次

28.   同一个查询分别用笛卡尔积连接和用自然连接实现

29.   select name, course id
from instructor, teaches
where instructor.ID= teaches.ID;

30.   select name, course id
from instructor naturaljoin teaches;

31.   自然连接可以串起来用

32.   from r1 natural join r2 natural join . . . naturaljoin rm

33.   对特定属性作自然连接 :

34.   select name, title
from (instructor natural join teaches) join course using (course id);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值