一、SQL简介
SQL是结构化查询语言(Structured Query Language),专门用于数据存取、数据更新及数据库管理等操作。
在Oracle开发中,客户端把SQL语句发送给服务器,服务器对SQL语句进行编译、执行,把执行的结果返回给客户端。Oracle SQL语句有如下命令组成:
1、 数据定义语言(DDL),包括create、alter、drop等;
2、 数据操作语言(DML),包括insert、update、delete、select……forupdate。
3、 数据查询语言(DQL),基本查询语句、order by 子句、group by 子句等。
4、 事务控制语言(TCL),包括commit、savepoint(保存点)、rollback等。
5、 数据控制语言(DCL),包括grant、revoke等。
二、Oracle数据类型
Oracle数据库的核心是表,表中的列使用到的常见数据类型如下:
三、创建表和约束
Oracle创建表同SQLServer一样,使用create table命令来完成。创建约束则使用如下命令:alter table表明 add constraint 约束名约束内容。
案例1:创建一个学生信息表和约束
CREATE TABLE INFOS (
STUID VARCHAR2(7) NOT NULL, --学号学号=‘S’+班号+2位序号
STUNAME VARCHAR2(10) NOT NULL, --姓名
GENDER VARCHAR2(2) NOT NULL, --性别
AGE NUMBER(2) NOT NULL, --年龄
SEAT NUMBER(2) NOT NULL, --座号
ENROLLDATE DATE, --入学时间
STUADDRESS VARCHAR2(50)DEFAULT '地址不详', --住址
CLASSNO VARCHAR2(4) NOT NULL --班号班号=学期序号+班级序号
) /
① ALTERTABLE INFOS ADD CONSTRAINT PK_INFOS PRIMARY KEY(STUID) /
② ALTERTABLE INFOS ADD CONSTRAINT CK_INFOS_GENDER CHECK(GENDER = '男' OR GENDER = '女') /
③ ALTERTABLE INFOS ADD CONSTRAINT CK_INFOS_SEAT CHECK(SEAT >=0 AND SEAT <=50) /
④ ALTERTABLE INFOS ADD CONSTRAINT CK_INFOS_AGE CHECK(AGE >=0 AND AGE<=100)/
⑤ ALTERTABLE INFOS ADD CONSTRAINT CK_INFOS_CLASSNO CHECK((CLASSNO >='1001' ANDCLASSNO<='1999') OR (CLASSNO >='2001' AND CLASSNO<='2999')) /
⑥ ALTER TABLEINFOS ADD CONSTRAINTS UN_STUNAME UNIQUE(STUNAME)⑦/
代码解析:在oracle代码中,“/”执行缓存区中的语句,用于缓冲区中只存储一条刚刚保存过语句,犹豫每条语句没有用分号结尾,只是保存在缓冲区,因此每天语句后面都有单独一行“/”。①中是创建一个主键约束。②—⑤创建各种check约束。其实⑥是唯一约束。
案例2:创建一个成绩表和约束
CREATE TABLE SCORES (
ID NUMBER , --ID ①
TERMVARCHAR2(2), --学期S1或S2
STUIDVARCHAR2(7) NOT NULL, --学号
EXAMNO VARCHAR2(7) NOT NULL, --考号E+班号+序号
WRITTENSCORENUMBER(4,1) NOT NULL, --笔试成绩
LABSCORENUMBER(4,1) NOT NULL --机试成绩
)
ALTER TABLESCORES ADD CONSTRAINT CK_SCORES_TERM CHECK(TERM = 'S1' OR TERM ='S2') /
ALTER TABLESCORES ADD CONSTRAINT FK_SCORES_INFOS_STUID FOREIGN KEY(STUID) REFERENCESINFOS(STUID)②/
代码解析:SQLServer中可以使用identify创建自动增长列,但是Oracle中的自动增长需要借助序列(Sequence)完成,②中的外键约束定义
知识点补充:
truncate命令,把表中的所有数据一次性全部删除,语法是:truncatetable表名。
Truncate与delete区部:
1、truncate是DDL命令,删除的数据不能恢复;delete命令是DML命令,删除后可以通过日志文件恢复。
2、表中记录很多,truncate相对delete速度快。
四、集合运算
集合运算就是将两个或者多个结果集组合成为一个结果集。集合运算包括:
1、 intersect(交集),返回两个查询共有的记录;
2、 unionall(并集),返回各个查询的所有记录,包括重复记录。
3、 union(并集),返回各个查询的所有记录,不包括重复的记录
4、 minus(补集),返回第一个查询检索出的记录减去第二个查询检索出的记录之后剩余的记录。
注:当使用集合操作的时候,要注意查询所有的列数以及列的类型必须匹配,列名可以不同。
五、连接查询
SQL Server中已经学习过内联接(innerjoin)、外联接(outer join),外联接又分为左外联接(left outer join)和右外联接(right outer join)。Oracle中对两个表或若干表之间的外联接用(+)表示。
(+):Oracle专用的联接符,在条件中出现在左边指右外联接,出现在右边指左外联接。