Oracle数据库基础知识

本文详细介绍了SQL语言中的基本操作,包括创建、修改、查询等常见任务的实现方法,并深入讲解了连接查询的不同类型及其应用场景。

创建表

/*新建表*/
CREATE TABLE F161205_2 (
RUL nchar(30),
MLANUM number,
MLCO NCHAR(5)
)

/*拷贝表*/
----表结构-------
CREATE TABLE F59M4095 AS SELECT * FROM F4095 WHERE 1=2;
---表结构及数据---
CREATE TABLE F59M4095 AS SELECT * FROM F4095

where 1=2 表示不选;1=1表示全选。

修改表

--添加列--
alter table F161205_1 add COA_DES NCHAR(100) 
--删除列--
alter table F161205_1 drop column VLOOKUP
--修改列名-
ALTER TABLE f161206_3  RENAME COLUMN UPDATE_SUB TO MLSUB ;
--插表更新--
SELECT * FROM F161205_1 where 1=2 FOR UPDATE
--删除数据--
delete from 表名
--删除表--
drop table 表名
--插入--
insert into table_name (col1,col2) values (value1,value2)
---增加主键--
ALTER TABLE F59M0901 ADD PRIMARY KEY (GMAID)
---删除主键--
ALTER TABLE F59M0901 drop PRIMARY KEY
--创建索引--
CREATE INDEX index_A ON F59M4095 (MLGLPT,MLMCU,MLOBJ,MLSUB)
---删除索引----
drop index idxname
--更新--
update table1 set field1=value1 where 范围

count(1)比count(*)快

查询表

--查询--
select * from table1 order by field1,field2 [desc] 
select count as totalcount from table1 
select sum(field1) as sumvalue from table1 
select avg(field1) as avgvalue from table1 
select max(field1) as maxvalue from table1 
select min(field1) as minvalue from table1 

(select a from tableA ) except (select a from tableB) except (select a from tableC)
/*说明:包括所有在TableA 中但不在TableB和TableC 中的行并消除所有重复行而派生出一个结果表*/
delete from table1 where not exists ( select * from table2 where table1.field1=
table2.field1 ) 
/*说明:两张关联表,删除主表中已经在副表中没有的信息*/



几个高级查询运算词
A:UNION运算符
UNION 运算符通过组合其他两个结果表(例如 TABLE1 和 TABLE2)并消去表中任何重复行而派生出一个结果表。当 ALL 随 UNION 一起使用时(即 UNION ALL),不消除重复行。两种情况下,派生表的每一行不是来自 TABLE1 就是来自TABLE2。
B:EXCEPT 运算符
EXCEPT 运算符通过包括所有在TABLE1 中但不在 TABLE2 中的行并消除所有重复行而派生出一个结果表。当ALL 随 EXCEPT 一起使用时 (EXCEPT ALL),不消除重复行。
C:INTERSECT 运算符
INTERSECT 运算符通过只包括 TABLE1 和 TABLE2 中都有的行并消除所有重复行而派生出一个结果表。当 ALL 随 INTERSECT 一起使用时 (INTERSECT ALL),不消除重复行。注:使用运算词的几个查询结果行必须是一致的。

使用连接
(一)内连接
  内连接查询操作列出与连接条件匹配的数据行,它使用比较运算符比较被连接列的
列值。内连接分三种:
  1、等值连接:在连接条件中使用等于号(=)运算符比较被连接列的列值,其查询结
果中列出被连接表中的所有列,包括其中的重复列。
  2、不等连接: 在连接条件使用除等于运算符以外的其它比较运算符比较被连接的
列的列值。这些运算符包括>、>=、<=、<、!>、!<和<>。
  3、自然连接:在连接条件中使用等于(=)运算符比较被连接列的列值,但它使用选
择列表指出查询结果集合中所包括的列,并删除连接表中的重复列。
  例,下面使用等值连接列出authors和publishers表中位于同一城市的作者和出版
社:
  SELECT *
  FROM authors AS a INNER JOIN publishers AS p
  ON a.city=p.city
  又如使用自然连接,在选择列表中删除authors 和publishers 表中重复列(city和
state):
  SELECT a.*,p.pub_id,p.pub_name,p.country
  FROM authors AS a INNER JOIN publishers AS p
  ON a.city=p.city
  (二)外连接
  内连接时,返回查询结果集合中的仅是符合查询条件( WHERE 搜索条件或 HAVING
条件)和连接条件的行。而采用外连接时,它返回到查询结果集合中的不仅包含符合连
接条件的行,而且还包括左表(左外连接时)、右表(右外连接时)或两个边接表(全外连
接)中的所有数据行。如下面使用左外连接将论坛内容和作者信息连接起来:

  SELECT a.,b. FROM luntan LEFT JOIN usertable as b
  ON a.username=b.username

  下面使用全外连接将city表中的所有作者以及user表中的所有作者,以及他们所在
的城市:

  SELECT a.,b.
  FROM city as a FULL OUTER JOIN user as b
  ON a.username=b.username

  (三)交叉连接
  交叉连接不带WHERE 子句,它返回被连接的两个表所有数据行的笛卡尔积,返回到
结果集合中的数据行数等于第一个表中符合查询条件的数据行数乘以第二个表中符合查
询条件的数据行数。例,titles表中有6类图书,而publishers表中有8家出版社,则下
列交叉连接检索到的记录数将等于6*8=48行。

  SELECT type,pub_name
  FROM titles CROSS JOIN publishers
  ORDER BY type

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值