首页 > 代码库 > 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入门