首页 > 代码库 > oracle入门

oracle入门

DDL(data definition language)数据定义语言:                 

 CREATE   ALTER   DROP  对象

      TRUNCATE  TABLE  表名;

 

DML(data manipulation language)数据操纵语言:        

INSERT  UPDATE  DELETE  SELECT

 

常见oracle数据库对象

user  tablespace  table  view   index  sequence  synonym  trigger   procedure  

掌握以上对象的名称

 

常见DBMS:Oracle、access、sql  server、mysql

 

Oracle服务名:OracleService××

要连接oracle数据库,则必须启动该数据库的服务

 

数据类型

字符型: char   varchar2   nchar  nvarchar2   long   long raw

数字型: number    integer

日期型: date

 

一、创建表

Create   table   表名

   列名1   数据类型  是否可空   主键,

列名2   数据类型  default 默认值是否可空,

列名3   数据类型  是否可空 references  参考表表名( 参考列名) //当有外键时

 

例:创建Student,其表结构定义如下表所示

列名

数据类型

是否可空

其他约束

说明

sno

char(9)

主键

学号

sname

varchar(20)

 

姓名

ssex

char(2)

默认值为’男’

性别

sage

int

 

年龄

sdept

char(10)

 

所在系

 

CREATE  TABLE  Student         

 (

Sno   CHAR(9) not null PRIMARY KEY,

    Sname  varCHAR(20) not null

    Ssex    CHAR(2)  default ‘’ not null

    Sage   INT  

    Sdept  CHAR(10)  

  );

 

二、修改表  Alter   table

1、添加列

Alter   table  表名

Add  (列名数据类型  [default 默认值] 是否可空);

 

2、修改列

Alter   table  表名

modify  (列名新的数据类型  [default 默认值] 是否可空);

3、删除列

Alter   table  表名

drop  (列名 [,列名2,列名3,……]);

 

4、添加主键约束(属于主体完整性)

Alter   table  表名

add  Primary key (列名 [,列名2,……] );

5、添加唯一键约束(属于主体完整性)

Alter   table  表名

add  unique (列名 [,列名2,……] );

6、添加外键约束(属于参照完整性)

Alter   table  表名

add  Foreign key (列名)  references  参考表表名( 参考列名);

7、添加检查约束(属于用户自定义完整性)

Alter   table  表名

add  check ( 检查条件  );

 

三、插入数据,添加记录

Insert  into  表名  列名 [, 列名2……]

Values(  列值 [, 列值2……]   ); 

注:列名和列值上下对应

 

例:

往student表中插入一行记录:学号Sno为123803,姓名sname为“雷锋”。

Insert  into  student  sno  ,  sname  

Values(  123803 ,  ‘雷锋’  );

 

四、修改记录

Update  表名

Set  修改数据列= 新值

Where   条件;

 

例:

修改****表,把(什么条件)的(什么列)改为(什么值)

修改student表,把sno为123803的年龄sage改为21

Update  student 

Set  sage= 21

Where   sno=123803

 

修改学生的年龄,要求所有学生的年龄都增加一岁

Update student set sage=sage+1;

 

五、删除记录

Delete from  表名

Where 条件;

 

例:删除*****表中****(什么样)的记录

Delete from  ******

Where 条件;

 

条件示例:

sno为123803:   sno=123803

联系电话phone为空:  phone  is  null

工资salary高于3500: salary>3500

成绩grade介于70~90之间的: grade between 70 and 90

工作城市(city)设在“北京”、“上海”、“广州”这三地的:city  in (’北京’、’上海’、’广州’)

书名(bname)中含有“Java”字样图书:bname  like ‘%Java%’

 

六、查询

Select   结果中需要显示的列

From   表名 [,表2,……]

Where   查询条件 [and 连接条件]       /*没有条件,此行不写*/

Group by  分组列名   /*没有分组,此行不写; 一般情况下查询要求中出现“每”字*/

Having  组筛选条件  /*没有组筛选,此行不写;一般情况下条件中会有聚合函数*/

Order by   排序列名 [ASC| DESC]   /*没有排序要求,此行不写----升序|降序*/

 

分组统计函数:count()  avg( )   min()  max()  sum( )

字符串相加:LAST_NAME || FIRST_NAME

单行子查询/多行子查询:in  all  any

Select * from student

 Where sno  not in  (select sno  from  sc)

 

Select * from student

 Where sdept  like  (select sdept  from  dept  where  fzr =’王明’)

 

例:

1、从(成绩表)中查询……的最低(成绩)

Select  min(成绩)

  From  成绩表;

 

2、从(学生表)中查出:(什么样) 生源地是“杭州”  的 学号,姓名,出生日期。

Select  学号,姓名,出生日期

  From  学生表

  Where  生源地=’杭州’;

 

3、使用多表等值连接查询,列出学生的学号,姓名,其所学习课程的课程名和成绩

学生表(学号,姓名)

课程表(课程号,课程名)

成绩表(学号,课程号,成绩)

 

Select  学号,姓名,课程名,成绩

From  学生表,课程表,成绩表

Where  学生表. 学号=成绩表. 学号  and  课程表. 课程号=成绩表. 课程号

 

七、创建索引

Create  Index  索引名

  On  

 

例:

在****表的**列上创建一个索引***

Create  Index  索引名

  On  

 

索引的作用

哪些约束会自动创建唯一索引:主键,唯一键

 

八、创建序列

Create   Sequence 序列名 

Start   with  开始值 

INCREMENT   BY  递增值 

maxvalue   最大值  ;

 

例:

创建一个序列*****,该序列要求从1开始,递增量为5,最大值为100000

Create  Sequence  *****

Start   with  1

INCREMENT  BY  5

maxvalue   100000;

 

九、创建视图

例:

创建一个名为***的视图,该视图显示……

CREATE  OR  REPLACE  View  *** 

AS

  查询语句

CREATE  View  *** 

AS

  查询语句

 

修改视图

CREATE  OR  REPLACE  View  *** 

AS

  查询语句

 

创建用户

Create user 用户名 identified by 密码;

 

授权

Grant 权限 to 用户名;

Grant 权限 on 对象名(表名、视图名等) to 用户名;

 

撤销(或收回)权限

revoke 权限 from 用户名;

revoke 权限 on 对象名(表名、视图名等) from 用户名;

 

ER图转换成关系模式的规则

实体名——关系名(表名)

属性——属性

联系:1:1  在联系的任一一端实体中加入另一个实体的主键属性作为外键

      1:N  在联系的N端实体中加入1端实体的主键属性作为外键

     M:N  联系变成新关系(新表),两端实体的主键都作为新关系的外键

 

————————————————————

九、创建触发器

例:

创建一个名为****的触发器,当在学生表Studnet里修改一行记录后该触发器被激活,并输出“已成功修改”。

CREATE  OR  REPLACE  Trigger  ****

AFTER  update  ON   Student

BEGIN

END;

 

 

十、创建存储过程

Create  Or  Replace  Procedure  过程名

As

 

oracle入门