MySQL的INSERT语句小结

本文介绍了 MySQL 中 INSERT 语句的各种用法,包括插入单条记录、批量插入多条记录、使用 DEFAULT 值、利用 AUTO_INCREMENT 自动生成主键值以及插入 NULL 值等。此外还展示了如何通过 SET 子句进行插入操作。

MySQL的INSERT语法小结

mysql> create table addressbook(fname varchar(255) null,lname varchar(255) null,

phone varchar(255) null,fax varchar(255) null,email varchar(255) null);

Query OK, 0 rows affected (0.11 sec)

 

mysql> desc addressbook;

+-------+--------------+------+-----+---------+-------+

| Field | Type         | Null | Key | Default | Extra |

+-------+--------------+------+-----+---------+-------+

| fname | varchar(255) | YES  |     | NULL    |       |

| lname | varchar(255) | YES  |     | NULL    |       |

| phone | varchar(255) | YES  |     | NULL    |       |

| fax   | varchar(255) | YES  |     | NULL    |       |

| email | varchar(255) | YES  |     | NULL    |       |

+-------+--------------+------+-----+---------+-------+

5 rows in set (0.06 sec)

 

当向表中插入字符串值(以及一些数据值时)。必须使用引号,否则MySQL认为它们是字段名:

mysql> insert into addressbook(fname,lname,phone,fax,email)

    -> values('Rob',Rabbit,'674 1536','382 8364','rob@some.domain');

ERROR 1054 (42S22): Unknown column 'Rabbit' in 'field list'

 

包含引用标志的值需要在前面加上反斜线,不过数值不需要加引号:

mysql> insert into addressbook(fname,lname,phone,fax,email)

    -> values('France','D\'Souza','123 4567','000 7574','fdz@some.domain');

Query OK, 1 row affected (0.05 sec)

 

mysql> select * from addressbook;

+--------+---------+----------+----------+-----------------+

| fname  | lname   | phone    | fax      | email           |

+--------+---------+----------+----------+-----------------+

| France | D'Souza | 123 4567 | 000 7574 | fdz@some.domain |

+--------+---------+----------+----------+-----------------+

1 row in set (0.00 sec)

 

在一个单独的Insert语句中使用多个VALUES()子句可以插入多条记录:

mysql> insert stocks (symbol,price,quantity) values('ABCD',100,4500),

    -> ('HYDH',2000,29),('UGTS',25,67);

 

也可以不使用INSERT。。。VALUES格式,而是使用类似的UPDATE语句,它使用SET语句分别为每一列设置值。故可以不进行下面的操作:

mysql> insert into stocks(symbol,price,quantity) values('HYDH',2000,29);

而是这样做:

mysql> insert into stocks set symbol='HYDH',price=2000,quantity=29;

 

 

使用DEFAULT

mysql> create table forums(name varchar(150) not null,category varchar(50) defau

lt 'UNIX' not null,postsperpage smallint default 15 not null,highlightcolor varc

har(10) default 'red' not null);

Query OK, 0 rows affected (0.11 sec)

 

mysql> insert into forums(name) values('Apache');

Query OK, 1 row affected (0.05 sec)

 

mysql> insert into forums(name,highlightcolor) values('Sendmail','green');

Query OK, 1 row affected (0.06 sec)

 

mysql> select * from forums;

+----------+----------+--------------+----------------+

| name     | category | postsperpage | highlightcolor |

+----------+----------+--------------+----------------+

| Apache   | UNIX     |           15 | red            |

| Sendmail | UNIX     |           15 | green          |

+----------+----------+--------------+----------------+

2 rows in set (0.00 sec)

 

MySQL 4.0.3以及更高版本支持DEFAULT关键字,MySQL使用这个关键字为记录设置列的默认值。

mysql> insert into forums(name,category,postsperpage,highlightcolor)

    -> values('MySQL',default,default,default);

Query OK, 1 row affected (0.06 sec)

 

使用AUTOINCREMENT字段

当使用AUTOINCREMENT列创建序列时,在INSERT语句中不使用字段名将导致MySQL自动产生序列的下一个序号。这个序号作为表的主键。

mysql> insert into users(uname,upass) values('jim','secret');

Query OK, 1 row affected (0.05 sec)

 

mysql> insert into users(uname,upass) values('sarah','opense');

Query OK, 1 row affected (0.06 sec)

 

mysql> insert into users(uname,upass) values('tim','whiteboard');

Query OK, 1 row affected (0.05 sec)

 

mysql> select * from users;

+-----+-------+------------+

| uid | uname | upass      |

+-----+-------+------------+

|   1 | jim   | secret     |

|   2 | sarah | opense     |

|   3 | tim   | whiteboard |

+-----+-------+------------+

3 rows in set (0.00 sec)

 

使用NULL

我们可以在INSERT语句中使用NULL关键字来向一个字段(只要没有标记为NOT NULL)输入NULL值。下面的例子通过向包含NULL值的emailfax字段的addressbook表添加记录进行说明:

mysql> insert into addressbook(fname,lname,phone,fax,email)

    -> values('Polly','Parrot','239 1828',NULL,NULL);

Query OK, 1 row affected (0.05 sec)

 

mysql> select * from addressbook where email is null or fax is null;

+-------+--------+----------+------+-------+

| fname | lname  | phone    | fax  | email |

+-------+--------+----------+------+-------+

| Polly | Parrot | 239 1828 | NULL | NULL  |

+-------+--------+----------+------+-------+

1 row in set (0.02 sec)

 

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/15203236/viewspace-616118/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/15203236/viewspace-616118/

MySQL 中,并没有 `INSERT TO` 这种语法,正确的语法是 `INSERT INTO`。你可能是误写成了 `INSERT TO`。 --- ### ✅ 正确语法:`INSERT INTO` 用于向表中插入新记录(行)。 #### 🔹 基本语法: ```sql INSERT INTO table_name (column1, column2, column3, ...) VALUES (value1, value2, value3, ...); ``` --- ### ✅ 示例: 假设有一个表 `users`,结构如下: ```sql CREATE TABLE users ( id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(100), age INT, email VARCHAR(100) ); ``` #### 插入一行数据: ```sql INSERT INTO users (name, age, email) VALUES ('张三', 25, 'zhangsan@example.com'); ``` #### 插入多行数据: ```sql INSERT INTO users (name, age, email) VALUES ('李四', 30, 'lisi@example.com'), ('王五', 28, 'wangwu@example.com'); ``` --- ### ✅ 注意事项: 1. **字段顺序可以省略**:如果你为所有字段赋值,可以不写字段名: ```sql INSERT INTO users VALUES (NULL, '赵六', 22, 'zhaoliu@example.com'); ``` 2. **自增字段可省略**:如果字段是 `AUTO_INCREMENT`,可以不插入值: ```sql INSERT INTO users (name, age, email) VALUES ('孙七', 26, 'sunqi@example.com'); ``` 3. **字段值类型要匹配**:字符串使用单引号 `'`,数字直接写。 --- ### ❌ 错误示例(错误使用 `INSERT TO`): ```sql -- 错误写法 INSERT TO users (name, age) VALUES ('Tom', 20); ``` --- ### ✅ 小结 | 错误写法 | 正确写法 | |--------------|------------------------| | `INSERT TO` | ✅ `INSERT INTO` | | 漏写字段名 | ✅ 可以,但要按顺序填写值 | | 值类型不匹配 | ❌ 会插入失败或警告 | ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值