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,"名字","2011-04-15 12:22:25"); //default可以換成null------------------------------ insert into 表名 (name,datetime) values("名字","2011-04-15 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子句。
轉載請注明出處華閱文章網 » mysqlinsert語句