Oracle基础巩固

来源:互联网 发布:sql多对多连接查询 编辑:程序博客网 时间:2024/04/29 11:46

Oracle基础巩固

      Oracle中,一般不会轻易在一个服务器上创建多个数据库,在一个数据库中,不同的项目由不同的用户访问,每一个用户拥有自身创建的数据库对象,因此用户的概念在Oracle中非常重要。Oracle的用户可以用CREATE USER命令来创建。其语法是:

       语法结构:

创建用户:CREATE USER 用户名 IDENTIFIED BY 口令 [ACCOUNT LOCK|UNLOCK]

语法解析:

LOCK|UNLOCK创建用户时是否锁定,默认为锁定状态。锁定的用户无法正常的登录进行数据库操作。

代码演示:创建用户SQL> CREATE USER jerry

2 IDENTIFIED BY tom

3 ACCOUNT UNLOCK;

注释:Oracle在SQL*Plus中的命令以分号(;)结尾,代表命令完毕并执行,系统同时会把该命令保存在缓存中,缓存中只保存最近执行过的命令,如果重新执行缓存中的命令,直接使用左斜杠符号(/)。如果命令不以分号结尾,该命令只是写入缓存保存起来,但并不执行。尽管用户成功创建,但是还不能正常的登录Oracle数据库系统,因为该用户还没有任何权限。如果用户能够正常登录,至少需要CREATE SESSION系统权限。

 

Oracle开发中,客户端把SQL语句发送给服务器,服务器对SQL语句进行编译、执行,把执行的结果返回给客户端。Oracle SQL语句由如下命令组成:

Ø 数据定义语言(DDL),包括CREATE(创建)命令、ALTER(修改)命令、DROP(删除)命令等。

Ø 数据操纵语言(DML),包括INSERT(插入)命令、UPDATE(更新)命令、DELETE(删除)命令、SELECT …FOR UPDATE(查询)等。

Ø 数据查询语言(DQL),包括基本查询语句、Order By子句、Group By子句等。

Ø 事务控制语言(TCL),包括COMMIT(提交)命令、SAVEPOINT(保存点)命令、ROLLBACK(回滚)命令。

Ø 数据控制语言(DCL),GRANT(授权)命令、REVOKE(撤销)命令。

 

 

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

 

创建表和约束:Oracle创建表同SQL Server一样,使用CREATE TABLE命令来完成。创建约束则使用如下命令:

语法格式:ALTERTABLE命令ALTER TABLE表名ADD CONSTRAINT约束名约束内容。

注意:在Oracledefault是一个值,而SQL Serverdefault是一个约束,因此Oracledefault设置可以在建表的时候创建。

代码演示:Oracle创建表和约束CREATE TABLE INFOS

(

STU_ID VARCHAR2(7) NOT NULL, --学号 学号=‘S’+班号+2位序号

STU_NAME VARCHAR2(10) NOT NULL, --姓名

GENDER VARCHAR2(2) NOT NULL, --性别

AGE NUMBER(2) NOT NULL, --年龄

SEAT NUMBER(2) NOT NULL, --座号

ENROLLDATE DATE, --入学时间

STU_ADDRESS VARCHAR2(50) DEFAULT '地址不详', --住址

CLASSNO VARCHAR2(4) NOT NULL --班号 班号=学期序号+班级序号

)

/ ①

ALTER TABLE INFOS ADD CONSTRAINT PK_INFOS PRIMARY KEY(STU_ID) ②

/

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_STU_NAME UNIQUE(STU_NAME)

/

代码解析:

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

② 创建一个主键约束。

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

 

 

0 0
原创粉丝点击