zoukankan      html  css  js  c++  java
  • 08.记录操作CURD(增删改查)

    创建一张剑的表,并显示表信息:
    剑表:id,名称,攻击,命中,暴击
    CREATE TABLE sword (
    id SMALLINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(32) NOT NULL,
    atk SMALLINT UNSIGNED NOT NULL,
    hit SMALLINT UNSIGNED NOT NULL DEFAULT 20,
    crit SMALLINT UNSIGNED NOT NULL DEFAULT 10
    ); 
    Query OK, 0 rows affected (0.39 sec)
    
    mysql> DESC sword;
    +-------+----------------------+------+-----+---------+-------+
    | Field | Type                 | Null | Key | Default | Extra |
    +-------+----------------------+------+-----+---------+-------+
    | id    | smallint(5) unsigned | NO   | PRI | NULL    |       |
    | name  | varchar(32)          | NO   |     | NULL    |       |
    | atk   | smallint(5) unsigned | NO   |     | NULL    |       |
    | hit   | smallint(5) unsigned | NO   |     | NULL    |       |
    | crit  | smallint(5) unsigned | NO   |     | NULL    |       |
    +-------+----------------------+------+-----+---------+-------+
    5 rows in set (0.01 sec)

    插入:INSERT

    插入两条数据,id会自递加,id位可用DEFAULT或NULL
    mysql> INSERT sword VALUES(NULL,'黑风',10000,400,400);
    Query OK, 1 row affected (0.00 sec)
    
    mysql> SELECT*FROM sword;
    +----+--------+-------+-----+------+
    | id | name   | atk   | hit | crit |
    +----+--------+-------+-----+------+
    |  1 | 黑风   | 10000 | 400 |  400 |
    +----+--------+-------+-----+------+
    1 row in set (0.01 sec)
    
    mysql> INSERT sword VALUES(DEFAULT,'木藜',5000,200,200);
    Query OK, 1 row affected (0.01 sec)
    
    mysql> SELECT*FROM sword;
    +----+--------+-------+-----+------+
    | id | name   | atk   | hit | crit |
    +----+--------+-------+-----+------+
    |  1 | 黑风   | 10000 | 400 |  400 |
    |  2 | 木藜   |  5000 | 200 |  200 |
    +----+--------+-------+-----+------+
    2 rows in set (0.00 sec)
    有DEFAULT的字段,赋值时用DEFAULT则会插入默认值
    复习一下修改字段信息
    mysql> ALTER TABLE sword MODIFY crit SMALLINT UNSIGNED DEFAULT 10;
    Query OK, 0 rows affected (0.05 sec)
    Records: 0  Duplicates: 0  Warnings: 0
    mysql> DESC sword;
    +-------+----------------------+------+-----+---------+----------------+
    | Field | Type                 | Null | Key | Default | Extra          |
    +-------+----------------------+------+-----+---------+----------------+
    | id    | smallint(5) unsigned | NO   | PRI | NULL    | auto_increment |
    | name  | varchar(32)          | NO   |     | NULL    |                |
    | atk   | smallint(5) unsigned | NO   |     | NULL    |                |
    | hit   | smallint(5) unsigned | NO   |     | NULL    |                |
    | crit  | smallint(5) unsigned | YES  |     | 10      |                |
    +-------+----------------------+------+-----+---------+----------------+
    5 rows in set (0.00 sec)
    mysql> INSERT sword VALUES(DEFAULT,'荆戈',8000,1000,DEFAULT);
    Query OK, 1 row affected (0.00 sec)
    
    mysql> SELECT*FROM sword;
    +----+--------+-------+------+------+
    | id | name   | atk   | hit  | crit |
    +----+--------+-------+------+------+
    |  1 | 黑风   | 10000 |  400 |  400 |
    |  2 | 木藜   |  5000 |  200 |  200 |
    |  3 | 荆戈   |  8000 | 1000 |   10 |
    +----+--------+-------+------+------+
    3 rows in set (0.00 sec)
    
    一次插入多行,逗号隔开
    mysql> INSERT sword VALUES(
        -> DEFAULT,'痕兮',7000,800,999),
        -> (DEFAULT,'逐暮',100,1000,10000),
        -> (DEFAULT,'风跃',9000,10,DEFAULT
        -> );
    Query OK, 3 rows affected (0.00 sec)
    Records: 3  Duplicates: 0  Warnings: 0
    
    mysql> SELECT*FROM sword;
    +----+--------+-------+------+-------+
    | id | name   | atk   | hit  | crit  |
    +----+--------+-------+------+-------+
    |  1 | 黑风   | 10000 |  400 |   400 |
    |  2 | 木藜   |  5000 |  200 |   200 |
    |  3 | 荆戈   |  8000 | 1000 |    10 |
    |  4 | 痕兮   |  7000 |  800 |   999 |
    |  5 | 逐暮   |   100 | 1000 | 10000 |
    |  6 | 风跃   |  9000 |   10 |    10 |
    +----+--------+-------+------+-------+
    6 rows in set (0.00 sec)
    有把剑不想让人知道名字,这里用MD5加密
    mysql> INSERT sword VALUES(DEFAULT,MD5('隐锋'),8000,2000,10);
    Query OK, 1 row affected (0.00 sec)
    
    mysql> SELECT*FROM sword;
    +----+----------------------------------+-------+------+-------+
    | id | name                             | atk   | hit  | crit  |
    +----+----------------------------------+-------+------+-------+
    |  1 | 黑风                             | 10000 |  400 |   400 |
    |  2 | 木藜                             |  5000 |  200 |   200 |
    |  3 | 荆戈                             |  8000 | 1000 |    10 |
    |  4 | 痕兮                             |  7000 |  800 |   999 |
    |  5 | 逐暮                             |   100 | 1000 | 10000 |
    |  6 | 风跃                             |  9000 |   10 |    10 |
    |  7 | 99f3a83768bb97bc7644f0ee278897dc |  8000 | 2000 |    10 |
    +----+----------------------------------+-------+------+-------+
    7 rows in set (0.00 sec)
    用另一种方式插入值
    mysql> INSERT sword SET name='洛神',atk='20000',hit=1;
    Query OK, 1 row affected (0.01 sec)
    
    mysql> SELECT*FROM sword;
    +----+----------------------------------+-------+------+-------+
    | id | name                             | atk   | hit  | crit  |
    +----+----------------------------------+-------+------+-------+
    |  1 | 黑风                             | 10000 |  400 |   400 |
    |  2 | 木藜                             |  5000 |  200 |   200 |
    |  3 | 荆戈                             |  8000 | 1000 |    10 |
    |  4 | 痕兮                             |  7000 |  800 |   999 |
    |  5 | 逐暮                             |   100 | 1000 | 10000 |
    |  6 | 风跃                             |  9000 |   10 |    10 |
    |  7 | 99f3a83768bb97bc7644f0ee278897dc |  8000 | 2000 |    10 |
    |  8 | 洛神                             | 20000 |    1 |    10 |
    +----+----------------------------------+-------+------+-------+
    8 rows in set (0.00 sec)
    第三种方法插入数据

    新建一个测试表:将sword_insert_test中test_name赋值为sword表中id大于5的name

    mysql> CREATE TABLE sword_insert_test (
        -> id SMALLINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
        -> test_name VARCHAR(32) NOT NULL
        -> );
    Query OK, 0 rows affected (0.05 sec)
    mysql> SELECT*FROM sword_insert_test ;
    Empty set (0.01 sec)
    mysql> INSERT sword_insert_test(test_name) SELECT name FROM sword WHERE id>5;
    Query OK, 3 rows affected (0.00 sec)
    Records: 3  Duplicates: 0  Warnings: 0
    
    mysql> SELECT*FROM sword_insert_test ;
    +----+-----------+
    | id | test_name |
    +----+-----------+
    |  1 | 风跃      |
    |  2 | 洛神      |
    |  3 | 隐锋      |
    +----+-----------+
    3 rows in set (0.00 sec)
    

    更新数据UPDATE

    更新某项值:将命中值(hit)全加1
    mysql> UPDATE sword SET hit=hit+1;
    Query OK, 8 rows affected (0.04 sec)
    Rows matched: 8  Changed: 8  Warnings: 0
    
    mysql> SELECT*FROM sword;
    +----+----------------------------------+-------+------+-------+
    | id | name                             | atk   | hit  | crit  |
    +----+----------------------------------+-------+------+-------+
    |  1 | 黑风                             | 10000 |  401 |   400 |
    |  2 | 木藜                             |  5000 |  201 |   200 |
    |  3 | 荆戈                             |  8000 | 1001 |    10 |
    |  4 | 痕兮                             |  7000 |  801 |   999 |
    |  5 | 逐暮                             |   100 | 1001 | 10000 |
    |  6 | 风跃                             |  9000 |   11 |    10 |
    |  7 | 99f3a83768bb97bc7644f0ee278897dc |  8000 | 2001 |    10 |
    |  8 | 洛神                             | 20000 |    2 |    10 |
    +----+----------------------------------+-------+------+-------+
    8 rows in set (0.00 sec)
    更新多项值:将攻击(atk)值修改为:攻击+暴击(crit)*2;命中全部减1;
    mysql> UPDATE sword SET atk=atk+2*crit,hit=hit-1;
    Query OK, 8 rows affected (0.00 sec)
    Rows matched: 8  Changed: 8  Warnings: 0
    
    mysql> SELECT*FROM sword;
    +----+----------------------------------+-------+------+-------+
    | id | name                             | atk   | hit  | crit  |
    +----+----------------------------------+-------+------+-------+
    |  1 | 黑风                             | 10800 |  400 |   400 |
    |  2 | 木藜                             |  5400 |  200 |   200 |
    |  3 | 荆戈                             |  8020 | 1000 |    10 |
    |  4 | 痕兮                             |  8998 |  800 |   999 |
    |  5 | 逐暮                             | 20100 | 1000 | 10000 |
    |  6 | 风跃                             |  9020 |   10 |    10 |
    |  7 | 99f3a83768bb97bc7644f0ee278897dc |  8020 | 2000 |    10 |
    |  8 | 洛神                             | 20020 |    1 |    10 |
    +----+----------------------------------+-------+------+-------+
    8 rows in set (0.00 sec)
    逐暮的属性太高了,下面来用限定条件对单条数据进行更新:
    mysql> UPDATE sword SET atk=atk-20000 WHERE name='逐暮';
    Query OK, 1 row affected (0.00 sec)
    Rows matched: 1  Changed: 1  Warnings: 0
    
    mysql> SELECT*FROM sword;
    +----+----------------------------------+-------+------+-------+
    | id | name                             | atk   | hit  | crit  |
    +----+----------------------------------+-------+------+-------+
    |  1 | 黑风                             | 10800 |  400 |   400 |
    |  2 | 木藜                             |  5400 |  200 |   200 |
    |  3 | 荆戈                             |  8020 | 1000 |    10 |
    |  4 | 痕兮                             |  8998 |  800 |   999 |
    |  5 | 逐暮                             |   100 | 1000 | 10000 |
    |  6 | 风跃                             |  9020 |   10 |    10 |
    |  7 | 99f3a83768bb97bc7644f0ee278897dc |  8020 | 2000 |    10 |
    |  8 | 洛神                             | 20020 |    1 |    10 |
    +----+----------------------------------+-------+------+-------+
    8 rows in set (0.00 sec)
    

    删除DELETE

    第七个看着不舒服,删掉吧:
    再插入没加密的:(注意,删掉id为7的,不会影响其他数据的id,再插入id为9)
    mysql> DELETE FROM sword WHERE id=7;
    Query OK, 1 row affected (0.07 sec)
    
    mysql> SELECT*FROM sword;
    +----+--------+-------+------+-------+
    | id | name   | atk   | hit  | crit  |
    +----+--------+-------+------+-------+
    |  1 | 黑风   | 10800 |  400 |   400 |
    |  2 | 木藜   |  5400 |  200 |   200 |
    |  3 | 荆戈   |  8020 | 1000 |    10 |
    |  4 | 痕兮   |  8998 |  800 |   999 |
    |  5 | 逐暮   |   100 | 1000 | 10000 |
    |  6 | 风跃   |  9020 |   10 |    10 |
    |  8 | 洛神   | 20020 |    1 |    10 |
    +----+--------+-------+------+-------+
    7 rows in set (0.00 sec)
    mysql> INSERT sword SET name='隐锋',atk=8020,hit=2000;
    Query OK, 1 row affected (0.01 sec)
    
    mysql> SELECT*FROM sword;
    +----+--------+-------+------+-------+
    | id | name   | atk   | hit  | crit  |
    +----+--------+-------+------+-------+
    |  1 | 黑风   | 10800 |  400 |   400 |
    |  2 | 木藜   |  5400 |  200 |   200 |
    |  3 | 荆戈   |  8020 | 1000 |    10 |
    |  4 | 痕兮   |  8998 |  800 |   999 |
    |  5 | 逐暮   |   100 | 1000 | 10000 |
    |  6 | 风跃   |  9020 |   10 |    10 |
    |  8 | 洛神   | 20020 |    1 |    10 |
    |  9 | 隐锋   |  8020 | 2000 |    10 |
    +----+--------+-------+------+-------+
    8 rows in set (0.00 sec)

    查询任何查询都不会影响表中的数据,)

    查询指定字段:以id和name为例
    mysql> SELECT id,name FROM sword;
    +----+--------+
    | id | name   |
    +----+--------+
    |  1 | 黑风   |
    |  2 | 木藜   |
    |  3 | 荆戈   |
    |  4 | 痕兮   |
    |  5 | 逐暮   |
    |  6 | 风跃   |
    |  8 | 洛神   |
    |  9 | 隐锋   |
    +----+--------+
    8 rows in set (0.05 sec)
    查询另一种方式
    mysql> SELECT sword.id,sword.name FROM sword;
    +----+--------+
    | id | name   |
    +----+--------+
    |  1 | 黑风   |
    |  2 | 木藜   |
    |  3 | 荆戈   |
    |  4 | 痕兮   |
    |  5 | 逐暮   |
    |  6 | 风跃   |
    |  8 | 洛神   |
    |  9 | 隐锋   |
    +----+--------+
    8 rows in set (0.00 sec)

    为查询的字段取别名

    mysql> SELECT crit AS '暴击',name AS'名称' FROM sword;
    +--------+--------+
    | 暴击   | 名称   |
    +--------+--------+
    |    400 | 黑风   |
    |    200 | 木藜   |
    |     10 | 荆戈   |
    |    999 | 痕兮   |
    |  10000 | 逐暮   |
    |     10 | 风跃   |
    |     10 | 洛神   |
    |     10 | 隐锋   |
    +--------+--------+
    8 rows in set (0.00 sec)
    查询指定位置的记录
    查询指定位置的记录
    分组
    mysql> SELECT crit FROM sword GROUP BY crit;
    +-------+
    | crit  |
    +-------+
    |    10 |
    |   200 |
    |   400 |
    |   999 |
    | 10000 |
    +-------+
    5 rows in set (0.00 sec)

    添加条件下的分组查询:

    mysql> SELECT crit FROM sword GROUP BY crit HAVING crit<500;
    +------+
    | crit |
    +------+
    |   10 |
    |  200 |
    |  400 |
    +------+
    3 rows in set (0.01 sec)
    降序排列
    mysql> SELECT * FROM sword ORDER BY id DESC;
    +----+--------+-------+------+-------+
    | id | name   | atk   | hit  | crit  |
    +----+--------+-------+------+-------+
    |  9 | 隐锋   |  8020 | 2000 |    10 |
    |  8 | 洛神   | 20020 |    1 |    10 |
    |  6 | 风跃   |  9020 |   10 |    10 |
    |  5 | 逐暮   |   100 | 1000 | 10000 |
    |  4 | 痕兮   |  8998 |  800 |   999 |
    |  3 | 荆戈   |  8020 | 1000 |    10 |
    |  2 | 木藜   |  5400 |  200 |   200 |
    |  1 | 黑风   | 10800 |  400 |   400 |
    +----+--------+-------+------+-------+
    8 rows in set (0.00 sec)
    多条记录排序(当第一个字段相同,相同的数据按第二个字段再排)
    mysql> SELECT * FROM sword ORDER BY crit,id DESC;
    +----+--------+-------+------+-------+
    | id | name   | atk   | hit  | crit  |
    +----+--------+-------+------+-------+
    |  9 | 隐锋   |  8020 | 2000 |    10 |
    |  8 | 洛神   | 20020 |    1 |    10 |
    |  6 | 风跃   |  9020 |   10 |    10 |
    |  3 | 荆戈   |  8020 | 1000 |    10 |
    |  2 | 木藜   |  5400 |  200 |   200 |
    |  1 | 黑风   | 10800 |  400 |   400 |
    |  4 | 痕兮   |  8998 |  800 |   999 |
    |  5 | 逐暮   |   100 | 1000 | 10000 |
    +----+--------+-------+------+-------+
    8 rows in set (0.00 sec)
    限制:LIMIT

    查询前四条数据:

    mysql> SELECT * FROM sword LIMIT 4;
    +----+--------+-------+------+------+
    | id | name   | atk   | hit  | crit |
    +----+--------+-------+------+------+
    |  1 | 黑风   | 10800 |  400 |  400 |
    |  2 | 木藜   |  5400 |  200 |  200 |
    |  3 | 荆戈   |  8020 | 1000 |   10 |
    |  4 | 痕兮   |  8998 |  800 |  999 |
    +----+--------+-------+------+------+
    4 rows in set (0.00 sec)

    查询前2~4条数据:

    mysql> SELECT * FROM sword LIMIT 1,4;
    +----+--------+------+------+-------+
    | id | name   | atk  | hit  | crit  |
    +----+--------+------+------+-------+
    |  2 | 木藜   | 5400 |  200 |   200 |
    |  3 | 荆戈   | 8020 | 1000 |    10 |
    |  4 | 痕兮   | 8998 |  800 |   999 |
    |  5 | 逐暮   |  100 | 1000 | 10000 |
    +----+--------+------+------+-------+
    4 rows in set (0.00 sec)
  • 相关阅读:
    437. Path Sum III
    51. N-Queens
    dfs 感悟
    Topological Sorting
    138 Copy List with Random Pointer
    130. Surrounded Regions
    The sum problem
    A + B Again
    Rectangles
    An easy problem
  • 原文地址:https://www.cnblogs.com/toly-top/p/9782021.html
Copyright © 2011-2022 走看看