标签:数据库、SQL
①INSERT的基本用法
INSERT INTO Customers
VALUES('1000000006',
'Toy Land',
'123 Any Street',
'New York',
'NY',
'11111',
'USA',
NULL,
NULL);
在VALUES子句中,必须给每一列提供一 个值。如果某列没有值,如上面
的cust_contact和cust_email列,则应该 使用NULL值(假定表允许对该列指定空值)。注意,VALUES的数 目都必须正确。
上面的SQL语句高度依赖于表 中列的定义次序,还依赖于其容易获得的次序信息。
编写INSERT语句的更安全(不过更烦琐)的 方法如下:
INSERT INTO Customers(cust_id,
cust_name,
cust_address,
cust_city,
cust_state,
cust_zip,
cust_country,
cust_contact,
cust_email)
VALUES('1000000006',
'Toy Land',
'123 Any Street',
'New York',
'NY',
'11111',
'USA',
NULL,
NULL);
②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。
插入多行的提示:INSERT通常只插入一行。要插入多行,必 须执行多个INSERT语句。INSERT SELECT是个例外,它可以用一 条INSERT插入多行,不管SELECT语句返 回多少行,都将被INSERT插入。
③SELECT INTO——从一个表复制到另一个表
说明:INSERT SELECT与 与SELECT INTO 它们之间的一个重要差别是前者导出数据,而后者导入数据。
SELECT *
INTO CustCopy
FROM Customers;
而在Oracle、MySQL中,语法稍有不同。
CREATE TABLE CustCopy AS
SELECT *
FROM Customers;
警告:不要省略WHERE子句,在使用UPDATE时一定要细心。因为稍不注 意,就会更新表中的所有行。
UPDATE Customers
SET cust_email = '[email protected]' ,
cust_email = '[email protected]'
WHERE cust_id = '1000000005';
警告:不要省略WHERE子句 子句 在使用DELETE时一定要细心。因为稍不注意,就会错误地删除表中所有行。
DELETE FROM Customers
WHERE cust_id = '1000000006';
CREATE TABLE Products ( prod_id CHAR(10) NOT NULL,
vend_id CHAR(10) NOT NULL,
prod_name CHAR(254) NOT NULL,
prod_price DECIMAL(8,2) NOT NULL,
prod_desc VARCHAR(1000) NULL,
quantity INTEGER NOT NULL DEFAULT 1)
注意这里创建表所使用的格式,还有最后一句使用了DEFAULT 1,这样就有了默认值。
DROP TABLE CustCopy;
这里列出不同的DBMS的不同的获得系统日期的函数。
DBMS | 函数/变量 |
---|---|
Oracle | SYSDATE |
Access | NOW() |
DB2 | CURRENT_DATE |
MySQL | CURRENT_DATE() |
PostgreSQL | CURRENT_DATE |
SQL Server | GETDATE() |
SQLite | date(‘now’) |
①添加新的列
ALTER TABLE Vendors
ADD vend_phone CHAR(20);
②删去一个列
ALTER TABLE Vendors
DROP COLUMN vend_phone;