十7、插入数据数据库
一、 数据插入安全
关键词:INSERT工具
插入能够用如下几种方法使用:测试
二、 插入完整行索引
要求指定表名和被插入到新行中的值ip
例如:INSERT INTO customersci
VALUES(NULL,it
‘Pep E. LaPew’,email
‘100 Main Street’,语法
‘Los Angeles’,
‘CA’,
‘90046’,
‘USA’,
NULL,
NULL);
此例子插入一个新客户到表customers中。对每一个列必须提供一个值,某列没有值则要用NULL代替。这种语法很简单但不安全由于它高度依赖表中列的定义顺序,还依赖于其次序容易得到的信息。
编写INSERT语句的更安全的方法以下:
INSERT INTO customers(cust_name,
cust_address,
cust_city,
cust_state,
cust_zip,
cust_country,
cust_contact,
cust_eamil)
VALUES(‘Pep E. LaPew’,
‘100 Main Street’,
‘Los Angeles’,
‘CA’,
‘90046’,
‘USA’,
NULL,
NULL);
VALUES必须以其指定的次序匹配指定的列名,不必定按各个列出如今实际表中的次序
三、 插入多个行
可使用多条INSERT语句,甚至一次提交它们,每条语句用一个分号结束
例如:INSERT INTO customers(cust_name,
cust_address,
cust_city,
cust_state,
cust_zip,
cust_country)
VALUES(‘Pep E. LaPew’,
‘100 Main Street’,
‘Los Angeles’,
‘CA’,
‘90046’,
‘USA’);
INSERT INTO customers(cust_name,
cust_address,
cust_city,
cust_state,
cust_zip,
cust_country)
VALUES(‘M. Martian’,
’42 Galaxy Way’,
‘New York’,
‘NY’,
‘11213’,
‘USA’);
或者,只要每条INSERT语句中的列名(和次序)相同,能够以下组合各语句:
INSERT INTO customers(cust_name,
cust_address,
cust_city,
cust_state,
cust_zip,
cust_country)
VLAUES(
‘Pep E. LaPew’,
‘100 Main Street’,
‘Los Angeles’,
‘CA’,
‘90046’,
‘USA’),
(
‘M. Martian’,
’42 Galaxy Way’,
‘New York’,
‘NY’,
‘11213’,
‘USA’);
四、 插入检索出的数据
利用INSERT将一条SELECT语句的结果插入表中。这就是INSERT SELECT语句
例如:INSERT INTO customers(cust_id,
cust_contact,
cust_email,
cust_name,
cust_address,
cust_city,
cust_state,
cust_zip,
cust_country)
SELECT cust_id,
cust_contact,
cust_email,
cust_name,
cust_address,
cust_city,
cust_state,
cust_zip,
cust_country
FROM custnew;
INSERT SELECT 中SELECT语句可包含WHERE子句以过滤插入的数据。
十8、更新和删除数据
一、 更新数据
关键字:UPDATE
有两种方式使用UODATE:
基本的UODATE语句由三部分组成:
例如:更新客户10005的电子邮件地址
UPDATE customers
SET cust_email=’elmer@fudd.com’
WHERE cust_id = 10005;
UPDATE语句老是以要更新的表的名字开始。SET命令用来将新值赋给被更新的列。UPDATE语句以WHERE子句结束,它告诉MySQL更新哪一行。
更新多个列时只须要单个SET命令,每一个“列=值”对之间用逗号隔开(最后一列以后不用逗号)
例如:更新客户10005的电子邮件和姓名
UPDATE customers
SET cust_email = ‘elmer@fuss.com’,
Cust_name = ‘The Fudds’
WHERE cust_id = 10005;
二、 删除数据
关键字:DELETE
用两种方式使用DELETE:
例如:从customers表中删除一行:
DELETE FROM customers
WHERE cust_id = 10006;
若是省略WHERE子句,它将删除表中每一个客户
三、 更新和删除的指导原则
-除非确实打算更新和删除每一行,不然绝对不要使用不带WHERE子句的UPDATE和DELETE语句
-保证每一个表都有主键,尽量像WHERE子句那样使用它
-在对UPDATE或DELETE语句使用WHERE子句前,应该先用SELECT进行测试,保证它过滤的是正确的记录,以防编写的WHERE子句不正确
-使用强制实施引用完整性的数据库
十9、建立和操纵表
一、 建立表
通常有两种建立表的方式:
关键词:CREATE TABLE
为利用CREATE TABLE建立表,必须给出下列信息:
例如:建立customers表:
CREATE TABLE customers
(
cust_id int NOT NULL AUTO_INCREMENT,
cust_name char(50) NOT NULL,
cust_address char(50) NULL,
cust_city char(50) NULL,
cust_state char(5) NULL,
cust_zip char(10) NULL,
cust_country char(50) NULL,
cust_contact char(50) NULL,
cust_email char(255) NULL,
PRIMARY_KEY (cust_id)
) ENGINE=InnoDB;
NULL值就是没有值或缺值。容许NULL值的列也容许在插入行时不给出该列的值。不容许NULL值的列不接受该列没有值的行。
主键必须是惟一的。若是使用多个列做为主键,应以逗号分隔的列表给出各列名:
PRIMARY_KEY(order_num, order_item);
AUTO_INCREMENT的做用:AUTO_INCREMENT告诉MySQL,本列每当增长一行时自动增量。每次执行一个INSERT操做时,MySQL自动对该列增量,给该列赋予下一个可用的值。每一个表只容许一个AUTO_INCREMENT列,并且它必须被索引。
若是在插入行时没有给出值,MySQL容许指定此时使用的默认值。默认值用CREATE TABLE语句的列定义中的DEFAULT关键字指定:
quantity int NOT NULL DEFAULT 1,
二、 更新表
关键字:ALTER TABLE
使用方法:
-在ALTER TABLE以后给出要更改的表名
-所作更改的列表。
例如:给表添加一个列
ALTER TABLE vendors
ADD vend_phone CHAR(20);
删除刚刚添加的列,能够这样作:
ALTER TABLE vendors
DROP COLUMN vend_phone;
三、 删除表
删除表(删除整个表而不是其内容)很是简单,使用DROP TABLE语句便可
例如: DROP TABLE customers;
四、 重命名表
关键字:RENAME TABLE
例如:RENAME TABLE backup_customers TO customers,
backup_vendors TO vendors,
backup_products TO products;