数据操纵语言主要用来处理数据库中的数据内容。DML允许用户对数据库中的数据进行查询、插入、更新和删除等操作。
基本命令:
INSERT;
UPDATE;
DELETE;
MERGE.
1、INSERT命令用于向一个已有的表插入新行
创建表的目的是利用表来存储和管理数据。实现数据存储的前提是向表中插入数据。
1.1 把数据插入到表
INSERT INTO table_name VALUES(‘value1’,’value2’,…);
列名可以省略,当省略列名时,默认是表中的所有列名,列名顺序为表定义中列的先后顺序;
VALUES列里包含表里的每一列,每个值之间是以逗号分隔的;
当某列的数据类型是字符、日期和时间数据类型的值必须以单引号包围,而数值或NULL值就不必了;
值的数量与顺序要与列名的数量与顺序一致,值的类型与列名的类型一致。
1.2 给表里指定列插入数据
INSERT INTO TABLE_NAME(‘column1’,’column2’) VALUES (‘VALUE1’,’VALUE2’);
1.3 从另一个表里插入数据
INSERT 和SELECT语句的组合可以实现;
INSERT INTO TABLE_NAME [(‘columns’,’column2’)] SELECT [*|(‘column1’,’column2’)] FROM TABLE_NAME;
1.4 插入NULL值
INSERT INTO TABLE_NAME VALUES (‘column1’,NULL ,’column2’)
NULL值对应字段的正确位置上。
2、UPDATE修改现有数据
UPDATE语句用于更新或修改满足条件的现有记录。
2.1 更新一列的数据
UPDATE table_name SET column_name = expression [where condition];
2.2 更新一条或多记录里的多个字段
update table_name set column1=’value’,
[column2=’value2’]
[where condition]
只有一个SET,但是有多个列,每列之间以逗号分隔
2.3 从另一个表里更新
将scott.emp表中编号为7389的员工工作类型改为与编号7920员工的工作相同。
UPDATE scott.emp
SET job=(SELECT job FROM scott.emp WHERE empno = 7920)
WHERE empno=7389;
3、DELETE 从表里删除数据
DELETE命令用于从表里删除整行数据,它不能删除某一列的数据,而是删除行里的全部字段,所以要谨慎使用。
DELETE FROM table_name [WHERE condition];
与删除命令TRUNCATE的区别是:
DELETE命令是逻辑删除,将要删除的行加上删除标记,被删除后可以使用ROLLBACK命令回滚,删除操作时间较长;
TRUNCATE TABLE命令是物理删除,将表中数据永久删除,不能回滚删除操作快。
DELETE命令包含WHERE子句,可以删除表中的部分行;TRUNCATE TABLE 命令只能删除表中所有行。
4.合并表
MERGE语句可以指定两个表进行合并操作,其语法如下:
MERGE INTO table1_name
USING table2_table ON join_condition
WHEN MATCHED THEN UPDATE SET …
WHEN NOT MATCHED THEN INSERT …. VALUES…
table1_name表示需要合并的目标表;
table2_name表示需要合并的源表。
join_condition 表示合并条件;
WHEN MATCHED THEN UPDATE 表示如果符合合并条件,则执行更新操作;
WHEN NOT MATCHED THEN INSERT 表示如果不符合合并条件,则执行插入。