赞
踩
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
DDL 操作用于定义、修改和删除数据库对象的结构和属性。这些操作不直接涉及数据的操作,而是影响数据库的整体结构。常见的 DDL 操作包括:
CREATE: 用于创建数据库对象,如表、索引、视图等。
语法:
CREATE TABLE 表名
(字段名(列名) 数据类型 约束,
字段名(列名) 数据类型
);
创建用户信息表
CREATE TABLE USER_INFO
(ID NUMBER primary key,
U_NAME VARCHAR2(50),
SEX VARCHAR2(10),
BIRTHDAY DATE
);
根据查询结果集建表法也称复制建表法 复制不了原表的约束条件(比如主键,外键)。
语法:
CREATE TABLE 表名 AS
SELECT 查询语句;
CREATE TABLE EMP_01 AS --会复制表数据
SELECT * FROM EMP;
CREATE TABLE EMP_1010 AS
SELECT * FROM EMP
WHERE 1=2; --整一个不成立的where过滤条件,就不会复制数据
ALTER: 用于修改数据库对象的结构,如表结构的更改、列的添加等。
--语法:
ALTER TABLE 表名 ADD 列名 数据类型;
--用户信息表中添加列(用户手机号码 字段)
ALTER TABLE USER_INFO ADD PHONE_NUMBER VARCHAR2(20)
--语法:
ALTER TABLE 表名 MODIFY 列名 新的数据类型;
--改变用户手机号码字段数据类型,修改为数字类型
ALTER TABLE USER_INFO MODIFY PHONE_NUMBER NUMBER(20);
--语法:
ALTER TABLE 表名 RENAME COLUMN 原列名 TO 新列名; --column关键字不能少
--将用户信息表手机号码字段PHONE_NUMBER重命名为P_NUMBER
ALTER TABLE USER_INFO RENAME COLUMN PHONE_NUMBER TO P_NUMBER;
--语法:
ALTER TABLE 表名 DROP COLUMN 列名; --column关键字不能少
--删除用户信息表用户手机号码P_NUMBER字段
ALTER TABLE USER_INFO DROP COLUMN P_NUMBER;
--语法:
ALTER TABLE 原表名 RENAME TO 新表名;
--将用户信息表 USER_INFO 重命名为USER_INFO_TEST1
ALTER TABLE USER_INFO RENAME TO USER_INFO_TEST1;
DROP: 用于删除数据库对象,如删除表、索引、视图等。
--语法:
DROP TABLE 表名/索引/视图
--删除表 EMP_1009
DROP TABLE EMP_1009;
TRUNCATE: 用于删除表中的所有数据,但保留表的结构。
--语法:
TRUNCATE TABLE 表名;
--清空用户表EMP_1010,保留表结构
TRUNCATE TABLE EMP_1010;
清空表前:
清空表后:
DML 操作用于操作和处理数据库中的数据。这些操作影响数据的内容,而不是数据库对象的结构。常见的 DML 操作包括:
--语法:
INSERT INTO 表名(字段名1,字段名2,...) select 查询结果集;
--例子:
INSERT INTO EMP_1010(ename,job,sal) select ename,job,sal from emp; --将查询结果集插入表
--语法:
INSERT INTO 表名(字段名1,字段名2,...) VALUES (值1,值2,...);
COMMIT; --提交
--例子:
INSERT INTO USER_INFO_test1(ID,U_NAME,SEX,BIRTHDAY) VALUES (1234567,'AZHEN','W',TO_DATE('19990101', 'YYYYMMDD'));
INSERT INTO USER_INFO_test1(ID,U_NAME,SEX,BIRTHDAY) VALUES (1234568,'AQIANG','M',TO_DATE('19990201', 'YYYYMMDD'));
INSERT INTO USER_INFO_test1(ID,U_NAME,SEX,BIRTHDAY) VALUES (1234569,'FULAOSHI','M',TO_DATE('19580201', 'YYYYMMDD'));
COMMIT; --提交
--语法:
update 表名 set 字段=新值 where 过滤条件
--例:
update ssm set name='xiaocui' where name='AZHEN';
update ssm set name='xiaoliu' where name='AZHEN' and age=27;
--语法:
delete from 表名 where ...
--例:
delete from ssm where name='AZHEN' and age=27;
MERGE 语句在 Oracle 数据库中用于同时执行插入(INSERT)和更新(UPDATE)操作,通常用于将两个表之间的数据合并。这是一种非常强大的功能,特别适用于数据同步和更新场景。MERGE 语句的一般语法如下:
MERGE INTO target_table USING source_table
ON (condition)
WHEN MATCHED THEN
UPDATE SET column1 = value1, column2 = value2, ...
WHEN NOT MATCHED THEN
INSERT (column1, column2, ...) VALUES (value1, value2, ...);
以下是各个部分的解释:
假设我们有一个目标表 employees 和一个源表 temp_employees,我们想要将源表中的员工数据合并到目标表中。我们可以执行以下 MERGE 语句:
MERGE INTO employees e
USING temp_employees t
ON (e.employee_id = t.employee_id)
WHEN MATCHED THEN
UPDATE SET e.salary = t.salary
WHEN NOT MATCHED THEN
INSERT (e.employee_id, e.first_name, e.last_name, e.salary)
VALUES (t.employee_id, t.first_name, t.last_name, t.salary);
这个示例中,如果在目标表中找到匹配的员工(根据 employee_id),则更新目标表中的 salary 列。如果在目标表中找不到匹配的员工,就插入新的员工数据。这样,你可以确保目标表中包含最新的员工数据。
DQL 操作用于从数据库中检索数据。这些操作帮助你查询需要的数据以供查看和分析。唯一的 DQL 操作是:
select * from emp;
DCL 操作用于控制对数据库对象的访问权限和权限管理。它用于管理数据库的安全性和访问级别。常见的 DCL 操作包括:
GRANT 命令用于赋予用户或角色特定的数据库权限。以下是一些常见的权限类型,可以使用 GRANT 命令进行授予:
--语法:
grant 权限 to 用户 --授予用户权限
grant 权限1,权限2... to 用户 --同时授予用户多项权限
grant dba to xiaocui; --赋予xiaocui用户数据库管理权限(DBA)
grant connect,resource to xiaocui; --授予xiaocui用户基本权限(登录、资源访问)
grant select any table to xiaocui; --赋予查看任何表的权限
REVOKE: 用于撤销用户和角色对数据库对象的访问权限。
--语法:
revoke 权限 from 用户 --收回用户权限
revoke 权限1,权限2... from 用户 --同时收回用户多项权限
revoke dba from xiaocui; --收回用户xiaocui的DBA权限
revoke select any table from xiaocui; --收回用户xiaocui查看任何表的权限
TCL 操作用于管理数据库中的事务。事务是一组数据库操作,要么全部成功执行,要么全部回滚。常见的 TCL 操作包括:
在 Oracle 数据库中,COMMIT 是用于确认和永久保存之前进行的事务操作的 SQL 命令。当你执行 COMMIT 时,它会将在当前事务中所做的更改保存到数据库中,并结束事务。这是事务处理的一个关键概念,用于确保数据的完整性和一致性。以下是关于 COMMIT 的一些重要信息和使用方法:
commit;
在 Oracle 数据库中,ROLLBACK 是用于撤销事务中所有未提交的更改的 SQL 命令。它允许你回滚事务,将数据库恢复到事务开始之前的状态,以确保数据的完整性和一致性。以下是关于 ROLLBACK 的一些重要信息和使用方法:
rollback;
SAVEPOINT 是 Oracle 数据库中用于实现事务控制的一种机制,它允许你在事务中创建一个保存点,以便在后续的操作中可以回滚到这个保存点。这对于在事务内部部分回滚而不必回滚整个事务非常有用。SAVEPOINT 的一般语法如下:
SAVEPOINT savepoint_name;
以下是 SAVEPOINT 的使用示例和说明:
SAVEPOINT my_savepoint;
这将在当前事务中创建一个名为my_savepoint 的保存点。
ROLLBACK TO my_savepoint;
这将撤消从创建保存点到回滚点之间的所有更改,但会保留从事务开始到保存点创建的任何更改。
RELEASE SAVEPOINT my_savepoint;
SAVEPOINT savepoint1;
-- 执行一些操作
SAVEPOINT savepoint2;
-- 执行一些操作
ROLLBACK TO savepoint1; -- 可以回滚到 savepoint1,但不会影响 savepoint2
SAVEPOINT 是一个有用的功能,特别是在复杂的事务中,它允许你在事务内的不同阶段创建临时的恢复点,以便在需要时回滚到特定的状态,而不必回滚整个事务。这对于数据完整性和一致性的维护非常重要。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。