结构化查询语言
SQL分类:
数据操纵语言DML:
select
数据定义语言DDL:
Create
数据控制语言DCL:
grant
Transaction:commit
insert 语句:
1、insert
此处插入的元组中列的个数、顺序与emp的结构完全一致,因此表名之后的列名可以省略不写
insert
2、可以只插入部分列
insert
但要求省略的列必须满足下面的条件:
如果不符合上面两个条件,将会报错。不能成功插入。
3、可以用insert语句把一个select语句的查询结果插入到一个基本表中,语法如下:
insert
insert into emp2
创建一个临时表
create
执行插入
create
insert
DELETE 语句:
SQL的删除操作是指从基本表中删除元组,语法如下:
delete
其语义是从基本表中删除满足条件表达式的元组
delete
如果想从表中删除所有的行,不要使用delete,可使用truncate
UPDATE 语句:
Update语句用于修改基本表中元组的某些列,其语法如下:
update
其语义是:修改基本表中满足条件表达式的那些元组的列值,需修改的列值在set子句中指出。
事务处理(Transaction):
事务(Transaction)是一个操作序列。这些操作要么都做,要么都不做,是一个不可分割的工作单位,是数据库环境中的逻辑工作单位。
事务是为了保证数据库的完整性
事务不能嵌套
在oracle中,没有事务开始的语句。一个Transaction起始于一条DML(Insert、Update和Delete
1、用户显式执行Commit语句提交操作或Rollback语句回退。
2、当执行DDL(create、alter、drop)语句事务自动提交。
3、用户正常断开连接时,Transaction自动提交。
4、系统崩溃或断电时事务自动回退。
Commit
Commit表示事务成功地结束,此时告诉系统,数据库要进入一个新的正确状态,该事务对数据库的所有更新都以交付实施。每个Commit语句都可以看成是一个事务成功的结束,同时也是另一个事务的开始。
Rollback表示事务不成功的结束,此时告诉系统,已发生错误,数据库可能处在不正确的状态,该事务对数据库的更新必须被撤销,数据库应恢复该事务到初始状态。每个Rollback语句同时也是另一个事务的开始。
一旦执行了commit语句,将目前对数据库的操作提交给数据库(实际写入DB),以后就不能用rollback进行撤销。
执行一个
三种状态:
l
以前的数据可恢复
当前的用户可以看到DML操作的结果
其他用户不能看到DML操作的结果
被操作的数据被锁住,其他用户不能修改这些数据
l
数据的修改被永久写在数据库中.
数据以前的状态永久性丢失.
所有的用户都能看到操作后的结果.
记录锁被释放,其他用户可操作这些记录.
l
语句将放弃所有的数据修改
修改的数据被回退.
恢复数据以前的状态.
行级锁被释放.
表结构的修改:
在基本表建立并使用一段时间后,可以根据实际需要对基本表的结构进行修改
1、增加新的列用“alter
新增加的类不能定义为“not
2、删除原有的列用“alter
3、修改字段“alter
alter
4、在基本表不需要时,可以使用“drop
5、可以使用RENAME语句改变表名(视图),要求必须是表(视图)的所有者
RENAME
约束 constraint:
当我们创建表的时候,同时可以指定所插入数据的一些规则,比如说某个字段不能为空值,某个字段的值(比如年龄)不能小于零等等,这些规则称为约束。约束是在表上强制执行的数据校验规则.
Oracle
1、NOT
2、UNIQUE
3、PRIMARY
4、FOREIGN
5、CHECK 自定义检查约束
创建约束的时机
1、在建表的同时创建
2、建表后创建
约束从作用上分类,可以分成两大类:
1、表级约束:可以约束表中的任意一列或多列。可以定义除了Not
2、字段级约束:只能约束其所在的某一列。可以定义任何约束。
主键约束( PRIMARY KEY):
主键约束是数据库中最重要的一种约束。在关系中,主键值不可为空,也不允许出现重复,即关系要满足实体完整性规则。
1、主键从功能上看相当于非空且唯一
2、一个表中只允许一个主键
3、主键是表中能够唯一确定一个行数据的字段
4、主键字段可以是单字段或者是多字段的组合
5、Oracle为主键创建对应的唯一性索引
主键可用下列两种形式之一定义
1、主键子句:在表的定义中加上如下子句
2、主键短语:在主属性的定义之后加上primary
上述形式Oracle会自动命名约束,可自己给约束起名
create
id
constraint
)
非空约束(NOT NULL):
确保字段值不允许为空,只能在字段级定义
CREATE
employee_id
name
salary
hire_date
)
唯一性约束(UNIQUE):
唯一性约束条件确保所在的字段或者字段组合不出现重复值
唯一性约束条件的字段允许出现空值(如果多个字段出现null,并不算违反了唯一性约束)
Oracle将为唯一性约束条件创建对应的唯一性索引
CREATE
id
name
email
salary
hire_date
constraint
);
CHECK 约束:
Check约束用于对一个属性的值加以限制(较少使用,大多数情况我们通过程序来保证输入到表中的数据符合任何复杂的要求)
在check中定义检查的条件表达式,数据需要符合设置的条件
create
id
age
salary
sex
constraint
)
在这种约束下,插入记录或修改记录时,系统要测试新的记录的值是否满足条件
外键约束( FOREIGN KEY):
外键是表中的一个列,其值必须在另一表的主键中列出。
作为主键的表称为“主表”,作为外键的关系称为“依赖表”
外键参照的是主表的主键或者唯一键
对于主表的删除和修改主键值的操作,会对依赖关系产生影响,以删除为例:当要删除主表的某个记录(即删除一个主键值,那么对依赖的影响可采取下列3种做法:
1、RESTRICT方式:只有当依赖表中没有一个外键值与要删除的主表中主键值相对应时,才可执行删除操作。
2、CASCADE方式:将依赖表中所有外键值与主表中要删除的主键值相对应的记录一起删除
3、SET
foreign
如省略on短语,缺省为第一中处理方式。
约束的添加和撤销:
可增加或删除约束,但不能直接修改
增加alter
删除alter
VIEW:
定义:视图是从若干基本表和(或)其他视图构造出来的表。在创建一个视图时,只是存放的视图的定义,也即是动态检索数据的查询语句,而并不存放视图对应的数据,在用户使用视图时才去求相对应的数据。所
以视图被称作“虚表”
适当的利用视图,可以使我们的查询变得简单,但是如果视图建立太多的话,会给系统的维护带来麻烦,比如表结构修改了,与这张表有关的任何视图都必须跟着修改,视图很多的时候将是一件很麻烦的事,因此除非必要,否则不要轻易建立视图。
1、可以限制对数据的访问,可以给用户授予表的特定部分的访问权限而不是整个表的访问权限。
2、可以使复杂的查询变的简单。在编写查询后,可以方便地重用它而不必知道他的基本查询细节。
3、提供了对相同数据的不同显示
创建视图:在create
CREATE
[(alias[,
AS
[WITH
create
as
(select
在查询时,不需要再写完全的Select查询语句,只需要简单的写上从视图中查询的语句就可以了
select
当视图不再需要的时候,用“drop
drop
序列sequence:
序列是oracle专有的对象,它用来产生一个自动递增的数列
创建序列的语法:
create
increment
start
maxvalue
minvalue
cycle|nocycle
cache
实例:create
使用序列
select
insert
查看序列状态
select
删除序列
drop
索引:
索引是为了加快对数据的搜索速度而设立的。索引是方案(schema)中的一个数据库对象,与表独立存放.
索引的作用:在数据库中用来加速对表的查询,通过使用快速路径访问方法快速定位数据,减少了磁盘的I/O
Sql中的索引是非显示索引,也就是在索引创建以后,在用户撤销它之前不会再用到该索引的名字,但是索引在用户查询时会自动起作用。
索引的创建有两种情况
自动:
手动:
在一列或者多列上创建索引,下面的索引将会提高对EMP表基于
create
删掉索引:drop
开发中使用索引的要点:
1.
2.
3.
4.
5.