SQL基础教程4

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

1、VALUES子句指定具体的数据

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

--向表中插入一行数据
INSERT INTO ProductIns (product_id, product_name, product_type,
sale_price, purchase_price, regist_date) VALUES ('0001', 'T恤衫',
'衣服', 1000, 500, '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');

清单:将列名和值用逗号隔开,分别括在()内

列清单→ (product_id, product_name, product_type, sale_price, purchase_price, regist_date)

值清单→ ('0001', 'T恤衫', '衣服', 1000, 500,'2009-09-20')

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

插入NULL:INSERT 语句中想给某一列赋予 NULL 值时,可以直接在 VALUES 子句的值清单中写入 NULL。(前提:插入 NULL 的列不能设置 NOT NULL 约束,否则会出错,导致数据插入失败。)

插入默认值:DEFAULT 约束

--显式插入(推荐)
INSERT INTO ProductIns (product_id, product_name, product_type, 
sale_price, purchase_price, regist_date) VALUES ('0007', 
'擦菜板', '厨房用具', DEFAULT, 790, '2009-04-28');

--隐式方法
INSERT INTO ProductIns (product_id, product_name, product_type, 
purchase_price, regist_date) VALUES ('0007', '擦菜板', '厨房用具', 
790, '2009-04-28');

注:如果省略了没有设定默认值的列,该列的值就会被设定为 NULL。因此,如果省略的是设置了 NOT NULL 约束的列,INSERT 语句就会出错。

省略INSERT语句中的列名,就会自动设定为该列的默认值(没有默认值时会设定 为NULL)。

2、从其他表中复制数据:INSERT … SELECT 语句,可以在需要进行数据备份时使用

-- 将商品表中的数据复制到商品复制表中
INSERT INTO ProductCopy (product_id, product_name, product_type, 
sale_price, purchase_price, regist_date)
SELECT product_id, product_name, product_type, sale_price, 
purchase_price, regist_date
  FROM Product;

注:INSERT语句的SELECT语句中,可以使用WHERE子句或者GROUP BY子句等任何 SQL语法(但使用ORDER BY子句并不会产生任何效果)。

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

DROP TABLE 语句:将表完全删除

DELETE 语句:会留下表(容器),而删除表中的全部数据

DELETE语句的删除对象并不是表或者列,而是记录(行)。

--保留数据表,仅删除全部数据行
DELETE FROM <表名>;

--指定删除对象(搜索型DELETE)
DELETE FROM Product
 WHERE sale_price >= 4000;

注:

1、DELETE 语句中不能使用 GROUP BY、 HAVING 和 ORDER BY 三类子句,而只能使用WHERE 子句(原因:GROUP BY 和 HAVING 是从表中选取数据时用来改变抽取数据形式的, 而 ORDER BY 是用来指定取得结果显示顺序的)

2、TRUNCATE 

--只能删除表中全部数据
TRUNCATE <表名>;

TRUNCATE 只能删除表中的全部数据,而不能通过 WHERE 子句指定条件来删除部分数据。由于不能具体地控制删除对象, 所以其处理速度比 DELETE 要快得多。

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

-- 改变表中数据的UPDATE语句
UPDATE <表名>
   SET <列名> = <表达式>;

-- 更新部分数据行的搜索型UPDATE
UPDATE <表名>
   SET <列名> = <表达式>
 WHERE <条件>;

UPDATE Product
   SET regist_date = NULL
 WHERE product_id = '0008';

-- 多列更新
-- 使用逗号对列进行分隔排列
UPDATE Product
   SET sale_price = sale_price * 10,
       purchase_price = purchase_price / 2
 WHERE product_type = '厨房用具';

注:

1、可以将列更新为 NULL( NULL 清 空):将赋值表达式右边的值直接写为 NULL,但只限于未设置NOT NULL约束的列

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

九号会弹钢琴啊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值