SQL入门学习3-数据更新

时间:2024-01-16 14:45:38

4-1 数据的插入(INSERT语句的使用方法)

使用INSERT语句可以向表中插入数据(行)。原则上,INSERT语句背刺执行一行数据插入。

CREATE TABLE 和INSERT 语句,都可以设置默认值。使用DEFAULT 关键字,后面加一个常数。

语法:

INSERT INTO <表名> (列名1,列名2,列名3……) VALUES(值1,值2,值3……);

注意

表名后面的列清单要与VALUES子句中值中列的数量必须保持一致。且位置一一对应。

如果列清单中没有包括的列,那么新添加的记录中该列对应值就为NULL。

列清单的省略

对表进行全列INSERT时,可以省略表后面的列清单,这是VALUES子句的值就会默认从左到又的顺序赋给每一列。

插入NULL

INSERT语句想给某一列赋予NULL值时,可以直接在VALUES子句的值清单中写入NULL。若对应列有著名NOTNULL的约束,那么插入就会出错。

插入默认值

在CREATE TABLE 时,就可以设置插入的默认值了。

如果INSERT 语句没有给特定的项进行赋值,那么该值就会按照CREATE TABLE 时,所设置的默认值来进行赋值。没有默认值,则会设置成NULL。

或者在使用INSERT语句时,VALUES语句后面的值清单,直接使用DEFAULT关键字进行代替。

从其他表中赋值数据

例:

INSERT INTO Test2
SELECT name ,age, phone
FROM Test

注意

从其他表插入该表数据时,要注意插入的列的对应类型是否相同,且约束项是否匹配(最大字符串长度、类型、以及是否允许为空)

可以使用多个子句的SELECT语句。例如WHERE、HAVING 等。但使用ORDER BY不会产生任何效果。

4-2 数据的删除(DELECT语句的使用方法)

DELECT与DROP TABLE 语句有所区别。

  • DROP语句会直接删除整个表,不会保留数据。
  • DELECT语句会留下表,而删除表中的全部数据。

    但是同时会保留数据表,只需要通过INSERT语句就可以再次向表中插入数据。

语法:

  1. 保留数据表、仅删除全部数据行的DELECT 语句。
    DELECT FROM <表名> ;

指定删除对象的DELETE语句

使用WHERE子句,能够进行搜索出特定项,并进行删除。

语法:

DELETE FROM <表名>
WHERE <条件>;

注意

DELETE语句中不能使用GROUP BY、HAVING、ORDER BY 三类子句。

4-3 数据的更新(UPDATE语句的使用)

UPDATE语句,同样也属于DML语句,不需要把数据删除之后重新插入,只需要使用UPDATE语句就可以改变表中的内容。

基本语法:

UPDATE<表名>
SET<列名> = <表达式>;

搜索型UPDATE语句

在UPDATE语句中,可以使用WHERE子句进行筛选。

UPDATE智能去按列修改,所以要对改列特定的选项进行筛选。

语法:

UPDATE<表名>
SET <列名> = <表达式>
WHERE <条件> ;

多列更新

UPDATE 的SET 子句,支持同时将多个列作为更新对象。

使用逗号隔开,或者使用元组赋值形式.

例:

UPDATE Test
SET (name,age) = ('Myname' ,18+1)
WHERE phone = '15512341234' ;

4-4 事务

在RDBMS中,事务代表了对表中数据进行更新的单位,简单来说,事务就是需要在同一个处理单元中执行的一系列更新处理的集合。

创建事务

事务的语法:

事务开始语句:
DML 语句1;
DML 语句2;
DML 语句3;
……
事务结束语句;

常见的事务开始语句:

  • SQL Server、PostgreSQL

    BEGIN TRANSACTION
  • MYSQL

    START TRANSACTION

最后的结束语句:

COMMIT 或者为 ROLLBACK;

  • COMMIT

    COMMIT是提交事务包含的全部更新的结束指令。一旦提交,就无法恢复到事务开始前的状态。
  • ROLLBACK

    ROLLBACK是取消事务包含的全部更新处理的结束指令。

ACID特性

  • 原子性

    在事务结束时,要么全部被执行,要么全部不被执行。
  • 一致性

    指的是事务中包含的处理、要满足数据库提前设置的约束。例如主键约束或者NOT NULL 等。
  • 隔离性

    保证不同事务之间互不干扰。
  • 持久性

    事务一旦结束,DBMS会保证该时点的数据状态得以保存的特性。