MySQL 数据操纵语言(DML)

来源:互联网 发布:王子文身高知乎 编辑:程序博客网 时间:2024/04/28 09:24

数据操纵语言主要用来处理数据库中的数据内容。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 表示如果不符合合并条件,则执行插入。

0 0
原创粉丝点击