Oracle DDL语句及示例代码
来源:互联网 发布:国产视频制作软件 编辑:程序博客网 时间:2024/06/16 18:02
创建Oracle 数据表的 基本格式:
CREATE TABLE 表名称(
列名称 类型 [DEFAULT 默认值],
列名称 类型 [DEFAULT 默认值],
列名称 类型 [DEFAULT 默认值],
列名称 类型 [DEFAULT 默认值],
列名称 类型 [DEFAULT 默认值]
);
注意 最后一个列不能有 , 号
创建表
CREATE TABLE student (
stuno NUMBER(5),
sname VARCHAR2(18),
age NUMBER(3) DEFAULT 0,
birthday DATE DEFAULT sysdate,
test CLOB
);
INSERT 增加数据
语法:insert into 表名(列名1,列名2....) values(值1,值2....);
INSERT INTO student (stuno, sname, age, birthday) VALUES (1001, '李四', 18, '08-9月 -17');
INSERT INTO student (stuno, sname, age, birthday) VALUES (1002, '张三', 19, to_date('1995-12-14', 'yyyy-mm-dd'));
简写 可以省略表名后面的列,但是值必须按照顺序完全添加
INSERT INTO student VALUES (1003, '王五', 20, '08-9月 -17', 1111);
提交(执行语句后不提交数据只是在缓存中并不会提交到数据库中)
COMMIT;
UPDATE 修改数据
语法:UPDATE 表名称 SET 列名=值,列名=值... WHERE 条件
UPDATE student SET sname = '哈哈' WHERE stuno = '1002';
将年龄小于平均年龄的人的年龄+10
UPDATE student SET age = age + 10 WHERE age < (SELECT avg(age) FROM student);
将赵六的年龄修改为李四的年龄
UPDATE student SET age = (SELECT age FROM student WHERE sname = '李四') WHERE sname = '赵六';
在更新数据的时候,内部也是一个查询的操作,非常消耗资源
记住,以后再更新数据的时候,一定不能不写WHERE
delete 删除数据
语法: DELETE FROM student WHERE 条件
DELETE FROM student WHERE stuno = 1001;
删除高于平均年龄的学生信息
DELETE FROM student WHERE age > (SELECT avg(age) FROM student);
删除生日小于2000之前的学生
DELETE FROM student WHERE birthday < to_date('2000', 'yyyy');
删除整张表的数据
DELETE FROM student;
删除表
语法:drop table 表名;
DROP TABLE student;
修改表的结构 ALTER
数据表的修改
CREATE TABLE test (
tid NUMBER(3)
);
添加数据列
ALTER TABLE test
ADD (
email VARCHAR2(30)
);
添加新列
ALTER TABLE test
ADD (
sex VARCHAR2(5) DEFAULT '男'
);
修改数据列
ALTER TABLE test
MODIFY (
email VARCHAR2(32)
);
将数据列 email 的名称修改为 yx
ALTER TABLE student RENAME COLUMN email TO yx;
删除数据列
-删除表中数据列的语法:
ALTER TABLE 表名称 DROP COLUMN 列名称;
-删除 性别 sex 列。
ALTER TABLE student DROP COLUMN sex;
数据表的重命名
语法:
RENAME 旧表名 TO 新表名;
数据表的截断
可以把数据表所占用的全部资源都清空释放掉
TRUNCATE TABLE 表名称;
数据表的复制(Oracle 特有语法)
复制表的基本语法:
CREATE TABLE 表名称 AS 子查询;
CREATE TABLE myemp AS (SELECT empno,ename FROM emp);
CREATE TABLE 表名称(
列名称 类型 [DEFAULT 默认值],
列名称 类型 [DEFAULT 默认值],
列名称 类型 [DEFAULT 默认值],
列名称 类型 [DEFAULT 默认值],
列名称 类型 [DEFAULT 默认值]
);
注意 最后一个列不能有 , 号
创建表
CREATE TABLE student (
stuno NUMBER(5),
sname VARCHAR2(18),
age NUMBER(3) DEFAULT 0,
birthday DATE DEFAULT sysdate,
test CLOB
);
INSERT 增加数据
语法:insert into 表名(列名1,列名2....) values(值1,值2....);
INSERT INTO student (stuno, sname, age, birthday) VALUES (1001, '李四', 18, '08-9月 -17');
INSERT INTO student (stuno, sname, age, birthday) VALUES (1002, '张三', 19, to_date('1995-12-14', 'yyyy-mm-dd'));
简写 可以省略表名后面的列,但是值必须按照顺序完全添加
INSERT INTO student VALUES (1003, '王五', 20, '08-9月 -17', 1111);
提交(执行语句后不提交数据只是在缓存中并不会提交到数据库中)
COMMIT;
UPDATE 修改数据
语法:UPDATE 表名称 SET 列名=值,列名=值... WHERE 条件
UPDATE student SET sname = '哈哈' WHERE stuno = '1002';
将年龄小于平均年龄的人的年龄+10
UPDATE student SET age = age + 10 WHERE age < (SELECT avg(age) FROM student);
将赵六的年龄修改为李四的年龄
UPDATE student SET age = (SELECT age FROM student WHERE sname = '李四') WHERE sname = '赵六';
在更新数据的时候,内部也是一个查询的操作,非常消耗资源
记住,以后再更新数据的时候,一定不能不写WHERE
delete 删除数据
语法: DELETE FROM student WHERE 条件
DELETE FROM student WHERE stuno = 1001;
删除高于平均年龄的学生信息
DELETE FROM student WHERE age > (SELECT avg(age) FROM student);
删除生日小于2000之前的学生
DELETE FROM student WHERE birthday < to_date('2000', 'yyyy');
删除整张表的数据
DELETE FROM student;
删除表
语法:drop table 表名;
DROP TABLE student;
修改表的结构 ALTER
数据表的修改
CREATE TABLE test (
tid NUMBER(3)
);
添加数据列
ALTER TABLE test
ADD (
email VARCHAR2(30)
);
添加新列
ALTER TABLE test
ADD (
sex VARCHAR2(5) DEFAULT '男'
);
修改数据列
ALTER TABLE test
MODIFY (
email VARCHAR2(32)
);
将数据列 email 的名称修改为 yx
ALTER TABLE student RENAME COLUMN email TO yx;
删除数据列
-删除表中数据列的语法:
ALTER TABLE 表名称 DROP COLUMN 列名称;
-删除 性别 sex 列。
ALTER TABLE student DROP COLUMN sex;
数据表的重命名
语法:
RENAME 旧表名 TO 新表名;
数据表的截断
可以把数据表所占用的全部资源都清空释放掉
TRUNCATE TABLE 表名称;
数据表的复制(Oracle 特有语法)
复制表的基本语法:
CREATE TABLE 表名称 AS 子查询;
CREATE TABLE myemp AS (SELECT empno,ename FROM emp);
注意:以上复制表基本都有数据产生。如果只是想复制一张数据表的结构,而不需要复制数据的话,可以在子查询中加上条件 WHERE 1=2; 条件不成立 则不会返回任何数据行
创建数据表案例:(运动员表,比赛项目表,成绩表)
CREATE TABLE sporter ( sporterid NUMBER(4), name VARCHAR2(18) NOT NULL, sex VARCHAR2(3) NOT NULL, department VARCHAR2(20) NOT NULL, CONSTRAINT pk_sporter_sporterid PRIMARY KEY (sporterid));CREATE TABLE item ( itemid VARCHAR2(6), itemname VARCHAR2(20) NOT NULL, location VARCHAR2(30) NOT NULL, CONSTRAINT pk_item_itemid PRIMARY KEY (itemid));CREATE TABLE grade ( sporterid NUMBER(4), itemid VARCHAR2(6), mark NUMBER(1) DEFAULT 0, CONSTRAINT fk_grade_sporterid FOREIGN KEY (sporterid) REFERENCES sporter (sporterid) ON DELETE CASCADE, CONSTRAINT fk_grade_itemid FOREIGN KEY (itemid) REFERENCES item (itemid) ON DELETE SET NULL, CONSTRAINT ch_grade_mark CHECK (mark IN (6, 4, 2, 0)));
阅读全文
0 0
- Oracle DDL语句及示例代码
- oracle DDL 语句查询
- oracle监控DDL语句
- Oracle中的DDL语句
- ORACLE获取DDL语句
- 获取Oracle DDL语句
- 常用oracle DDL语句
- Oracle中DDL语句
- oracle常用DDL语句
- oracle DDL语句
- mysql 常用 ddl 语句示例
- ORACLE数据库的DDL和DCL语句及游标使用
- ORACLE的DDL语句模板
- Oracle的DDL,DML语句
- Oracle DDL SQL语句总结
- oracle DML、DDL语句区别
- 查看oracle的DDL语句
- sql及DDL语句操作
- 源码(二)
- 关于js原型和继承的方法复习
- WinRAR x64 v5.5中文版去广告过程
- 1003 Dijkstra
- 二叉搜索树的后序遍历序列
- Oracle DDL语句及示例代码
- MD5算法原理
- HDU 2296 Ring(AC自动机+DP)
- git 基础
- (转)独家| ICO被定性为涉嫌非法集资 一夜暴富梦碎
- ESP8266-AT固件之STA模式
- C++ 图论-拓扑排序
- Namenode HA原理详解
- C++ --- 引用