文章目录

  • ORACLE SQL
  • 一、DDL数据定义语言
  • 1、CREATE创建表
  • 2、DESC查看表结构
  • 3、DROP删除表
  • 4、RENAME修改表名
  • 5、ALTER修改表结构
  • 二、DML语句
  • 1、INSERT 语句
  • 2、UPDATE语句
  • 3、DELETE、TRUECATE语句



ORACLE SQL

包括CREATE创建表、DESC查看表结构、DROP删除表、RENAME修改表名、ALTER修改表结构、INSERT插入数据、DELETE\CREATURE删除数据、UPDATE更新数据。


一、DDL数据定义语言

DDL是对数据库对象

1、CREATE创建表

CREATE语句基本语法:

CREATE TABLE [schema.] table_name(
  column_name datatype[DEFAULT expr][,...]
);

根据现有的表创建新表:

-- 使用旧表创建新表
CREATE TABLE tab_new like tab_old;
CREATE TABLE tab_new as select col1,col2... FROM tab_old definition only
-- 创建employee_liu表
CREATE TABLE employee_liu(
  id NUMBER(4) NOT NULL,
  name VARCHAR2(20),
  gender CHAR(1) DEFAULT 'M',
  birth DATE,
  salary NUMBER(6,2),
  job VARCHAR2(30),
  deptno NUMBER(2),
  mgr NUMBER(4)
);
-- 创建dept表
CREATE TABLE dept(
deptno NUMBER(2) NOT NULL,
dname VARCHAR2(10),
loc VARCHAR2(20)
);

数据库中所有数据类型的默认值都是NULL,在创建表的时候可以使用DEFAULT为某个字段单独指定一个默认值

gender CHAR(1) DEFAULT 'M'

数据库中的字符串字面量是使用单引号的,虽然SQL语句本身不区分大小写,但是字符串的值是区分大小写的

NOT NULL:非空是一种约束条件,用于确保字段值不为空

id NUMBER(4) NOT NULL

(1)、默认情况下,任何列都允许有空值

(2)、当某个字段被设置了非空约束条件,这个字段中必须存在有效值

(3)、当执行插入数据的操作时,必须提供这个列的数据

(4)、当执行更新操作时,不能给这个列的值设置为NULL

2、DESC查看表结构

--DESC查看employee_liu表结构
DESC employee_liu;

DB2脚本调整字符长度_DB2脚本调整字符长度

3、DROP删除表

--DROP删除employee_liu表
DROP TABLE employee_liu;

4、RENAME修改表名

RENAME employee_liu TO myemployee_liu;

5、ALTER修改表结构

(1)、添加新的字段

--添加新字段,日期默认为当前系统时间
ALTER TABLE myemployee_liu ADD (hiredate DATE DEFAULT SYSDATE);

注:列增加后将不能删除;DB2中列加上后数据类型也不能改变,唯一能改变的是增加VARCHER类型的长度

(2)、修改现有字段

a、修改字段可以修改字段的类型、长度、默认值、是否非空

b、修改表结构都应当避免在表中有数据以后进行,若表中有数据,修改表中字段时尽量不要修改类型,若修改长度尽量增大避免缩小,否则可能导致失败

c、基本语法:

ALTER TABLE table_name MODIFY(
  column datatype [DEFAULT expr][,column datatype...]
);
--修改字段
ALTER TABLE myemployee_liu MODIFY(job VARCHAR2(40) DEFAULT 'CLERK');

(3)、删除现有字段

--删除字段
ALTER TABLE myemployee_liu DROP (hiredate);

二、DML语句

(1)、DML是对表中的数据进行的操作

(2)、DML伴随事物控制(TCL)

(3)、DML包含操作:增、删、改

1、INSERT 语句

INSERT向表中插入数据

--向表中插入数据
INSERT INTO myemployee_liu (id,name,salary,deptno) VALUES (1,'jack',5000,10);

注:字符类型的值必须用单引号括起来;未指定的列默认值为NULL

如果想插入的列有日期字段,需要考虑日期的格式

默认的日期‘DD-MON-RR’

可以自定义日期格式,用TO_DATE函数转换为日期类型的数据

--使用默认日期格式插入记录(有地区限制,在英文地区好使,不建议使用)
INSERT INTO myemployee_liu (id,name,job,birth) VALUES (2,'ersd','teacher','01-SEP-03');
--使用自定义日期格式插入记录
INSERT INTO myemployee_liu (id,name,job,birth) VALUES (2,'ersd','teacher',TO_DATE('2022-06-06','YYYY-MM-DD'));

2、UPDATE语句

UPDATE修改表中数据要使用WHERE添加过滤条件,这样才会只将满足条件的记录进行修改,否则是全表所有数据都修改

--修改数据
UPDATE myemployee_liu SET salary=6000 WHERE id=1;

3、DELETE、TRUECATE语句

DELETE语句,删除表中数据,删除数据通常也要添加WHERE语句来限制要删除数据的条件,否则就是清空表操作

DELETE FROM myemployee_liu WHERE NAME='ersd';

在DDL语句中的TRUNCATE语句,同样有删除表数据的作用

和DELETE语句的区别:

  • DELETE可以有条件删除,TRUECATE将表数据全部删除
  • DELETE是DML语句,可以回退,TRUNCATE是DDL语句,立即生效,无法回退
  • 如果是删除全部表记录,且数据量较大,DELETE语句效率比TRUNCATE语句低
--删除全部记录
DELETE FROM myemployee_liu
--或者
TRUNCATE TABLE myemployee_liu