mysql insert语句注意什么
1. 基础的Insert语句示例下面的语句向员工表插入一条新记录。
在这个例子中,后的“values”指定要插入到表中的所有字段对应的值。INSERT INTO employee VALUES(100,’Thomas’,’Sales’,5000);用SELECT语句来验证数据是否插入成功。
SELECT * FROM employee;2. 只针对选定的字段插入值如果你只想向选定的字段插入值,你需要在INSERT语句中明确指定要插入的字段名字。 下面的代码仅插入id和name列的数据INSERT INTO employee(id,name) VALUES(200,’Jason’);以上代码中,我们未对dept和salary列指定任何值。
所以,以上两个字段的值为NULL,当我们用SELECT语句检索数据时。需要注意的是,NULL不是指”NULL”字符串,SELECT语句使用”NULL”来表示这个字段的值是空的而已。
mysql> SELECT * FROM employee;+++++| id | name | dept | salary |+++++| 100 | Thomas | Sales | 5000 || 200 | Jason | NULL | NULL |+++++2 rows in set (0.00 sec)3. INSERT SET示例INSERT语句不仅仅可以使用”VALUE”关键字,也可以使用”SET”关键字。下面的例子与上面的例子结果一样,但是使用的是SET关键字。
mysql> INSERT INTO employee SET id=300, name=’Mayla’;mysql> select * from employee;+++++| id | name | dept | salary |+++++| 100 | Thomas | Sales | 5000 || 200 | Jason | NULL | NULL || 300 | Mayla | NULL | NULL |+++++4.从另一个表中检索数据插入下面的例子中,我们会使用INSERT 。 SELECT语句,这个语句可以从其他表中检索数据,并插入到目标表。
下面的代码从Contractor表中检索所有数据并插入到Employee表。INSERT INTO employee SELECT * FROM contractor;SELECT语句中可以根据需要使用WHERE子句,用来检索需要的从Contractor表插入到Employee表的数据。
INSERT INTO employee SELECT * FROM contractor WHERE salary >= 7000;注意:如果你使用oracle数据库,你的SQL应该这样写”INSERT INTO employee AS SELECT * FROM contractor”。需要注意在MySQL中不适用AS关键字。
5.从其他表中选择部分字段插入当然,你也可以从其他表中选择部分字段的数据插入到你的表中。 下面的例子将从contractor表中选择id,name字段的所有数据插入到employee表。
INSERT INTO employee(id,name) SELECT id,name FROM contractor;跟前面的例子一样,可以使用WHERE子句过滤数据。INSERT INTO employee(id,name) SELECT id,name FROM contractor WHERE salary >= 7000;注意:如果employee表中已存在相同主键(这里的主键是id)的记录,你会得到一条错误信息。
下面是一个示例错误信息,指出employee表中已经存在id为100的记录。ERROR 1062 (23000): Duplicate entry ‘100’ for key ‘PRIMARY’6. 插入数据到指定分区如果创建了分区表(分区类型为range)并希望将输入插入到指定分区,可以参考下面代码。
将数据插入到分区p1中的employee表。INSERT INTO employee PARTITION (p1) VALUES(100,’Thomas’,’Sales’,5000);注意:如果该分区的employee表中已包含相应的数据(这里是id=100的employee数据),你会得到如下错误信息。
ERROR 1729 (HY000): Found a row not matching the given partition set注意: 分区仅在MySQL5.6及以上版本可用。7. 插入数据到多个分区可以使用单条SQL语句将数据插入到多个分区。
下面的INSERT语句将id为100的记录插入到p1分区,将id为200的记录插入到p2分区。INSERT INTO employee PARTITION (p1, p2) VALUES(100,’Thomas’,’Sales’,5000), (200,’Jason’,’Technology’,5500);注意: 在上例中,如果MySQL往任意分区插入数据失败,那么整个INSERT语句将失败。
当然,这同样仅能在MySQL5.6及以上版本使用。8. 在插入过程中忽略错误在一些场景中(比如:批处理),你可能希望忽略插入过程中MySQL产生的错误信息,你可以使用INSERT IGNORE语句。
比如:下面的例子会抛出错误信息,提示数据已经存在。mysql> INSERT INTO employee VALUES(100,’Thomas’,’Sales’,5000);ERROR 1062 (23000): Duplicate entry ‘100’ for key ‘PRIMARY’要忽略上面的错误信息,可以使用INSERT IGNORE来替换INSERT语句(执行前请确保这条对应的主键已经存在)。
mysql> INSERT IGNORE INTO employee VALUES(100,’Thomas’,’Sales’,5000);Query OK, 0 rows affected (0.00 sec)INSERT IGNORE仅仅只是忽略错误信息,不会进行其他任何处理。9. INSERT语句的默认值如果MySQL运行在strict模式下,并且在我们的INSERT语句中并未指定默认值,那么MySQL将抛出错误信息。
不过,如果MySQL并未启用strict模式(这个是默认启用的)时,同时INSERT语句没有为字段指定值,那么MySQL会为该字段使用字段类型的默认值。 比如,bonus表的所有字段都不允许为空(not null)。
mysql> DESC bonus;+++++++| Field | Type | Null | Key | Default | 。
MYSQL插入语句问题
INSERT INTO mt_message (`id`,`name` ,`tel` ,`email` )VALUES (NULL,’111111111′, ’11’, ‘1’)
INSERT INTO mt_message(`id` ,`name` ,`tel` ,`email` ,`qita` ,`content` ,`shijian` ,`user` ,`huifu` ,`shenhe`
//)VALUES (NULL , ‘1’, ‘2’, ”, ”, ”, NOW( ) , ”, ”, ”)
只能说明:你从email开始后面的字段其中有一个是不能为空的,而且没有初始值
所以你第一个语句插入失败了
我估计应该问题就是在你的时间(shijian)字段,因为后面基本都是空的,只有时间不是
你可以去检查一个你的这张message表,在mysql命令行用:desc message
检查数据表的字段名和字段属性,如果不行你可以重新建立数据表的
要是想知道出错在哪里,你可以这样写:
//..上面程序略
$sql=”INSERT INTO mt_message (`id`,`name` ,`tel` ,`email` )VALUES (NULL,’111111111′, ’11’, ‘1’)”;
$query=mysql_query($sql);
//执行
if($query)
//执行成功
echo ‘OK’;
else
echo ‘插入失败,错误报告是:’.mysql_error();
//输出mysql错误信息函数:mysql_error();
?>
MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件。
MySQL是一种关系数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。
MySQL所使用的 SQL 语言是用于访问数据库的最常用标准化语言。MySQL 软件采用了双授权政策,分为社区版和商业版,由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型网站的开发都选择 MySQL 作为网站数据库。
由于其社区版的性能卓越,搭配 PHP 和 Apache 可组成良好的开发环境。
一句简单的MySql插入语句怎么写
insert into 表名 values(default,”名字”,”0415 12:22:25″); //default可以换成null insert into 表名 (name,datetime) values(”名字”,”0415 12:22:25″); 使用SQL语法大写,增加可读性(小写部分就是自己数据库写的表/字段喽,具体你懂得。)
。创建数据库:CREATE DATABASE mysql_db; 删除数据库:DROP DATABASE mysql_db; 查看数据库:SHOW DATABASES; 使用数据库:USE mysql_db; 查看数据库中的表:SHOW TABLES; 创建表:CREATE TABLE user( id SMALLINT UNSIGNED PRIMARY KEY AUTO_INCREMENT,username VARCHAR(20) UNIQUE NOT NULL,sex ENUM(‘1′,’2′,’3′) NOT NULL DEFAULT 3); 查看表结构:①SELECT COLUMN FROM user; ②DESC user; 查看表创建语句(可查看各种自动生成的名字):SHOW CREATE TABLE user; 插入表记录:①INSERT INTO user(id,username,sex) VALUES(1,’Tom’,1); ②INSERT user(username) VALUES (‘John’); 查找表:SELECT * FROM user; 删除表中的数据(保留表结构):TRUNCATE TABLE user; 将查询结果写入新表:INSERT [INTO] privinces(sex) SELECT sex FROM user GROUP BY sex;(若表中有数据,请不要随意更改表名、列名) 修改表名:①ALTER TABLE user RENAME [AS|TO] users; ②RENAME TABLE user TO users; 添加单列:ALTER TABLE user ADD [COLUMN] age SMALLINT NOT NULL UNSIGNED DEFUALT 18 [FIRST | AFTER sex]; 删除列:ALTER TABLE user DROP sex[,DROP age]; 修改列名称和定义:ALTER TABLE user CHANGE [COLUMN] age a_ge TINYINT NOT NULL UNSIGNED AFTER id; 单表更新:UPDATE user SET age = age + 5,sex = 1 [WHERE id = 2]; 单表删除:DELETE FROM user [WHERE id =3]; 单(多)表连接:SELECT *,*me FROM user AS p LEFT JOIN user AS s ON * = *; 单(多)表删除:DELETE * FROM user [AS] u1 LEFT JOIN ( SELECT * FROM user AS p LEFT JOIN user AS s ON * =* GROUP BY * HAVING COUNT(*)>1 ) [AS] u2 ON * = * WHERE * > *; 查找记录:SELETE select_expr [,select_expr] [ FROM table_references [WHERE where_condition] [GROUP BY {col_name|position}[ASC|DESC],。
] //查询结果分组 [HAVING where_condition] //设置分组条件 [ORDER BY {col_name|expr|position}[ASC|DESC]] //对结果排序 LIMIT {[offset,]row_count|row_count OFFSET offset}]//限制记录数量 ] 记录为2、3行:SELECT * FROM user LIMIT 1,2; 别名使用(在项目中一般都使用别名)AS alias_name:SELECT id AS uid FROM user AS u ; 子查询:SELECT AVG(age) FROM user WHERE userid = [ALL|SOME|ANY|[NOT] IN|[NOT] EXISTS](SELECT uid FROM privinces WHERE pname = ‘河南’); 外键约束:(父表为user表,必须先在父表中插入数据,才能在子表中插入数据) CASEADE:从父表中删除或更新行 且 自动级联删除或更新子表中匹配的行;SET NULL:从父表删除或更新行,并设置子表中的外键列为NULL; RESTRICT:拒绝对父表的更新或删除操作;CREATE TABLE privinces( pid SMALLINT UNSIGNED PRIMARY KEY AUTO_INCREMENT,pname VARCHAR(20) NOT NULL ,uid SMALLINT,FOREIGN KEY (uid) REFERENCES user (id) //privinces的字段uid与user表的字段id外键约束 ON DELETE CASEADE //删除时 级联删除); 增加主键、唯一、外键约束:ALTER TABLE privinces ADD [CONSTRAINT uq_pname] UNIQUE(pname); 添加/删除默认约束:ALTER TABLE privinces ALTER pname {SET DEFAULT literal | DROP DEFAULT}; 删除主键约束:ALTER TABLE privinces DROP PRIMARY KEY; 删除唯一(索引)约束:(查看约束名字key_name: SHOW INDEXS FROM privinces;) ALTER TABLE privinces DROP {INDEX | KEY} 约束名; 删除外键约束:(查看约束名字:SHOW CREATE TABLE privinces;) ALTER TABLE privinces DROP FOREIGN KEY 约束名; 多表更新:UPDATE 表的参照关系 SET col_name = {[expr | value]}; 表的参照关系:tab1_reference {[INNER|CROSS] JOIN |{LEFT|RIGHT}[OUTER] JOIN} tab2_refenence ON conditional_expr; 内连接:INNER JOIN 左外连接:LEFT JOIN 右外连接:ROGHT JOIN UPDATE user INNER JOIN privinces ON user_privince = pname SET user_privince = pid;//(更新user内连接privince,条件是 user_privince.=pname,设置user_privince=pid) 创建数据表的同时将查询结果写入数据表:CREATE TABLE table_name [create_definition, 。] //创建语句的定义 select_statement; //要插入查询结果的 查询语句 字符函数:CONCAT()字符连接;CONCAT(‘I’,’LOVE’,’YOU’); CONCAT_WS()使用指定的分隔符进行字符连接;。
如何使用mysql语句向表中插入数据
在mysql中要向数据库中保存数据我们最常用的一种方法就是直接使用Insert into语句来实现了,下面我来给大家详细介绍Insert into语句用法
INSERT用于向一个已有的表中插入新行。INSERT…VALUES语句根据明确指定的值插入行。让我们先来看一下insert语句标准的定义,放在[]内的都是可以省略的:
语法
INSERT [LOW_PRIORITY | DELAYED | HIGH_PRIORITY] [IGNORE]
[INTO] tbl_name [(col_name,。)]
VALUES ({expr | DEFAULT},。),(。),。
[ ON DUPLICATE KEY UPDATE col_name=expr, 。 ]
实例
create table links (name varchar(255) not null default ”, address varchar(255) not null default ”);
最简单的插入方法
代码如下
复制代码
Mysql>insert into worker values(‘tom’,’tom@*’),(‘paul’,’paul@*’);
或
insert into links values(‘jerichen’,’gdsz’);
批量保存数据
假如我们想一次性的往数据库里插入多条数据咋办?一定要写多条语句吗?肯定是不会的,因为MySQL设计的还是很人性的。其提供insert语句的
一种非标准格式,即,values(字段值1,字段值2,字段值3),(另一个字段1的值,另一个字段2的值,另一个字段3的值);
# 同时插入两条数据,看语法说明,那个into被我省略了
代码如下
复制代码
insert links (name,url) values(‘jerichen’,’gdsz’),(‘alone’,’gdgz’);
使用INSERT…SELECT语句插入从其他表选择的行
当我们在上一节学习创建表时,知道可以使用select从其它表来直接创建表,甚至可以同时复制数据记录。如果你已经拥有了一个表,你同样可以从select语句的配合中获益。
从其它表中录入数据,例如:
代码如下
复制代码
mysql>insert into tbl_name1(col1,col2) select col3,col4 from tbl_name2;
你也可以略去目的表的列列表,如果你每一列都有数据录入。
代码如下
复制代码
mysql>insert into tbl_name1 select col3,col4 from tbl_name2;
INSERT INTO 。 SELECT语句满足下列条件:
查询不能包含一个ORDER BY子句。