2.Oracle数据表操作和查询

一、SQL简介:
SQL是结构化查询语言(Structured Query Language),专门用于数据存取、数据更新及数据库管理等操作。
在Oracle开发中,客户端把SQL语句发送给服务器,服务器对SQL语句进行编译、执行,把执行的结果返回给客户端。
Oracle SQL语句由如下命令组成:
数据定义语言(DDL),包括CREATE(创建)命令、ALTER(修改)命令、DROP(删除)命令等。
数据操纵语言(DML),包括INSERT(插入)命令、UPDATE(更新)命令、DELETE(删除)命令、SELECT … FOR (查询)等。
数据查询语言(DQL),包括基本查询语句、Order By子句、Group By子句等。
事务控制语言(TCL),包括COMMIT(提交)命令、SAVEPOINT(保存点)命令、ROLLBACK(回滚)命令。
数据控制语言(DCL),GRANT(授权)命令、REVOKE(撤销)命令。
目前主流的数据库产品(比如:SQL Server、Oracle)都支持标准的SQL语句。数据定义语言,表的增删改操作,数据的简单查询,事务的提交和回滚,权限的授权和撤销等,Oracle与SQL Server在操作上基本一致。

二、Oracle数据类型:

1、CHAR(length): 存储固定长度的字符串。参数length指定了长度,如果存储的字符串长度小于length,用空格填充。默认长度是1,最长不超过2000字节。

2、 VARCHAR2(length): 存储可变长度的字符串。length指定了该字符串的最大长度。默认长度是1,最长不超过4000字符。

3、 NUMBER(p,s): 既可以存储浮点数,也可以存储整数,p表示数字的最大位数(如果是小数包括整数部分和小数部分和小数点,p默认是38位),s是指小数位数。

4、 DATE: 存储日期和时间,存储纪元、4位年、月、日、时、分、秒,存储时间从公元前4712 年1月1日到公元后4712年12月31日。

5、 TIMESTAMP: 不但存储日期的年月日,时分秒,以及秒后6位,同时包含时区。

6、 CLOB: 存储大的文本,比如存储非结构化的XML文档

7、 BLOB: 存储二进制对象,如图形、视频、声音等。对应NUMBER类型的示例:

NUMBER
1234.567
1234.567

NUMBER(6,2)
123.4567
123.46

扫描二维码关注公众号,回复: 927140 查看本文章

NUMBER(4,2)
12345.67
输入的数字超过了所指定的精度,数据库不能存储
对于日期类型,可以使用sysdate内置函数可以获取当前的系统日期和时间,返回DATE类型,用
systimestamp函数可以返回当前日期、时间和时区。
这里写图片描述
select sysdate,systimestamp from dual;

Oracle的查询中,必须使用“select 列… from 表”的完整语法,当查询单行函数的时候,from后面使用DUAL表,dual表在系统中只有一行一列,该表在输出单行函数时为了select…from的语法完整性而使用。

三、创建表和约束:

Oracle创建表同SQL Server一样,使用CREATE TABLE命令来完成。创建约束则使用如下命令:
ALTER TABLE 表名 ADD CONSTRAINT 约束名 约束内容

不论创建表还是约束,与SQL Server基本相同,注意:在Oracle中default是一个值, 而SQL Server中default是一个约束,因此Oracle的default设置可以在建表的时候创建。

示例1:创建一个学生信息(INFOS)表和约束

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 –班号 班号=学期序号+班级序号
)
/①
②ALTER TABLE INFOS ADD CONSTRAINT PK_INFOS PRIMARY KEY(STUID)/

③ALTER TABLE INFOS ADD CONSTRAINT CK_INFOS_GENDER CHECK(GENDER = ‘男’ OR GENDER = ‘女’)/

④ALTER TABLE INFOS ADD CONSTRAINT CK_INFOS_SEAT CHECK(SEAT >=0 AND SEAT <=50)/

⑤ALTER TABLE INFOS ADD CONSTRAINT CK_INFOS_AGE CHECK(AGE >=0 AND AGE<=100)/

⑥ALTER TABLE INFOS ADD CONSTRAINT CK_INFOS_CLASSNO CHECK((CLASSNO >=’1001’ AND CLASSNO<=’1999’) OR

(CLASSNO >=’2001’ AND CLASSNO<=’2999’)) /

⑦ALTER TABLE INFOS ADD CONSTRAINTS UN_STUNAME UNIQUE(STUNAME)/

代码解析:

①在Oracle代码中,“/”执行缓存区中的语句,由于缓冲区中只存储一条刚刚保存过语句,由于每条语句没有用分号结尾,只是保存在缓冲区,因此每条语句后面都有单独一行“/”。

②创建一个主键约束。

③~⑦一起创建各种check约束。其中⑦是唯一约束,表示该列值是唯一的,列中的值不能重复。

示例2: 创建一个成绩表(SCORES)表和约束

CREATE TABLE SCORES (
ID NUMBER , –ID ①

TERM VARCHAR2(2), –学期 S1或S2 STUID VARCHAR2(7) NOT NULL, –学号
EXAMNO VARCHAR2(7) NOT NULL, –考号 E+班号+序号
WRITTENSCORE NUMBER(4,1) NOT NULL, –笔试成绩LABSCORE NUMBER(4,1) NOT NULL –机试成绩

)

ALTER TABLE SCORES

ADD CONSTRAINT CK_SCORES_TERM CHECK(TERM = ‘S1’ OR TERM =’S2’)

/

ALTER TABLE SCORES

ADD CONSTRAINT FK_SCORES_INFOS_STUID FOREIGN KEY(STUID) REFERENCES INFOS(STUID) ②

/

代码解析:

①SQL Server中可以使用identify创建自动增长列,但是Oracle中的自动增长需要借助序列
(Sequence)完成,在后面章节中讲解。

②Oracle中的外键约束定义。

猜你喜欢

转载自blog.csdn.net/hqh1129/article/details/80214196