十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;