美文网首页
part5. 增删改 | 表操作

part5. 增删改 | 表操作

作者: katelin | 来源:发表于2018-12-28 22:06 被阅读0次

    第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创建表,必须给出下列信息:
    • 新表的名字
    • 表列的名字和定义,用逗号分隔
    • 有的DBMS还要求指定表的位置
    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;
    

    相关文章

      网友评论

          本文标题:part5. 增删改 | 表操作

          本文链接:https://www.haomeiwen.com/subject/maptlqtx.html