part5. 增删改 | 表操作

2018-12-28  本文已影响0人  katelin

第15课 插入数据

INSERT INTO:插入一行数据

INSERT INTO 表名 Values(值);
#使用这种方法,可省略某些列,省略的列必须满足允许NULL值或在表定义中给出默认值
INSERT INTO 表名(列名) VALUES(值);

INSERT INTO SELECT:插入多行数据

# 可插入多行
INSERT INTO Customers(cust_id, cust_contact)
SELECT cust_id, cust_contact
FROM CustNew;

SELECT INTO:从一个表复制到另一个表:

#创建一个名为CustCopy的新表,并把Customers表的整个内容复制到新表中,要只想复制部分列,可明确给出列名,而不是使用*
SELECT *
INTO CustCopy
FROM Customers;
MySQL语法:
CREATE TABLE CustCopy AS
SELECT * FROM Customers;

使用SELECT INTO注意:
1 任何SELECT选项和子句都可以使用,包括WHERE和GROUP BY
2 可利用联结从多个表插入数据
3 不管从多少个表中检索数据,数据都只能插入到一个表中

第16课 更新和删除数据

更新

UPDATE Customers
SET cust_contact='Sam Roberts',
    cust_email='sam@toyland.com'
WHERE cust_id='1000000006';
#删除某个列的值,可设置为NULL
UPDATE Customers
SET cust_email=NULL
WHERE cust_id='1000000005';

空字符串用' '表示,是一个值,而NULL表示没有值

删除数据

从表中删除一行:

DELETE FROM Customers
WHERE cust_id='1000000006';

DELETE从表中删除整行,甚至是删除表中的所有行,而不删除列。
要删除指定的列,请使用UPDATE语句。
DELETE不删除表本身。
要删除表中的所有行,可使用TRUNCATE TABLE语句

更新和删除的指导原则

  1. 如果不是打算更新和删除每一行,不要使用不带WHERE子句的UPDATE或DELETE
  2. 保证每个表都有主键,尽可能像WHERE子句那样使用它
  3. 先用SELECT进行测试,保证过滤的是正确的记录
  4. 使用强制实施引用完整性的数据库,这样DBMS将不允许删除其数据与其他表相关联的行。
  5. 有的DBMS允许数据库管理员施加约束,防止执行不带WHERE子句的UPDATE或DELETE语句,DBMS支持这个特性的话应该使用。

第17课 创建和操纵表

创建表

  1. CREATE TABLE创建表,必须给出下列信息:
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
);

对于MySQL,varchar必须替换为text

  1. NULL/ NOT NULL:
    不指定NOT NULL,多数DBMS认为指定的是NULL
    只有不允许NULL值的列可作为主键,允许NULL值的列不能作为唯一标识
    空字符串是一个有效的值,不是NULL。

  2. DEFAULT:
    quantity INTEGER NOT NULL DEFAULT 1;
    默认值经常用于日期或时间戳列:
    MySQL:DEFAULT CURRENT_DATE()
    Oracle:DEFAULT SYSDATE
    SQL Server:DEFAULT GETDATE()

更新表

使用ALTER TABLE应在改动前做表结构和数据完整的备份

ALTER TABLE Vendors
ADD vend_phone CHAR(20);
ALTER TABLE Vendors
DROP COLUMN vend_phone;

删除表

DROP TABLE CustCopy;
上一篇 下一篇

猜你喜欢

热点阅读