1.       DML简介


DML含义

DML,全称为Data Manipulation Language,即数据操作语言,主要用于检索或者操作数据库中的数据。

与前一节文章中介绍的DDL不同,DDL是用于创建或者删除数据库对象的,而DML并不是对数据对象做的操作,只是对数据库中的记录进行相关的操作而已,操作的对象是数据。

 

DML范围

DML主要是对数据库中的表中的数据进行的相关操作,主要包含以下几个方面的操作:。

SELECT:用于检索数据;

INSERT:用于增加数据到数据库;

UPDATE:用于从数据库中修改现存的数据

DELETE:用于从数据库中删除数据。

其中,INSERT、UODATE和DELETE操作都是事务相关的,即这些操作之后是必须提交事务的,提交事务之后相关的修改才可以生效;而SELECT只是用于检索数据,并不涉及事务处理。

本文中主要介绍INSERT、UODATE和DELETE这几种操作,SELECT操作后续继续介绍。

 

 


2.       增删改


数据库的基本对象是表,表是存储数据的基本单元,对表的操作主要包括增、删、改、查这几个部分。本节主要介绍增删改这三部分的内容,后续将继续介绍查询相关的知识。

SQL中的增、删、改均是涉及到事务处理的,因此相关操作之后,要想使记录修改生效,就必须提交事务处理,SQL中提交事务使用COMMIT语句,后边也会较少提交事务的两种方式。

 

新增INSERT

如何向数据库中的表添加记录?SQL中主要是通过INSERT语句来完成的,常用的INSERT方式有一下两种:

a. 直接使用INSERT  VALUES脚本,具体语法格式如下:

INSERTINTO <TABLE_NAME>
  (<COLUMN_LIST>)
VALUES
  (<VALUE_LIST>);

 其中,TABLE_NAME需要插入数据的数据表的表名;COLUMN_LIST是数据库表中的列;VALUE_LIST是对应的需要插入的数据信息,与数据库列信息一一对应。

此处列举一个新增的示例:

INSERTINTO CUX_SQL_LEARN
  (ID,CLASS_NAME)
VALUES
  (1,'测试1');

上述脚本的执行之后变回向表 CUX_SQL_LEARN中新增一条ID为“1”,CALSS_NAME为“测试1”的记录,但是没有提交事务处理,并不会永久的存储在数据库中。要想使记录修改生效,则必须提交事务处理,可以使用一下脚本:

INSERTINTO CUX_SQL_LEARN
  (ID,CLASS_NAME)
VALUES
  (1,'测试1');
COMMIT;

b. 使用INSERT  SELECT 的形式来新增记录,具体的语法格式如下:

INSERTINTO < A_TABLE_NAME >
  (< COLUMN_LIST >)
  SELECT < ITEM_LIST > FROM < B_TABLE_NAME >
WHERE < WHERE_CLAUSE >;

A_TABLE_NAME:需要插入数据的表语法说明:

COLUMN_LIST:需要插入的数据列

B_TABLE_NAME:选取数据的数据表

ITEM_LIST:从B_TABLE_NAME中选取的与COLUMN_LIST对应的数据信息

WHERE_CLAUSE:需要筛选数据的数据表B的过滤条件,可根据实际需要添加或修改

实际使用示例为:

INSERTINTO CUX_SQL_LEARN
  (ID, CLASS_NAME)
  SELECT1, '测试2'FROM DUAL;
COMMIT;

INSERT  SELECT和INSERT VALUES脚本的区别: 

INSERT VALUES:一次新增一条记录,插入多条记录的时候需要执行多次;

INSERT SELECT:一次可以新增一条或者多条记录,使用比较灵活。

 

删除DELETE

如果要对表中的数据进行删除操作,则需要使用DELETE语句。具体的语法格式为:

DELETE <TABLE_NAME>
 WHERE <WHERE_CLAUSE>;
COMMIT;--执行COMMIT之后才能使删除脚本生效

WHERE_CLAUSE:需要删除的数据的过滤条件,不添加条件的话整个表的数据都会被删除,因此操作的时候需要注意,避免删除不必要的数据,造成业务数据的丢失。TABLE_NAME:需要删除数据的数据表

 

 

修改UPDATE

对数据库中的数据进行修改,则需要使用UPDATE语句。常用的UPDATE语句也有两种形式,具体如下:

a. UPDATE语句

UPDATE <TABLE_NAME>
   SET <COLUMN_ASSIGNMENT>
 WHERE <WHERE_CLAUSE>;

COLUMN_ASSIGNMENT:修改修改的列信息,多个列之间用“,”隔开TABLE_NAME:需要修改的表名

WHERE_CLAUSE:需要修改的数据的过滤条件,不添加条件则整个表中的记录都会被修改

实际示例:

UPDATE CUX_SQL_LEARN N
 SET N.CLASS_NAME = '测试修改'
WHERE N.ID = 1;
COMMIT;

脚本修改说明:将CUX_SQL_LEARN中的Id为“1”的记录的CLASS_NAME修改为“测试修改”,修改后直接COMMIT使修改生效。

b. SELECTFOR UPDATE形式

该种形式的修改脚本主要在PSQL窗口中使用较多,其他SQL客户端中可根据实际情况考虑使用。

postgresql怎么修改数据库的所有者 plsql修改数据库数据_SQL


增删改的相关知识到此基本结束,本文只是介绍了简单的语法知识和简单的示例信息,具体如何使用还需要在日后的学习和工作中逐渐积累,才能不断的提高和深入了解。

 

 


3. 附录


 

附录

a. 本系列教程为个人原创,基于实际工作中的使用情况及个人理解,仅供学习交流之用,有不足之处还望批评指正,希望共同提高

b. 本节示例中的CUX_SQL_LEARN的建表脚本如下:

-- Create table
createtable CUX_SQL_LEARN
(
  ID         NUMBERnotnull,
  CLASS_NAME VARCHAR2(1000)
);