从表里删除数据

  DELETE 命令用于从表里删除整行数据。它不能删除某一列的数据,而是删除行里全部字段的数据。使用 DELETE 语句一定要谨慎,因为它一向很有效。
一、删除数据操作
        语法:DELETE FROM 表名 WHERE 删除条件;
        叙述:此语句删除表中的行,如果不带 WHERE 子句,则删除整个表中的记录,但是表不被删除。
        注意:我们几乎不会使用没有 WHERE 子句的 DELETE 语句。
        例1:删除student表中的所有年龄小于18岁的记录:
             delete from student where sage<18;
        例2:将 Store_Information 表里有关 Los Angeles 的资料全部去除:
             DELETE FROM Store_Information WHERE store_name = "Los Angeles"
        现在 Store_Information 表的内容变成:
        store_name  Sales  Date 
        San Diego  $250  Jan-07-1999 
        Boston   $700  Jan-08-1999 
       例3:删除 stu 表中所有 score 字段小于60的记录:
            DELETE FROM stu WHERE score<60;
      如果没有指定条件,即 WHERE score<60,那么将会删除数据库中所有记录:DELETE  FROM  stu;
      这时候 stu 表将变成空白的一张表。
二、清空数据表 
    有时候我们会需要清除一个表格中的所有资料。要达到这个目的,一种方式是我们在上一页看到的 DROP TABLE 指令。不过这样整个表格就消失,而无法再被用了。另一种方式就是运用 TRUNCATE TABLE 的指令。在这个指令之下,表格中的资料会完全消失,可是表格本身会继续存在。
        语法: TRUNCATE TABLE  表名;
        例:清除顾客信息表里的全部数据:
        TRUNCATE TABLE customer;
三、SQL脚本的导入导出
    1、导入 SQL 脚本
        1)Mysql 导入数据库
        创建用户 : GRANT ALL PRIVILEGES ON *.* TO '用户名'@'localhost' IDENTIFIED BY '用户名' WITH GRANT OPTION;
        创建数据库 : create database 数据库名;
        导入数据库 : mysql  -u用户名  -p密码  数据库名 < 文件名.sql
        2)Navicat for MySQL 导入数据库
        在软件 Navicat for MySQL 中创建一个新的 database,右键点击此 database,从 menu 中选择“运行SQL文件”(如下图所示),输入脚本文件的路径,导入SQL脚本。
          
    2、导出 SQL 脚本
        1)Mysql 导出数据库
        导出数据库 :mysql  -u用户名  -p密码  数据库名 > 文件名.sql
        2)Navicat for MySQL 导出数据库
        选中要导出的 database,点击右键,从 menu 中选择“转储SQL文件”(如下图所示),输入脚本文件的存储路径,导出SQL脚本。
          

【参考资料】
  W3school 在线SQL教程   http://www.w3school.com.cn/sql/sql_delete.asp  SQL DELETE 语句

课后练习:
        1. 在前面创建的 PLAYERS 表里,把 Ron Hammer 的记录删除,用 Al Knotgood 替换他。 
        2. 在前面创建的员工表 employee 表里:
            1)删除表里名称为'zs'的记录;
            2)删除表里所有记录;
            3)使用 truncate 删除表中记录。
        3. 使用具有如下结构的表 EMPLOYEE_TBL:
 Column       data type      not null
 Last_name      varchar2(20)       not null
 First_name       varchar2(20)       not null
 Ssn             char(9)            not null
 Phone           number(10)        null

 LAST_NAME    FIRST_NAME SSN          PHONE
 SMITH          JOHN            312456788    3174549923
 ROBERTS       LISA             232118857    3175452321
 SMITH          SUE             443221989    3178398712
 PIERCE          BILLY           310239856    3176763990
        下列语句运行后会有什么结果?
 a.
 insert into employee_tbl
 ('JACKSON' , 'STEVE' , '313546078' , '3178523443');
 b.
 insert into employee_tbl values
 ('JACKSON' , 'STEVE' , '313546078' , '3178523443');
 c.
 insert into employee_tbl values
 ('MILLER' , "DANIEL , '230980012' , NULL);
 d.
 insert into employee_tbl values
 ('TAYLOR' , NULL , '445761212' , '3179221331');
 e.
 delete from employee_tbl ;
 f.
 delete from employee_tbl
 where last_name='SMITH';
 g.
 delete from employee_tbl
 where last_name='SMITH'
 and first_name='JOHN';
 h.
 update employee_tbl
 set last_name='CONRAD';
 i.
 update employee_tbl
 set last_name='CONRAD'
 where last_name='SMITH';
 j.
 update employee_tbl
 set last_name='CONRAD',
 first_name='LARRY';
 k.
 update employee_tbl
 set last_name='CONRAD',
 first_name='LARRY'
 where ssn='313546078';
        4. 创建 pet 表:
 CREATE TABLE pet
 (name  CHAR(30),
 owner  CHAR(30),
 species  CHAR(10),
 sex  ENUM("M","F")  NOT NULL,
 birth  DATE,
 death  DATE );
        填充表里数据如下:
 Fluffy Harold cat F 1993-02-04 NULL
 Claws Gwen cat M 1994-03-17 NULL
 Buffy Harold dog F 1989-05-13 NULL
 Chirpy Gwen bird F 1998-09-11 NULL
 Fang Benny dog M 1990-08-27 NULL
 Bowser Diane dog M 1990-08-31 1995-07-29
 Whistler Gwen bird NULL 1997-12-09 NULL
 Slim Benny snake M 1996-04-29 NULL
 Puffball Diane hamster F 1999-03-30 NULL 
      要求:
         1)将 Whistler 的 sex 改为 M;
         2)将 Fang 的 death 改为 2002-05-28;
         3)删除 cat Claws 的记录;
         4)删除 Benny 的宠物的记录;
         5)删除所有 snake 的记录;
         6)清空 pet 表。
         5. 导入练习脚本 learnsql.sql,使用其中的表 PRODUCTS_TBL 进行下面的练习。
        向产品表添加如下产品:
 PROD_ID   PROD_DESC            COST
 301          FIREMAN COSTUME        24.99
 302           POLISEMAN COSTUME      24.99
 303           KIDDIE GRAB BAG           4.99
        要求:1)修改所添加的前两种服装的价格,它们应该与witch costume 同价。
              2)现在要缩减产品线,首先对新产品下手。删除刚刚添加的3种产品。
              3)在执行DELETE语句之前,有什么办法可以用来确定所删除的数据准确无误呢?
        6. 写出 SQL语句的格式 : 插入,更新,删除;
 创建表 User 并填充数据如下:
 Name       Tel   Content       Date
 -----------------------------------------------------------
 张三  13333663366  大专毕业    2006-10-11
 张三  13612312331  本科毕业    2006-10-15
 张四  021-55665566  中专毕业    2006-10-15
 完成下面的练习:
 1) 有一新记录(小王 13254748547 高中毕业 2007-05-06),请用SQL语句新增至表中。
 2) 把张三的时间更新成为当前系统时间。
 3) 删除名为张四的全部记录。