MySQL之day3

  1. 数据的插入  

    1.  插入一行(可以 省略 列名)  且要求 行列数 严格一致

          插入格式:  insert into <表名> (列,...) values (值,...)

    2. mysql> insert into product values ('0009','电视机','家具',4000,3000,'2019-07-04',NULL);
      Query OK, 1 row affected (1.82 sec)
      
      mysql> select * from product ;
      +------------+--------------+--------------+------------+----------------+-------------+------+
      | product_id | product_name | product_type | sale_price | purchase_price | regist_date | co   |
      +------------+--------------+--------------+------------+----------------+-------------+------+
      | 0001       | T恤          | 衣服         |       1000 |            500 | 2009-09-20  | NULL |
      | 0002       | 打孔器       | 办公用品     |        500 |            320 | 2009-09-11  | NULL |
      | 0003       | 运行T恤      | 衣服         |       4000 |           2800 | NULL        | NULL |
      | 0004       | 菜刀         | 厨房用品     |       3000 |           2800 | 2009-09-20  | NULL |
      | 0005       | 高压锅       | 厨房用品     |       6800 |           5000 | 2009-01-15  | NULL |
      | 0006       | 叉子         | 厨房用品     |        500 |           NULL | 2009-09-20  | NULL |
      | 0007       | 砧板         | 厨房用品     |        880 |            790 | 2008-04-28  | NULL |
      | 0008       | 圆珠笔       | 办公用品     |        100 |           NULL | 2009-11-11  | NULL |
      | 0009       | 电视机       | 家具         |       4000 |           3000 | 2019-07-04  | NULL |
      +------------+--------------+--------------+------------+----------------+-------------+------+
      9 rows in set (0.00 sec)
      View Code
    3. 插入 null  要不能有 not null 数据类型格式 限制
    4. 插入 主键相同时 报错  
      mysql> insert into product values ('0009','电视机','家具',4000,3000,'2019-07-08',NULL);
      ERROR 1062 (23000): Duplicate entry '0009' for key 'PRIMARY'
    5. 省略 列名 时 会自动设定为该列的默认值 (默认值 会在 创建table 时 设置 ), 没有默认值设为 null , 且要 行列 数 严格一致
      1 mysql> insert into product (product_id , product_name , product_type , sale_price , regist_date,co) values ('0010','电视机2','家具',40000,'2019-07-05',NULL);
      2 Query OK, 1 row affected (0.11 sec)
      1 mysql> insert into product (product_id , product_name , product_type , sale_price , regist_date,co) values ('0011','电视机2','家具',40000,444,'2019-07-05',NULL);
      2 ERROR 1136 (21S01): Column count doesn't match value count at row 1 -- 行列数不一致
       1 mysql> insert into product (product_id,product_type , sale_price , regist_date,co) values ('0020','电视机2',40000,'2019-07-05',NULL);
       2 ERROR 1364 (HY000): Field 'product_name' doesn't have a default value
       3 mysql> select * from product;
       4 +------------+--------------+--------------+------------+----------------+-------------+------+
       5 | product_id | product_name | product_type | sale_price | purchase_price | regist_date | co   |
       6 +------------+--------------+--------------+------------+----------------+-------------+------+
       7 | 0001       | T恤          | 衣服         |       1000 |            500 | 2009-09-20  | NULL |
       8 | 0002       | 打孔器       | 办公用品     |        500 |            320 | 2009-09-11  | NULL |
       9 | 0003       | 运行T恤      | 衣服         |       4000 |           2800 | NULL        | NULL |
      10 | 0004       | 菜刀         | 厨房用品     |       3000 |           2800 | 2009-09-20  | NULL |
      11 | 0005       | 高压锅       | 厨房用品     |       6800 |           5000 | 2009-01-15  | NULL |
      12 | 0006       | 叉子         | 厨房用品     |        500 |           NULL | 2009-09-20  | NULL |
      13 | 0007       | 砧板         | 厨房用品     |        880 |            790 | 2008-04-28  | NULL |
      14 | 0008       | 圆珠笔       | 办公用品     |        100 |           NULL | 2009-11-11  | NULL |
      15 | 0009       | 电视机       | 家具         |       4000 |           3000 | 2019-07-04  | NULL |
      16 | 0010       | 电视机2      | 家具         |      40000 |           NULL | 2019-07-05  | NULL |
      17 +------------+--------------+--------------+------------+----------------+-------------+------+
      18 10 rows in set (0.00 sec)
      19 
      20 mysql>

       我想 更新 列定义 ,发现不行, 所以要在最开始就要 定义好数据类型, 默认值.

      mysql> alter table product add column sale_price integer default 0;
      ERROR 1060 (42S21): Duplicate column name 'sale_price'  --重复定义列
    6. 从其他表中复制数据 利用 select 语句 嵌入 insert 语句 , 还可以 使用 聚合函数在select中 
      insert into productCOPY_name  (列名 ,...) 
      select <列名>, ...    
      from <源table>
  2. 数据的删除  ----删除操作最好先备份

    1.   drop table <table_name>   语句       --会将表格完全删除即丢弃
    2.        delete from <table_name> 语句        --会留下表 ,即容器, 只删除全部数据
      1.   可以 使用 where <条件>   筛选  只删除部分
  3. 数据的更新

    1.   update <表名>  

           set <列名> = <条件>;

         where <条件>;  ---更新部分数据行 的搜索型 update 

      2.   清空为 null 只限制于 未设置 not null 的列

      3.  可以在 set 中使用 算术运算符

 1 mysql> update product
 2     -> set sale_price = sale_price*10, purchase_price = purchase_price/2  --MySQL 只可以使用这种格式
 3     -> where product_type='厨房用品';
 4 Query OK, 4 rows affected (0.14 sec)
 5 Rows matched: 4  Changed: 4  Warnings: 0
 6 
 7 mysql> select * from product;
 8 +------------+--------------+--------------+------------+----------------+-------------+------+
 9 | product_id | product_name | product_type | sale_price | purchase_price | regist_date | co   |
10 +------------+--------------+--------------+------------+----------------+-------------+------+
11 | 0001       | T恤          | 衣服         |       1000 |            500 | 2009-09-20  | NULL |
12 | 0002       | 打孔器       | 办公用品     |        500 |            320 | 2009-09-11  | NULL |
13 | 0003       | 运行T恤      | 衣服         |       4000 |           2800 | NULL        | NULL |
14 | 0004       | 菜刀         | 厨房用品     |      30000 |           1400 | 2009-09-20  | NULL |
15 | 0005       | 高压锅       | 厨房用品     |      68000 |           2500 | 2009-01-15  | NULL |
16 | 0006       | 叉子         | 厨房用品     |       5000 |           NULL | 2009-09-20  | NULL |
17 | 0007       | 砧板         | 厨房用品     |       8800 |            395 | 2008-04-28  | NULL |
18 | 0008       | 圆珠笔       | 办公用品     |        100 |           NULL | 2009-11-11  | NULL |
19 | 0009       | 电视机       | 家具         |       4000 |           3000 | 2019-07-04  | NULL |
20 | 0010       | 电视机2      | 家具         |      40000 |           NULL | 2019-07-05  | NULL |
21 | 0020       | 电视机4      | 家具         |       NULL |          40001 | 2019-07-05  | NULL |
22 +------------+--------------+--------------+------------+----------------+-------------+------+
23 11 rows in set (0.00 sec)
    1. 事务

      1.   commit 提交处理

      2.   rollback 取消处理
        start transaction ;
            DML
           DML1
        commit / rollback ;
原文地址:https://www.cnblogs.com/liuyuanq/p/11141729.html