Oracle数据库的应用-DDL和DML

159 阅读3分钟

「这是我参与2022首次更文挑战的第7天,活动详情查看:2022首次更文挑战」。

1. DDL

1.1 创建表

基本格式:

CREATE  TABLE  表名 (

  列名 类型,

  列名 类型,

  列名 类型,

  ……

)

例如:

CREATE  TABLE  t_student (

  stu_id number(9),

  stu_name varchar2(50),

  stu_age number(2),

  stu_date date

  ……

)

从已有的数据创建表:

CREATE TABLE stud2 AS SELECT * FROM stud

1.2 修改表

  • 修改表名称:

RENAME  表名 to 新表名

  • 给表添加备注:

COMMENT ON TABLE 表名 IS  '表的说明'  

  • 给列添加备注:

COMMENT ON COLUMN 表名.列名 IS '列的说明'

  • 修改表结构:

ALTER TABLE 表名 ……(后面要跟的语句取决写下面的新增/修改/删除列的应用场景)  

  • 给表增加列:

ALTER TABLE 表名 ADD 列名 列类型

  • 删除列:

ALTER TABLE 表名 DROP  COLUMN 列名

  • 修改列:
修改列名和列类型

ALTER TABLE 表名  MODIFY 列名 列类型

 

更改列名

ALTER TABLE 表名 RENAME COLUMN 旧列名 to 新列名

 

删除列  

ALTER TABLE 表名 DROP COLUMN  列名

1.3 删除表

DROP 表名

1.4 查询用户所有表

SELECT * FROM user_tables

1.5 查看表结构

SELECT table_name,column_name, data_type, data_length, data_precision FROM user_tab_columns;

1.6 查看表备注

SELECT * FROM user_tab_comments  

1.7 查看列备注

SELECT * FROM user_col_comments

2. DML

2.1 向表中写入新数据行 ( insert )

  • 指定列名插值:

INSERT INTO 表名 (列名1,列名2,列名3...) VLAUES (列1的值,列2的值,列3的值...)

  • 向所有列插值:

INSERT INTO 表名 VLAUES (列1的值,列2的值,列3的值…)

  • 插入的结果从其它表查出来:

INSERT INTO temp2  SELECT * FROM temp2

  • 插值时使用序列:

INSERT INTO 表名 (id,列名2,列名3...) VLAUES (序列名称.NEXTVAL,列2的值,列3的值...)

注:序列要先创建,创建和使用序列参考序列章节

2.2 修改数据行 ( update )

基本格式:

UPDATE 表名 SET 字段1=字段1的值,字段2=字段2的值…… WHERE 字段1=字段1的值 [and/or] 字段2=字段2的值……

例1UPDATE t_student  SET age=20,name=’张三’ WHERE id=1

更新学生表当中id为1的学生信息为:年龄20岁,姓名张三

例2UPDATE t_student  SET age=20,sex=’女’ WHERE name=’张三’ AND phone=13012345678’

更新学生表当中姓名为张三,并且手机号为13012345678为学生信息为:年龄20岁,姓名张三

2.3 删除数据行 ( delete )

基本格式:

DELETE FROM 表名 WHERE字段1=字段1的值 [AND/OR] 字段2=字段2的值……

例如:

DELETE FROM t_student WHERE id=1

删除id为1的这个学生的信息

2.4 截断表 ( truncate )

基本格式:

TRUNCATE TABLE表名

截断表指的是将表恢复到初始新建状态,从表中删除所有的行和重置表的存储区域。

2.5 drop,delete,truncate的区别

1.delete和truncate都是只删除表的数据,而不删除表的结构(定义),drop删除数据和定义。

2.delete语句是dml,事务提交之后才生效。truncate和drop是ddl,操作立即生效不需提交事务,不能回滚。

3.delete如果有相应的trigger,执行的时候将被触发。truncate,drop操作不触发trigger。

4.truncate 将表重置回到最开始。而delete只删除数据,不释放存储空间,等待写入新的数据来覆盖旧的数据。

5.速度一般来说: drop> truncate > delete。

6.truncate只能删除全部的数据,而delete可以通过where条件来筛选要删除的数据。