Oracle数据库基础

sql 语言简介:

数据定义语言

create table 创建新表   alter table用来修改表结构   truncate table删除表中的记录

--创建一张表
create table test
   (
    id int primary key,
    name varchar2(30) not null,
   score number not null
  );

表名命名规则:

1:表明首字母应该为字母

2:不能使用Oracle保留字为表命名

3:表命的最大长度为30字符

4:同一用户模式下的不同表不能具有相同的名称

5:可以使用下划线。数字和字母,但不能使用空格和单引号

注意:

Oracle中的表名不区分大小写 

ORacle中也varcher数据类型 但不建议使用  要使用varcher2 Oracle中的标准数据类型

数据操作语言

选择无重复的行

可以使用DISTINCT--筛选全部完全相同的行  只保留一行

  -- DISTINCT
  select DISTINCT score, name
           from test 

数据控制语言:省略

事务控制语言

commit:提交事务 即把事务中对数据库的修改进行永久的保存

rollback:回滚事务 即取消的数据库所做的任何修改

savepint:在事务中创建存储点

ROllback to<SavePoint _Name> 将事务回滚到存储点

  什么时候开启事务:

  在Oracle中 在事务上的一次事务结束以后数据第一次被修改的时候自动修改

什么时候事务的结束:

两种情况

(1):数据被提交

    发出commit命令

   执行DDL或者DCL语句后 当前事务自动被提交

   与Oracle分离如退出PL/SQL Developer

(2):数据被撤销

  发出ROLLBack 命令

  服务器进程异常结束

  DBA停止会话

SQL操作符:

算术运算符

比较运算符

逻辑运算符

 位运算符:

集合操作符:

实例:

创建一张表并且插入数据

--创建一张表
create table test
   (
    id int primary key,
    name varchar2(30) not null,
   score number not null
  );
--插入数据
  insert into test values(1,'Aaron',78);
  insert into test values(2,'Bill',76);
  insert into test values(3,'Cindy',89);
  insert into test values(4,'Damon',90);
  insert into test values(5,'Ella',73);
  insert into test values(6,'Frado',61);
  insert into test values(7,'Gill',99);
  insert into test values(8,'Hellen',56);
  insert into test values(9,'Ivan',93);
  insert into test values(10,'Jay',90);
  commit;

  

集合运算包含三种:

集合运算:

1)对输入的两个集合或多集进行的运算。

2)多集:由两个输入的查询生成的可能包含重复记录的中间结果集。

3T-SQL支持三种集合运算:并集(UNION)、交集(INTERSECT)、差集(EXCEPT

  1.并集运算:操作符返回两个查询选定的所有的不重复的行 

语法:

集合运算的基本格式:

输入的查询1

<集合运算符>

输入的查询2

[ORDER BY]

要求

1)输入的查询不能包含ORDER BY字句;

2)可以为整个集合运算结果选择性地增加一个ORDER BY字句;

3)每个单独的查询可以包含所有逻辑查询处理阶段(处理控制排列顺序的ORDER BY字句);

4)两个查询 必须包含相同的列数;

5)相应列必须具有兼容的数据类型。兼容个的数据类型:优先级较低的数据类型必须能隐式地转换为较高级的数据类型。比如输入的查询1的第一列为int类型,输入的查询2的第一列为float类型,则较低的数据类型int类型可以隐式地转换为较高级float类型。如果输入的查询1的第一列为char类型,输入的查询2的第一列为datetime类型,则会提示转换失败:从字符串转换日期和/或时间时,转换失败

6)集合运算结果中列名由输入的查询1决定,如果要为结果分配结果列,应该在输入的查询1中分配相应的别名;

7)集合运算时,对行进行进行比较时,集合运算认为两个NULL相等;

8UNION支持DISTINCTALL。不能显示指定DISTINCT字句,如果不指定ALL,则默认使用DISTINCT

9INTERSETEXCEPT默认使用DISTINCT,不支持ALL

 --union
  select score,id,name from test where id > 2 and id < 6  
  union  
  select score,id,name from test where id < 4;

  并集ALL:操作符合并两个查询所有的行,包括重复的行

  --union all
 select id,name,score from test where id < 4  
 union all  
 select id,name,score from test where id > 2 and id < 6 ;
 
 -- union all   
 select id,name,score from test where id > 2 and id < 6
 union all
 select id,name,score from test where id < 4 

  2.交集运算:操作符只返回两个查询都有的行

 --intersect 
  select score,id,name from test
  intersect
  select score,id,name from test where score>'50';

  3.差集运算:操作符只返回由第一个查询选定而未被第二个查询选定的行,即在第一个查询结果中排除在第二个查询结果中出现的行

 --minus
  select score,id,name from test
  minus
  select score,id,name from test where score>'50';

原文地址:https://www.cnblogs.com/3020815dzq/p/9916087.html