• 中文
    • English
  • 注册
  • 查看作者
    • 4-2:MySQL 插入记录INSERT

      插入记录的语法结构:

      INSERT [INTO] tbl_name [(col_name,...)] {VALUES| VALUE}
      ({expr | DEFAULT},...),(...),...

      col_name是列名称,如果省略不写的话,代表所有的字段需要依次赋值

      首先创建一个用于测试的数据表:

      mysql> CREATE TABLE users(
          -> id SMALLINT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
          -> username VARCHAR(20) NOT NULL,
          -> password VARCHAR(32) NOT NULL,
          -> age TINYINT UNSIGNED NOT NULL DEFAULT 10,
          -> sex BOOLEAN
          -> );
      Query OK, 0 rows affected (0.01 sec)

      现在我们省略col_name,则插入记录的时候需要依次为所有字段赋值,但是id字段是自动编号的

      我们该如何为id字段赋值呢?只需要赋值为NULL或者DEFAULT就可以了:

      mysql> INSERT users VALUES(NULL,'Tom','123',25,1);
      Query OK, 1 row affected (0.00 sec)
      
      mysql> SELECT * FROM users;
      +----+----------+----------+-----+------+
      | id | username | password | age | sex  |
      +----+----------+----------+-----+------+
      |  1 | Tom      | 123      |  25 |    1 |
      +----+----------+----------+-----+------+
      1 row in set (0.00 sec)
      
      mysql> INSERT users VALUES(DEFAULT,'John','123',25,1);
      Query OK, 1 row affected (0.00 sec)
      
      mysql> SELECT * FROM users;
      +----+----------+----------+-----+------+
      | id | username | password | age | sex  |
      +----+----------+----------+-----+------+
      |  1 | Tom      | 123      |  25 |    1 |
      |  2 | John     | 123      |  25 |    1 |
      +----+----------+----------+-----+------+
      2 rows in set (0.00 sec)

      可以看到id自动编号为,其他字段比如age除了可以直接赋值外,还可以赋值表达式,比如:

      mysql> INSERT users VALUES(NULL,'John','123',25-1,1);
      Query OK, 1 row affected (0.01 sec)
      
      mysql> SELECT * FROM users;
      +----+----------+----------+-----+------+
      | id | username | password | age | sex  |
      +----+----------+----------+-----+------+
      |  1 | Tom      | 123      |  25 |    1 |
      |  2 | John     | 123      |  25 |    1 |
      |  3 | Tom      | 123      |  25 |    1 |
      |  4 | John     | 123      |  24 |    1 |
      +----+----------+----------+-----+------+
      4 rows in set (0.00 sec)

      DEFAULT除了可以用于给自动编号的字段赋值外,还可以用于给设置了默认值的字段赋值:

      mysql> SHOW COLUMNS FROM users;
      +----------+----------------------+------+-----+---------+----------------+
      | Field    | Type                 | Null | Key | Default | Extra          |
      +----------+----------------------+------+-----+---------+----------------+
      | id       | smallint(5) unsigned | NO   | PRI | NULL    | auto_increment |
      | username | varchar(20)          | NO   |     | NULL    |                |
      | password | varchar(32)          | NO   |     | NULL    |                |
      | age      | tinyint(3) unsigned  | NO   |     | 10      |                |
      | sex      | tinyint(1)           | YES  |     | NULL    |                |
      +----------+----------------------+------+-----+---------+----------------+
      5 rows in set (0.00 sec)
      
      mysql> INSERT users VALUES(NULL,'John','123',DEFAULT,1);
      Query OK, 1 row affected (0.00 sec)
      
      mysql> SELECT * FROM users;
      +----+----------+----------+-----+------+
      | id | username | password | age | sex  |
      +----+----------+----------+-----+------+
      |  1 | Tom      | 123      |  25 |    1 |
      |  2 | John     | 123      |  25 |    1 |
      |  3 | Tom      | 123      |  25 |    1 |
      |  4 | John     | 123      |  24 |    1 |
      |  5 | John     | 123      |  10 |    1 |
      +----+----------+----------+-----+------+
      5 rows in set (0.00 sec)

      接下来一次性写入多条记录,只需要用,分隔即可,这里以两条记录为例:

      mysql> INSERT users VALUES(DEFAULT,'Tom','123',25,1),(NULL,'Rose',md5('123'),DEFAULT,0);
      Query OK, 2 rows affected (0.01 sec)
      Records: 2  Duplicates: 0  Warnings: 0
      
      mysql> SELECT * FROM users;
      +----+----------+----------------------------------+-----+------+
      | id | username | password                         | age | sex  |
      +----+----------+----------------------------------+-----+------+
      |  1 | Tom      | 123                              |  25 |    1 |
      |  2 | John     | 123                              |  25 |    1 |
      |  3 | Tom      | 123                              |  25 |    1 |
      |  4 | John     | 123                              |  24 |    1 |
      |  5 | John     | 123                              |  10 |    1 |
      |  6 | Tom      | 123                              |  25 |    1 |
      |  7 | Rose     | 202cb962ac59075b964b07152d234b70 |  10 |    0 |
      +----+----------+----------------------------------+-----+------+
      7 rows in set (0.00 sec)

      md5是php中用于计算的一个字符串的哈希值的方法。

    • 0
    • 0
    • 0
    • 2.8k
    • 请登录之后再进行评论

      登录

      赞助本站

      • 支付宝
      • 微信
      • QQ

      感谢一直支持本站的所有人!

      单栏布局 侧栏位置: