6. SQL—操作数据

数据操作语句 - INSERT 语句

INSERT 语句允许你向数据库中输入数据 它有两种写法:INSERT VALUES 和 INSERT SELECT

插入一条数据(数据量不大)
INSERT INTO 
table_name 
(
    col1, col2...
) 
VALUES 
(
    value1, value2...
)

注意:
该语句的作用是向表中加以一个新的记录,
其数值为你所指定的数值 ,
使用该语句向表中插入数据时,
你必须遵循以下三条规则:

1. 你所要插入的数值与它所对应的字段
   必须具有相同的数据类型
2. 数据的长度必须小于字段的长度 
   例如 
   你不能向一个长 40 个字符的字段中插入
    一个长 80 个字符的字符串
3. 插入的数值列表必须与字段的列表相对应
   (也就是说第一个数值在第一个字段,
    第二个数值在第二个字段)
    
    
INSERT 
INTO 
COLLECTION 
(
    ITEM, WORTH, REMARKS
)
VALUES
(
    'SUPERMANS CAPE', 250.00, 'TUGGED ON IT'
)    

分析:
INSERT 语句并不需要列的名字,
如果列的名字没有给出,
SQL 会把数据添入对应的列号中.
也就是说,
SQL 会把第一个值插入到第一列中,
会把第二个值插入到第二个列中,
以此类推.





1. 插入空值

当一个列被创建以后,
它可能一定的规则限制, 
其中之一就是它应该或不应该 
包含空值的存在. 
空值的意思就是该处数值为空,但不是零 — 这属于整数范畴, 
或是空格 — 这属于字符串范畴, 
而是说在空值处根本就没有数据存在, 
如果列被定义为 NOT NULL, 
这时列中不允许有空值存在 ,
则当你使用 INSERT 语句时必须在此列插入一个数值, 
如果你违反了这个规则, 
那么你将收到一个错误的信息.

2. 插入唯一值

INSERT INTO 
 COLLECTION 
 VALUES
 ('STRING', 50, 'MORE STRING');
 
 
 IF NOT EXISTS 
 (
     SELECT * FROM
     COLLECTION 
     WHERE 
     NAME = 'STRING'
 )
	INSERT INTO 
     COLLECTION 
     VALUES
     (
         'STRING', 50, 'MORE STRING'
     )
     
       
3. INSERT SELECT 语句

INSERT VALUE 语句在向表中插入几个数据的时候非常有用,但显然这是不够的,如果你想向表中插入 25,000 行数据时怎么办?

在这种情况下 INSERT SELECT 语句就非常有效, 它允许程序员拷贝一个或一组表的信息到另外一个表中。


insert into 
tmp_tbl
select * from table;
 
可以将所有的数据都插入到一个临时表中

注意:
并不是所有的数据库管理系统都支持临时表。


语法:
INSERT INTO table_name 
(col1, col2...)
SELECT 
col1, col2... 
FROM tablename 
WHERE search_condition

分析:
本质上说它是一个 SELECT 语句的输出结果
再输入到另外一个表格中去,
在 INSERT VALUE 中的规则也适用于 INSERT SELECT 语句.


如果想把表 COLLECTION 中的内容复制到
另一个叫 INVENTORY 的表中去.

语句如下:

 INSERT INTO 
 INVENTORY 
 (
     ITEM, COST, REMARKS
 )
 SELECT 
 ITEM, WORTH, REMARKS
 FROM 
 COLLECTION;


INSERT SELECT 语句要求你遵循如下规则:

1.SELECT 语句不能从被插入数据的表中选择行.
2.INSERT INTO 中的列数必须与 SELECT 语句返回的列数相等.
3.INSERT INTO中的数据类型要与 SELECT 语句返回的数据类型相同.



INSERT SELECT 语句的另外一个用处是:
当你需要对表进行重新定义时对表进行备份,
这时需要你通过选择原始表中的所有数据,
并将其插入到一个临时表中来完成.


UPDATE 语句

该语句的作用是将已存在的记录的内容改变。


语法格式:
UPDATE table_name SET 
columnname1 = value1 [, columname2 = value2]...
WHERE search_condition

UPDATE 语句首先要检查 WHERE 子句,
对于符合 WHERE 子句条件的记录
将会用给定的数据进行更新.


UPDATE 
COLLECTION 
SET 
WORTH = 900 
WHERE ITEM = 'STRING';

对多个记录进行更新操作:

update 
collection 
set 
worth = 900, 
item = ball 
where 
item = 'STRING';


注:
如果你在 UPDATE 语句中没有使用 WHERE 子句,
那么所有给定表中的记录都会被更新.


一些数据库管理系统对标准的 UPDATE 语句进行了扩展,
SQL SERVER 的 Transact-SQL 
就是它们中的一个例子,
它允许使用 FROM 子句,
实现对给定表的记录用其它表中的数据来进行更新操作.

UPDATE table_name SET 
columnname1 = value1 [, columname2 = value2]...
FROM 
table_list 
WHERE search_condition

 UPDATE 
 COLLECTION 
 SET 
 WORTH = WORTH * 0.005;

分析:

该语法在当给定表需要更新的内容
源自于其它多个表的时候非常有用,
切记该语法不是标准语法,
在使用它之前请先查看一下你所使用的数据库的文档,
看一看它是否为你的数据库系统所支持.

UPDATE 语句也可以用一个数学运算式的结果
来对给定数据进行更新操作,
当使用这项技术时,
必须注意你所使用的表达式结果
与需要更新的数据字段为同一种数据类型.
而且其长度也要与被更新字段的定义长度相符.

当使用计算值时可能会有两个问题产生:
截断和溢出

eg:

例如当将一个小数转换为整数时,
可能会有截断的情况产生;
而当计算的结果超过了该字段的定义数据长度时,
会导致溢出,
这会使你的数据库返回一个错误.


DELETE 语句

与向数据库中加入数据相对应,你可能需要删除数据库中的数据 。


语法格式:

DELETE FROM 
tablename 
WHERE 
condition;

注:
对于 DELETE 命令你需要注意的第一件事
就是它不会出现确认提示;
当你用 SQLDELETE 命令删除记录时,
它确实已经执行了删除操作.

通过 DELETE 语句和 WHERE 子句 
DELETE 语句可以完成下边的工作:

1.删除单一的行
2.删除多个行
3.删除多个行
4.什么也不删除


在使用 DELETE 语句时需要注意以下几点:

1.DELETE 不能删除个别的字段,它对于给定表只能整个记录整个记录地删除.
2.INSERTUPDATE 一样,删除一个表中的记录可能会导致与其它表的引
用完整性问题,当对数据库进行修改时一定在头脑中有这个概念.
3.DELETE 语句只会删除记录,不会删除表,如果要删除表需使用 DROP TABLE
命令.



eg:
如何删除 COLLECTION 表中的 WORTH小于 275 的所有记录.

 DELETE FROM
 COLLECTION 
 WHERE 
 WORTH < 275;


注:
与 UPDATE 语句一样,
如果你省略了 WHERE 子句,
那么表中的所有记录都会被删除.


eg:
使用三种数据操作语句来完成一个数据操作过程

INSERT INTO 
COLLECTION 
VALUES
(
    'CHIA PET', 5,'WEDDING GIFT'
);


INSERT INTO 
COLLECTION
VALUES
(
    'TRS MODEL III', 50, 'FIRST COMPUTER'
);


建立一个新表并向其中复制数据:
CREATE TABLE 
TEMP 
(
    NAME CHAR(20), VALUE NUMBER, REMARKS CHAR(40)
);


INSERT INTO 
TEMP(NAME, VALUE, REMARKS)
SELECT 
ITEM, WORTH, REMARKS 
FROM 
COLLECTION;


改变其中的数值:

UPDATE 
TEMP 
SET 
VALUE = 100 
WHERE 
NAME = 'TRS MODEL III';

UPDATE 
TEMP 
SET 
VALUE = 8 
WHERE 
NAME = 'CHIA PET';

然后将这些数据更新回原始表中:
INSERT 
COLLECTION 
SELECT * FROM 
TEMP
DROP TABLE 
TEMP;

分析:
CREATE TABLE 会按照你给的格式建立一个新表,DROP TABLE 则会删除表, 
切记 DROP TABLE 会删除表,DELETE 只会删除表中的记录.


总结

SQL 对于操作数据提供了三条语句。

INSERT 语句有二个变体 INSERT VALUES 可以插入一个记录;而 INSERT SELECT,则可以根据给定的一个或多个表来插入一个或多个记录 SELECT 语句可以归并多个表,并把归并的结果加入到另外一个表中。

UPDATE 语句可以改变符合条件列的值 UPDATE 语句可以用计算或表达式的结果作为需要更新的内容;

DELETE 语句是这三个语句中最简单的,它会删除符合 WHERE 条件的所有记录,如果没有 WHERE 子句,它会删除表中的所有记录。

现代的数据库系统提供了许多的数据库操作的工具,其中一些工具可以让开发人员从外部数据源中导入或导出数据,这在当数据库向大系统或小系统上移植时非常有用 Microsoft Access Microsoft 和 Sybase 的 SQL Server 以及 Personal Oracle7 都提供了这样的移植工具。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值