Oracle的基本操作及语法

关键字

候选关键字

如果一个属性集能惟一地标识表的一行而又不含多余的属性,那么这个属性集称为侯选关键字。

主关键字

主关键字是被挑选出来,作表的行的惟一标识的侯选关键字。一个表最多只可以有一个主关键字。主关键字又称为主键

公共关键字

在关系数据库中,关系之间的联系是通过相容或相同的属性或属性组来表示的。如果两个关系中具有相容或相同的属性或属性组,那么这个属性或属性组被称为这两个关系的公共关键字。

外关键字

如果公共关键字在一个关系中是主关键字,那么这个公共关键字被称为另一个关系的外关键字。由此可见,外关键字表示了两个关系之间的联系。以另一个关系的外关键字作主关键字的表被称为主表,具有此外关键字的表被称为主表的从表。外关键字又称作外键。另外,表间关系也是通过主键来实现的。一个表可以有多少外键,即可以跟另外多个表建立关系。

总结

总结:     1>外键一般设置多的这边,冗余小     2>外键关联的字段,在另一张表一般是主键     3>主键所在的表称之为主键表(主表),外键所在的表称之为外键表(从表)      4>外键与主键的数据类型要致

数据类型

字符型

char(长度)varchar2(长度)

数值型

number(有效数据的个数,保留小数的位数)

日期类型

datedatestamp

创建数据表的语法

create table 表名

(

字段名 数据类型 约束,

字段名2 数据类型 约束

)

//创建表时可以不先添加约束,创建之后可以通过

//alter table 表名 constraint 列名 约束(列名)

约束

主键约束

primary key

外键约束

foreign key 当前表绑定外键的字段名 references 主键所在的表的名字(主键名)

/非空约束

null/not null

默认约束

default '默认值'

检查约束

check(字段...)

唯一约束

unique

//主键约束可以没有,只能有一个,主键不能为null

//唯一约束可以没有,可以有多个,唯一可以为null

对于表的操作语法

修改表名

alter table 表的名称 rename to 新的表的名称

修改字段名

alter table 表的名称 rename column 字段的名称 to 新的字段名称

添加字段

alter table 表的名称 add (字段名 数据类型 约束,字段名2 数据类型 约束)

修改数据类型

alter table 表名 modifiy (字段名 数据类型)

删除字段

alter table 表名 drop column 字段名

添加主键

alter table 表名 add constraint 列名 primarykey(列名)

删除主键

alter table 表名 drop constraint 列名

添加外键

alter table 表名 add constraint 字段名 foreignkey(字段名)  references 主表(主键)

添加检查约束

Alter table 表名 add constraint 字段名 check(length(字段名)>=2)

添加唯一约束

alter table 表名 add constraint 字段名 unique(字段名)

 删除外键

alter table 表名drop constraint 字段名

删除数据库中的表及其中的数据

drop table 表名[purge];       //purge:清除缓存

删除数据库中的表的数据,而不会删除表

truncate table 表名

其他create命令

创建数据表索引

CREATE INDEX

创建存储过程

CREATE PROCEDURE

创建用户函数

CREATE FUNCTION

创建视图

CREATE VIEW

创建触发程序

CREATE TRIGGER

创建序列号

CREATE SEQUENCE

CREATE SRQUENCE 创建

CREATE SEQUENCE 名称 INCREMENT BY 1   --每次加几个

START WITH 1    --1 开始计数

NOMAXVALUE   --不设置最大值

NOCYCLE   --一直累加,不循环

CACHE 10   --使序列号预分配,默认 NOCACHE

CREATE SRQURNCE 删除

drop sequence 名称

修改表数据语法

update 表名 set

字段1='新值',

字段2='新值'

字段3='新值'

where 条件

//可以通过条件来确定是需要修改那行,通过字段来选择需要修改的当行的列数据

//如果没有写条件,则会把整个表都修改了

查询数据

select [distinct | 聚合函数] 字段集合 [as 别名]|*from  表名

[where 查询条件语句集合]

[group by 分组字段列表]

[having 过滤条件语句集合] 分组查询条件

[order by 排序字段集合 [asc | desc]]

查询全部数据

select * from 表名 或者 select 字段名1,字段名2,字段名3 from 表名

//在查询全部数据时,字段名可以写*或把每一个字段名写出来进行查询。

按条件查询

select * from 表名 where 条件

模糊查询(like)

select * from 表名 where 字段名 like '内容'

//模糊查询是通过在'内容'当中,用部分的字段内容与通配符:_%来使用。

//_代表的是一个任意的字符

//%代表的是0个或多个任意的字符

查询某个字段是否为空(is null,is not null)

select * from 表名 where 字段名 is null或者is not null

//当是is null时着会查询指定字段内所有为空的行

//当是is not null 时着会查询指定字段内所有有内容的行

查询匹配列表中的某一个值(in)

select * from 表名 where 字段名 in(内容1,内容2,内容3)

//通过内容来匹配选定字段的所有内容相同的行

查询前面的n条记录

select 列名1 ...列名n from

(

select 列名1 ...列名n

from 表名 order by 列名1

)

where rownum <=N(抽出记录数)

order by rownum asc

//rownum是用来产生序列号的伪列

字符串连接:||

select 'hello' || ' world' from dual

//oracle||是用于字符串连接,与SQL数据库中的用+号连接是不一样的。

排序(默认的是升序)

order by 字段名 asc | desc

//asc:升序(默认)

//desc:降序

聚合函数

求最大值

max

求最小值

min

求和

sum

求平均值

avg

求记录数

count

聚合函数语法

select

聚合函数(字段名),

聚合函数(字段名)

from 表名;

//在查询语句当中,聚合函数可以使用多个

//count中如果传递具体字段时,不会统计null的字段聚合函数一般结合分组函数使用

集合操作符

union

取出2个表数据合并,去除重复记录

union all

取出2个表数据合并,保留重复记录

minus

取出2个表中不同数据

Intersect

取出2个表中共有数据【交集】

连接查询(多表查询)

内连接

内连接: select * from 1 inner join 2 on 1.字段=2.字段

//一般是根据主键和外键进行连接

等值连接: select * from 1,2 where 1.字段=2.字段

不等值连接: select * from 1,2 where 1.字段!=2.字段

左外连接: select * from 1 left [outer] join 2 on 1.字段=2.字段

右外连接: select * from 1 right [outer] join 2 on 1.字段=2.字段

完全外连接: select * from 1 full [outer] join 2 on 1.字段=2.字段

 

 

子查询

//概念:当一个查询是另一个查询的条件时,称为子查询。

//子查询可以使用在SELECTINSERTUPDATEDELETE语句中

SELECT语句中使用子查询

select * from 学生信息 where 学号 in (select 学生编号 from 成绩信息 where 分数>96)

INSERT语句中使用子查询

insert into 学生信息 values ('2014010102','李四四',(select 性别 from 学生信息 where 姓名='张苗苗'),'1999-09-09','汉族','20050101','广东珠海')

UPDATE语句中使用子查询

update 学生信息 set 性别=(select 性别 from 学生信息 where 姓名='赵希坤') where 姓名='张苗苗'

DELETE语句中使用子查询

delete from 学生信息 where convert(varchar,家庭住址)=(select convert(varchar,家庭住址) from 学生信息 where 姓名='张苗苗')

事物处理

commit:提交事务

show autocommit : 显示是否自动事务提交 set autocommit=on|off : 设置是否自动事务提交

rollback:事务回滚

rollback //直接rollback的话,就会回滚最近一次提交的数据 rollback to 保存点 //rollback to 保存点,可以回滚当时保存的数据

设置保存点

savepoint 保存点名称

设置只读事务

set transaction read only

posted @ 2017-07-26 15:13  墨庭  阅读(300)  评论(0)    收藏  举报