SQL 的简单教程(Mac 下PostgreSQL 的安装与使⽤)(2)
四、数据更新
4-1 数据的插⼊( 语句的使⽤⽅法)使⽤INSERT语句可以向表中插⼊数据(⾏)。原则上,INSERT语句每 次执⾏⼀⾏数据的插⼊。将列名和值⽤逗号隔开,分别括在()内,这种形式称为清单。对表中所有列进⾏INSERT操作时可以省略表名后的列清单。插⼊NULL时需要在VALUES⼦句的值清单中写⼊NULL。可以为表中的列设定默认值(初始值),默认值可以通过在CREATE TABLE语句中为列设置 DEFAULT 约束来设定。
插⼊默认值可以通过两种⽅式实现,即在INSERT语句的VALUES⼦句中指定 DEFAULT 关键字(显式⽅法),或省略列清单(隐式⽅法)。
使⽤INSERT…SELECT可以从其他表中复制数据。
什么是 INSERT
INSERT 语句的基本语法
列清单的省略-- 创建ProductIns 表的CREATE TABLE 语句CREATE TABLE "public"."productins" ( "pr
oduct_id" char (4) COLLATE "pg_catalog"."default" NOT NULL , "product_name" varchar (100) COLLATE "pg_catalog"."default" NOT NULL , "product_type" varchar (32) COLLATE "pg_catalog"."default" NOT NULL , "sale_price" int4 DEFAULT 0, "purcha_price" int4, "regist_date" date , CONSTRAINT "productins_pkey" PRIMARY KEY ("product_id"));
1
2
3
4
5
6
7
8
9
围棋 英文10INSERT INTO <;表名> (列1, 列2, 列3, ......) VALUES (值1, 值2, 值3, ......);-- 向表中插⼊⼀⾏数据INSERT INTO ProductIns (product_id ,product_name ,product_type ,sale_price ,purcha_price ,regist_date ) VALUES ('0001', 'T 恤衫','⾐服', 1000, 500, '2009-09-20');-- 多次执⾏ INSERT 语句INSERT INTO ProductIns VALUES ('0002', '打孔器','办公⽤品', 500, 320, '2009-09-11');INSERT INTO ProductIns VALUES ('0003', '运动T 恤','⾐服', 4000, 2800, NULL );INSERT INTO ProductIns VALUES ('0004', '菜⼑','厨房⽤具', 3000, 2800, '2009-09-20');-- 多⾏INSERT(Oracle 以外)INSERT INTO ProductIns VALUES ('0002', '打孔器','办公⽤品', 500, 320, '2009-09-11'),('0003', '运动T 恤','⾐服', 4000, 2800, NULL ),('0004', '菜⼑','厨房⽤具', 3000, 2800, '2009-09-20');
1oneyear
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
插⼊ NULL
插⼊默认值
从其他表中复制数据
各种各样的 lect 语句-- 包含列清单INSERT INTO ProductIns (product_id , product_name , product_type , sale_price , purcha_price , regist_date ) VALUES ('0005', '⾼压锅', '厨房⽤具', 6800, 5000, '2009-01-15'); -- 省略列清单INSERT INTO ProductIns VALUES ('0005', '⾼压锅', '厨房⽤具', 6800, 5000, '2009-01-15');
1
2
3
4
5
6
7
dove8
9
10
11
12-- 向 purcha_price 列中插⼊ NULL INSERT INTO ProductIns (product_id ,product_name ,product_type ,sale_price ,purcha_price , regist_date ) VALUES ('0006', '叉⼦', '厨房⽤具', 500, NULL , '2009-09-20');
1
2
3
4
5
6-- 通过显式⽅法插⼊默认值 ---- 在 VALUES ⼦句中指定 DEFAULT 关键字INSERT INTO ProductIns (product_id , product_name , product_type , sale_price , purcha_price , regist_date ) VALUES ('0007', '擦菜板', '厨房⽤具', DEFAULT , 790, '2009-04-28');-- 通过隐式⽅法插⼊默认值 INSERT INTO ProductIns (product_id , product_name , product_type ,purcha_price , regist_date ) VALUES ('0007', '擦菜板', '厨房⽤具',790, '2009-04-28');
1
2
3
4
5
6
7
8
9
10
11
12-- 创建ProductCopy 表的CREATE TABLE 语句CREATE TABLE ProductCopy ( "product_id" int4 NOT NULL , "product_name" varchar (100) COLLATE "pg_catalog"."default" NOT NULL DEFAULT ''::character varying , "product_type" varchar (32) COLLATE "pg_catalog"."default" NOT NULL DEFAULT ''::character varying , "sale_price" numeric (10,2) NOT NULL DEFAULT 0, "purcha_price" numeric (10,2) DEFAULT NULL ::numeric , "regist_date" date , PRIMARY KEY ("product_id")); -- 从 Product 表中复制数据插⼊ ProductCopy 表中INSERT INTO ProductCopy (product_id , product_name , product_type , sale_price , purcha_price , regist_date )SELECT product_id , product_name , product_type , sale_price , purcha_price , regist_date FR
OM Product ;
1
2
3
4
5
cool fan
6
7
8
9
10
11
12
13
14
15
16
17
18
4-2 数据的删除(DELETE 语句的使⽤⽅法)如果想将整个表全部删除,可以使⽤ DROP TABLE 语句,如果只想删除 表中全部数据,需使⽤ DELETE 语句。
如果想删除部分数据⾏,只需在WHERE⼦句中书写对象数据的条件即可。 通过 WHERE ⼦句指定删除对象的 DELETE 语句称为搜索型 DELETE 语句。
DROP TABLE 语句和 DELETE 语句
不管使⽤哪种⽅法,删除数据时都 要慎重,⼀旦误删,想要恢复数据就会变得⼗分困难
chamonixDELETE 语句的基本语法
DELETE 语句常见错误
指定删除对象的 DELETE 语句(搜索型 DELETE)-- 创建ProductType 表的CREATE TABLE 语句CREATE TABLE "public"."producttype" ( "product_type" varchar (32) COLLATE "pg_catalog"."default" NOT NULL , "sum_sale_price" int4, "sum_purcha_price" int4, CONSTRAINT "producttype_pkey" PRIMARY KEY ("product_type"));-- 插⼊其他表中数据合计值的INSERT ... SELECT 语句INSERT INTO ProductType (product_type ,sum_sale_price ,sum_purcha_price )SELECT product_type ,SUM (sale_price ),SUM (purcha_price )FROM Product GROUP BY product_type ;
1
2
3
4
5
6
7
8
9
10
11
12
13
grow什么意思14
15-- DROP TABLE 语句可以将表完全删除-- DELETE 语句会留下表(容器),⽽删除表中的全部数据
1
2-- 保留数据表,仅删除全部数据⾏的 DELETE 语句DELETE FROM <;表名>;-- 清空 Product 表DELETE FROM Product ;
1
2
bodyshop
3
4
5
清空表–截断表
4-3 数据的更新(UPDATE 语句的使⽤⽅法)使⽤UPDATE语句可以更改(更新)表中的数据。
更新部分数据⾏时可以使⽤WHERE来指定更新对象的条件。通过WHERE ⼦句指定更新对象的 UPDATE 语句称为搜索型 UPDATE 语句。UPDATE 语句可以将列的值更新为 NULL。
同时更新多列时,可以在UPDATE语句的SET⼦句中,使⽤逗号分隔更
新对象的多个列。
UPDATE 语句的基本语法
指定条件的 UPDATE 语句(搜索型 UPDATE)DELETE FROM <;表名> WHERE <;条件>;-- 删除销售单价(sale_price)⼤于等于4000⽇元的数据DELETE FROM Product WHERE sale_price >= 4000;
1
2
3
4
5
6TRUNCATE
1UPDATE <;表名> SET <;列名> = <;表达式>;
1-- 更新部分数据⾏的搜索型 UPDATE UPDATE <;表名>SET <;列名> = <;表达式>WHERE <;条件>;-- 将商品种类为厨房⽤具的记录的销售单价更新为原来的 10 倍UPDATE Product SET sale_price = sale_price * 10WHERE product_type = '厨房⽤具';
1
2
3
4
5
城乡规划专业就业前景
6
7
8
9
使⽤ NULL 进⾏更新
多列更新
4-4 事务
事务是需要在同⼀个处理单元中执⾏的⼀系列更新处理的集合。通过使⽤ 事务,可以对数据库中的数据更新处理的提交和取消进⾏管理。事务处理的终⽌指令包括COMMIT(提交处理)和ROLLBACK(取消处 理)两种。DBMS的事务具有:
通常将这四种特性的⾸字母结合起来,统称为 ACID 特性。
什么是事务much too soon
创建事务-- 使⽤ UPDATE 也可以将列更新为 NULL(该更新俗称为 NULL 清空)。-- 将商品编号为8的数据(圆珠笔)的登记⽇期更新为 NULL UPDATE Product SET regist_date = NULL WHERE product_id = '8';
1
2
3
4
5-- 能够正确执⾏的繁琐的 UPDATE 语句-- ⼀条UPDATE 语句只更新⼀列 UPDATE Product SET sale_price = sale_price * 10 WHERE product_type = '厨房⽤具';UPDATE Product SET purcha_price = purcha_price / 2WHERE product_type = '厨房⽤具';-- 使⽤逗号对列进⾏分隔排列 UPDATE Product SET sale_price = sale_price * 10, purcha_price = purcha_price / 2WHERE product_type = '厨房⽤具';-- 将列⽤()括起来的清单形式 UPDATE Product SET (sale_price , purcha_price ) = (sale_price * 10, purcha_price / 2)WHERE product_type = '厨房⽤具';
1
2
3
4
5
6
考研考几天7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 原⼦性(Atomicity)、⼀致性(Consistency)、隔离性 (Isolation)和持久性(Durability)四种特性。
1在 RDBMS 中,事务是对表中数据进⾏更新的单位。
简单来讲,事务就是需要在同⼀个处理单元中执⾏的⼀系列更新处理的集合。
1
2