DDL、DML

DML数据操作语言

DML数据操作语言是针对表数据的,DDL数据定义语言是针对表对象和其他对象的。

插入—insert(四种插入方式,我最常用的是第一种)

语法:
INSERT INTO 表名 VALUES(值1,值2,.....);
INSERT INTO 表名(列1,列2,...,..) VALUES(值1,值2,.....);
INSERT INTO 表名 SELECT ....;
INSERT INTO 表名(列1,列2,...,..)  SELECT 列1,列2,...,.. FROM ... ;
测试如下的代码需要先建好表格
1INSERT INTO user_table VALUES(1,'qq@123.com','*-5*-5');
第一种方式中 值的数量、顺序、类型要和表结构中的字段一一对应
2INSERT INTO user_table(user_id) VALUES(2);
3INSERT INTO user_table SELECT deptno,dname,'123456' FROM dept  ;
4INSERT INTO USER_TABLE(USER_ID) SELECT 8 FROM DUAL;

修改—update

语法:
UPDATE user_table SET 列 = 值,列 = 值,..,.,.., [WHERE];
UPDATE USER_TABLE SET USER_ACC = '168@@@@.COM',USER_PWD = 123456 WHERE USER_ID = 1;

删除—delete

语法:
DELETE FROM user_table;
DELETE FROM user_table where 条件;

DELETE、DROP、TRUNCATE的区别:
1、DROP和TRUNCATE是DDL语言,DELETE是DML语言;
2、DROP是用来删除表结构,TRUNCATE和DELETE是用来删除表数据的;
3、DELETE可以带where条件删除也可以全部删除,但是TRUNCATE会删除全部数据;4、DELETE在删除时会产生事务,可以进行回滚,但是TRUNCATE不可以进行回滚。

合并—merge into

用途:用于同时从1个源表或多个源表对目标表进行数据的增删改。
语法:
	merge into 目标表 [别名] using 源表 on 链接条件
	when matched then
	增删改语句
	when not matched then
	增删改语句
MERGE INTO merge_b b   --目标表
USING merge_a a	  --源表
ON (b.id = a.id)  --关联条件
WHEN MATCHED THEN   --若关联条件匹配
     UPDATE SET b.name = a.name  --更新目标表中name字段的值为A表中的name字段值
WHEN NOT MATCHED THEN  --若关联条件不匹配
     INSERT VALUES(a.id,a.name)  --向目标表插入没有的数据

DDL数据定义语言

Oracle中的数据类型

  • 数值类型

    number(l,s) --l表示整体长度,最大长度是38,s表示精度,默认是0
    
  • 字符类型

    1char(l)  --定长字符串类型,l表示长度,数据没有占满空间会自动补空值,最长2000字节
    2、varchar2(l)  --变长字符串类型,l表示长度,数据没有占满空间会自动截断,最长4000字节
    注意:char的优点是插入速度快,缺点是浪费空间;varchar2的优点是节省空间,缺点是速率慢
    
  • 日期类型

    1date  --用于存储日期和时间类型,可以存放世纪、纪元、年月日时分秒
    2timestamp  --时间戳类型,可以存放世纪、纪元、年月日时分秒,秒后面的9位
    
  • CLOB/BLOB

    1、CLOB  --存储大文本文件的数据类型
    2BLOB  --二进制文件存储类型
    
  • LONG

    存储长字符串,最大可以存2G的字符串
    

创建—create

1、创建表
create table 表名(
   列名 数据类型 约束 默认值,--约束、默认值都是可以省略的
   列名 数据类型 约束 默认值,
   列名 数据类型 约束 默认值,
   ...
   表级约束             --可选
)tablespace 表空间名;   -- 表空间可以省略,默认是当前用户所在的表空间
举例:
CREATE TABLE PERSON(
    ID  NUMBER(2),
	NAME VARCHAR2(12),
	AGE NUMBER(3),
	SEX CHAR(2),
	BIRTHDAY DATE
);
2、复制表
语法:CREATE TABLE 表名 AS SELECT 语句;
举例:CREATE TABLE emp_copy AS SELECT * FROM emp;
3、复制另一个表的表结构但是不要数据
CREATE TABLE emp2 AS SELECT * FROM emp WHERE  1= 2;

修改—alter

修改结构、类型
1、给表添加一个列
alter table 表名 add 列名 数据类型 [约束] [default 默认值];
2、删除表中的一个列
alter table 表名 drop column 列名;
3、修改一个列
alter table 表名 modify 要修改的列名 数据类型 [约束] [default 默认值];
注意:修改列时,如果列有数据,不能直接修改列的数据类型,只能把它的长度增加,但不能减少。
4、增加一个约束(下文会总结到约束)
alter table 表名 add 表级约束语法;
-- 追加唯一约束
alter table 表名 add constraint 约束名 unique(列名)
-- 追加主键约束
alter table 表名 add constraint 约束名 primary key(列名[,列名])
-- 追加外键约束
alter table 表名 add constraint 约束名 foreign key(外键列) references 主表名(主表主键列)
-- 追加检查约束
alter table 表名 add constant 约束名 check(约束条件)
5、删除一个约束
alter table 表名 drop constraint 约束名;

删除—drop、truncate

DROP TABLE 表名;
TRUNCATE TABLE 表名;
delete处详细介绍了三者的区别

约束

按照建立时是否跟字段一同声明分两种:
1、行级约束:声明字段与字段属性的同时紧跟其后声明约束
2、表级约束:声明字段与字段属性之后,再单独声明约束
	格式:constraint 约束名 约束关键字(列名)
	举例:
			CONSTRAINT PK_INFO_NO PRIMARY KEY (INFO_NO), --主键
			CONSTRAINT fk_user_id FOREIGN KEY (USER_ID) REFERENCES user__tab(ID) ,-- 外键
			CONSTRAINT wy_phone UNIQUE(phone),-- 唯一
			CONSTRAINT ck_sex CHECK(sex IN ('男','女'))  --检查约束
注意:行级约束是系统默认生成一个约束名,表级约束是自定义约束名。
约束分为六大类
	主键约束(PRIMARY KRY)
	唯一性约束(UNIQUE)
	非空约束(NOT NULL)
	外键约束(FOREIGN KEY)
	检查约束(CHECK)
	默认约束(Default1、主键约束(PRIMARY KRY) --保证表中每一行数据都具有唯一标识符,并且该标识符不能为 NULL
	添加主键约束会自动创建索引;
	多列组成的主键叫联合主键,而且联合主键约束只能设定为表级约束;
	单列组成的主键,既可设定为列级约束,也可以设定为表级约束。
2、唯一性约束(UNIQUE--保证表中某一列的值是唯一的,不可以重复
3、非空约束(NOT NULL--保证表中某一列的值不可以为 NULL
	not null是唯一个行级约束,不能写成表级约束;
	建表时候若使用 default 关键字指定了默认值,则不能输入。
4、外键约束(FOREIGN KEY----用于在两个表之间建立关系,保证从属表中的外键值必须与主表中的主键值相匹配
	外键约束的子表中的列和对应父表中的列数据类型必须相同,列名可以不同;
	当一个主表中的主键被另一个表进行外键约束后,不可以直接删除主表的主键。
	注意:当主表的主键被另一个表进行外键约束后,想要直接删除主表的主键会直接报错,解决办法如下
		(第一种)首先删除原来的外键,然后添加外键,强制设为null,在这种情况下,当我们再次删除主表中主键列的值时不会报错,对应外键表中的外键列位置为空。
		举例:
		-- 删除原来的外键
		ALTER TABLE USER_ORDER DROP CONSTRAINT SYS_C0011303;
		-- 添加外键  强制设为null
		ALTER TABLE USER_ORDER ADD CONSTRAINT FK FOREIGN KEY(USER_ID)REFERENCES USER_TABLE(USER_ID) ON DELETE SET NULL;
		(第二种)首先删除原来的外键,然后添加外键,设为级联删除,在这种情况下,当我们再次删除主表中主键列的值时不会报错,对应外键表中的一整行将会被删除。
		-- 删除原来的外键
		ALTER TABLE USER_ORDER DROP CONSTRAINT FK;
		-- 添加外键  级联删除
		ALTER TABLE USER_ORDER ADD CONSTRAINT FK FOREIGN KEY(USER_ID)REFERENCES USER_TABLE(USER_ID) ON DELETE CASCADE;
5、检查约束(CHECK--用于限制表中某一列的取值范围,可以使用表达式或函数来定义
	检查约束可用来实施一些简单的规则,比如列值必须在某个范围内。检查的规则必须是一个结果为 truefalse的表达式
6、默认约束(Default--用于指定在表中插入新行时某一列的默认值

注释

comment on table 表名 is ‘注释’;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值