• MySQL操作与修改表


    插入数据(insert)

    insert语句的3个主要组成部分:

    • 所要插入数据的表的名称;
    • 表终需要使用的列的名称;
    • 需要插入到列的值。

    数字型主键生成机制

    数字型主键生成机制,除了随机选择数字外,还可以有以下两个常用选择:

    • 查看表中当前主键的最大值,并加1;
    • 让数据库服务器自动提供。

    第1种方法在并发的时候可能会发生问题,基于第2种方案,MySQL有一种实现方式:只需简单地为主键列打开自增(auto-increment)特性。
    一般情况下,应该在建表时定义此属性;
    也可以使用alter table修改已经存在的表定义:

    ALTER TABLE person MODIFY person_id SMALLINT UNSIGNED AUTO_INCREMENT;
    

    该语句实质上重新定义了 person 表的 person_id 列,现在如果再次使用 describe 命令,会看到 person_id 的“Extra”列中列出了自增特性。

    +-------------+----------------------+------+-----+---------+----------------+
    | Field       | Type                 | Null | Key | Default | Extra          |
    +-------------+----------------------+------+-----+---------+----------------+
    | person_id   | smallint(5) unsigned | NO   | PRI | NULL    | auto_increment |
    | fname       | varchar(20)          | YES  |     | NULL    |                |
    | lname       | varchar(20)          | YES  |     | NULL    |                |
    | gender      | enum('M','F')        | YES  |     | NULL    |                |
    | birth_date  | date                 | YES  |     | NULL    |                |
    | street      | varchar(30)          | YES  |     | NULL    |                |
    | city        | varchar(20)          | YES  |     | NULL    |                |
    | state       | varchar(20)          | YES  |     | NULL    |                |
    | country     | varchar(20)          | YES  |     | NULL    |                |
    | postal_code | varchar(20)          | YES  |     | NULL    |                |
    +-------------+----------------------+------+-----+---------+----------------+
    

    insert语句

    执行如下SQL语句新增一列信息:

    INSERT INTO person 
    (person_id, fname, lname, gender, birth_date)
    VALUES (null, 'Zifeiy', 'Wang', 'M', '1982-05-27');
    

    执行如下语句进行查询:

    SELECT person_id, fname, lname, birth_date 
    FROM person;
    

    效果如下:

    mysql> INSERT INTO person
        -> (person_id, fname, lname, gender, birth_date)
        -> VALUES (null, 'Zifeiy', 'Wang', 'M', '1982-05-27');
    Query OK, 1 row affected (0.05 sec)
    
    mysql> SELECT person_id, fname, lname, birth_date
        -> FROM person;
    +-----------+--------+-------+------------+
    | person_id | fname  | lname | birth_date |
    +-----------+--------+-------+------------+
    |         1 | Zifeiy | Wang  | 1982-05-27 |
    +-----------+--------+-------+------------+
    1 row in set (0.00 sec)
    

    可以使用 where 子句指定想要提取的数据,例如 person_id 为1的行:

    SELECT person_id, fname, lname, birth_date 
    FROM person
    WHERE person_id=1;
    

    或者lanme为‘Wang’的行:

    SELECT person_id, fname, lname, birth_date 
    FROM person
    WHERE lname='Wang';
    

    Zifeiy还喜欢3种食物,因此再执行如下三条SQL:

    INSERT INTO favorite_food (person_id, food) VALUES (1, 'apple');
    INSERT INTO favorite_food (person_id, food) VALUES (1, 'banana');
    INSERT INTO favorite_food (person_id, food) VALUES (1, 'orange');
    

    下面获取Zifeiy的喜爱食物列表,并根据字典序进行排列(使用order by):

    mysql> SELECT food FROM favorite_food WHERE person_id=1 ORDER BY food;
    +--------+
    | food   |
    +--------+
    | apple  |
    | banana |
    | orange |
    +--------+
    3 rows in set (0.00 sec)
    

    为了让Zifeiy不感到孤单,可以再次执行insert语句向person表中增加Binbin Fan:

    INSERT INTO person 
    (person_id, fname, lname, gender, birth_date,
    street, city, state, country, postal_code) 
    VALUES (null, 'Binbin', 'Fan', 'F', '1992-02-02',
    '23 Tomas St.', 'Huzhou', 'ZJ', 'CHINA', '330501');
    

    再次查询表格:

    mysql> SELECT person_id, fname, lname, birth_date FROM person;
    +-----------+--------+-------+------------+
    | person_id | fname  | lname | birth_date |
    +-----------+--------+-------+------------+
    |         1 | Zifeiy | Wang  | 1982-05-27 |
    |         2 | Binbin | Fan   | 1992-02-02 |
    +-----------+--------+-------+------------+
    2 rows in set (0.00 sec)
    

    更新数据

    UPDATE person 
    SET street = '123 Haha St.',
    city = 'Hangzhou',
    state = 'JS',
    country = 'CHINA',
    postal_code = '320101'
    WHERE person_id = 1;
    

    删除数据

    DELETE FROM person WHERE person_id = 2;
    
  • 相关阅读:
    业余草双因素认证(2FA)教程
    业余草网站热门关键字
    微博爬虫“免登录”技巧详解及 Java 实现(业余草的博客)
    业余草通告CSDN博客用户zhang__ao非法转载文章的公告
    CODE大全给你推荐几个免费的leapftp 注册码
    业余草最新热门博客推荐
    莫比乌斯反演
    P5091 【模板】欧拉定理
    LaTeX Test
    P2742 [USACO5.1]圈奶牛Fencing the Cows /【模板】二维凸包
  • 原文地址:https://www.cnblogs.com/zifeiy/p/8780911.html
Copyright © 2020-2023  润新知