⑴ 請教MYsql insert語句的長度限制 MYSQL語句最長可以多長
mysql所有語句的長度限制(包含insert語句),受系統選項max_allowed_packet控制,可以用如下指令查詢,默認值1M或16M:
show VARIABLES WHERE Variable_name LIKE 'max_allowed_packet';
也可以在my.ini配置文件里修改:
[mysqld]
max_allowed_packet = 8M
⑵ Mysql資料庫中,設置id為自動增加,向資料庫中插入數據時,SQL語句怎麼寫
在建立表的時候設置id為自動增長的 [id] [int] IDENTITY (1, 1)
SQL語句是insert into user(name,passwd) values (name ,passwd)。新增一條數據 id 就會自動加1
INSERT INTO是sql資料庫中的語句,可以用於向表格中插入新的行。
(2)mysql資料庫insert語句擴展閱讀
(1) 數據記錄篩選:
sql="select * from 數據表 where欄位名=欄位值 order by欄位名[desc]"(按某個欄位值降序排列。默認升序ASC)
sql="select * from 數據表 where欄位名like '%欄位值%' order by 欄位名 [desc]"
sql="select top 10 * from 數據表 where欄位名=欄位值 order by 欄位名 [desc]"
sql="select top 10 * from 數據表 order by 欄位名 [desc]"
sql="select * from 數據表 where欄位名in ('值1','值2','值3')"
sql="select * from 數據表 where欄位名between 值1 and 值2"
(2) 更新數據記錄:
sql="update 數據表 set欄位名=欄位值 where 條件表達式"
sql="update 數據表 set 欄位1=值1,欄位2=值2 ?? 欄位n=值n where 條件表達式"
(3) 刪除數據記錄:
sql="delete from 數據表 where 條件表達式"
sql="delete from 數據表" (將數據表所有記錄刪除)
(4) 添加數據記錄:
sql="insert into 數據表 (欄位1,欄位2,欄位3 ?) values (值1,值2,值3 ?)"
sql="insert into 目標數據表 select * from 源數據表" (把源數據表的記錄添加到目標數據表)
(5) 數據記錄統計函數:
AVG(欄位名) 得出一個表格欄平均值
COUNT(*;欄位名) 對數據行數的統計或對某一欄有值的數據行數統計
MAX(欄位名) 取得一個表格欄最大的值
MIN(欄位名) 取得一個表格欄最小的值
SUM(欄位名) 把數據欄的值相加
引用以上函數的方法:
sql="select sum(欄位名) as 別名 from 數據表 where 條件表達式"
set rs=conn.excute(sql)
用 rs("別名") 獲取統計的值,其它函數運用同上。
查詢去除重復值:select distinct * from table1
(6) 數據表的建立和刪除:
CREATE TABLE 數據表名稱(欄位1 類型1(長度),欄位2 類型2(長度) ?? )
(7) 單列求和:
SELECT SUM(欄位名) FROM 數據表
⑶ mysql的執行insert是否有返回值
mysql中仔歲的insert語句在添加成功時,有影響行數和當前操作產生的id值。操作方法如下:
1、首先連接到mysql,mysql -uroot -p123456use test。
⑷ 六、MySQL資料庫之數據插入(insert into)
本節介紹數據的插入,復制數據到另一張表的Sql語法,主要語法有: insert into,insert into select,select into from 等用法,下面將一一為大家詳細說明:
以下面兩張表進行sql腳本說明
insert into有兩種語法,分別如下:
語法1:INSERT INTO table_name VALUES (value1,value2,value3,...); --這種形式無需指定要插入數據的列名,只需提供被插入的值即可:
語法2:INSERT INTO table_name (column1,column2,column3,...) VALUES (value1,value2,value3,...); --這種形式需指定要插入數據的列名,插入的值需要和列名一一對應:
eg:insert into customer values('1006','14006','王欣欣','27','深圳市'); --向表customer插入一條數據
eg:insert into customer values('1007','14007','孟一凡','27',''); --向表customer插入一條數據,最後一個值不填表示遲羨對應的值為空,非必填項可以不用插入值
eg:insert into customer (cus_id,cus_no,cus_name,cus_age,cus_adds) values('1008','14008','孔凡','26','廣州市'); --向表customer插入一條數據,插入的值與列名一一對應
詳解:insert into select --表示從一個表復制數據,然後把數據插入到一個已存在的表中。目標表中任何已存在的行都不會受影響。
語法1:INSERT INTO table_name2 SELECT * FROM table_name1; --表示將表table_name1中復制所有列的數據插入到已存在的表table_name2中。被插入數據的表為table_name2,切記不要記混了。
eg:insert into customer select * from asett --將表asett中所有列的數指旦世據插入到表customer中
語法2:INSERT INTO table_name2 (column_name(s)) SELECT column_name(s) FROM table_name1; --指定需要復制的列,只復制制定的列插入到另一個已存在的表table_name2中:
eg:insert into customer (cus_id,cus_no) select ast_id,ast_no from asett --將表asett中列ast_id和ast_no的數據插入到表customer對應的cus_id,cus_no列中
詳解:從一個表復制數據,然後把數據插入到另一個新表中。
語法1:SELECT * INTO newtable [IN externaldb] FROM table1; --復制所有的列插入到新表中:
eg:select * into customer from asett --將asett表中數據插入到customer中,被插入的 表唯肢customer不存在
eg:select * into customer from asett where ast_id = '1008' --只復製表asett中ast_id=1008的數據插入到customer中,被插入的 表customer不存在
語法2:SELECT column_name(s) INTO newtable [IN externaldb] FROM table1; --只復制指定的列插入到新表中:
eg:select ast_id,ast_no into customer from asett --將asett表中列ast_id,ast_no數據插入到customer中,被插入的 表customer不存在
區別1:insert into customer select * from asett where ast_id='1009' --插入一行,要求表customer 必須存在
區別2:select * into customer from asett where ast_id='1009' --也是插入一行,要求表customer 不存在
區別3:select into from :將查詢出來的數據復制到一張新表中保存,表結構與查詢結構一致。
區別4:insert into select :為已經存在的表批量添加新數據。
⑸ 怎麼往mysql中寫入數據
1、首先打開MYSQL的管理工具,新建一個test表,並且在表中插入兩個欄位。
⑹ mysql導出insert語句沒有欄位
1. 登錄到 MySQL 資料庫,然後在終端中輸入以下語句:
SELECT * INTO OUTFILE '/tmp/database.sql' FROM 表名仿派;
2. 此語句將會在指定文件夾下創建一個名為 database.sql 的文件,導出所有表中的數據,但是只有 INSERT 語句,沒有欄位定義,也御大蘆沒有任何 DROP 語句。
3. 如果需要導出表中的欄位信息,可以使用 mysqlmp 命令,例如:
mysqlmp -u root -p --databases 資料庫名 > /tmp/database.sql
4. 上述命令將會在指定文件夾下創建鎮帶一個名為 database.sql 的文件,裡麵包含了資料庫中所有表的欄位定義、DROP 語句以及 INSERT 語句。
⑺ MYSQL中執行插入操作的關鍵字是
一、關鍵字執行順序
1、查詢中用到的關鍵詞主要包含六個,並且他們的順序依次為 :
select--from--where--group by--having--order by 其中select和from是必須的,其他關鍵詞是可選的。
這六個關鍵詞的執行順序,與sql語句的書寫順序並不是一樣的,而是按照下面的順序來執行
from--where--group by--having--select--order by。
注意:雖然select在having後執行,但是mysql中仍然可以在having中使用select語句定義的別名。
原因分析:mysql在查詢的時候會產生一個臨時表,所有的欄位名稱(別名)在臨時表中已經產生,產生了臨時表之後才會進行having操作。也就是說mysql內部有一定的解析順序,解析順序select優先於having。在這里我個人認為是mysql可能沒有將這一點做規范。Oracle中having無法使用select語句內的別名。
2、insert into 和replace into和merge into
insert into是mysql的基本插入語句。replace into 是mysql中的代替插入語句,可以理解為insert into的升級版。replace into在執行的時候,首先會根據指定的主鍵或者唯一索引判斷當前表中是否存在指定的主鍵或索引,如果主鍵或唯一索引已經存在,則先將對應的索引的數據刪除,然後在索引位置插入replace into中包含的數據。如果主鍵和唯一索引沒有存在,則直接在索引位置插入replace into中包含的數據。merge into 是oracle資料庫中的代替插入語句。實現方式和replace into類似。執行效率:如果指定索引位置沒有數據,insert into和replace into執行效率相差無幾,二者效率相同。如果指定位置索引已經存在,insert into語句不能正常執行,replace into語句可以正常執行。注意:雖然replace into比較好使用,但是也存在一定風險:replace每次要重新分配自增id;replace中執行delete時, 在有外鍵的情況下會很麻煩;如果delete時定義的有觸發器, 則會被執行;副作用也會被傳播到replica slave.推薦使用INSERT INTO … ON DUPLICATE KEY UPDATEON DUPLICATE KEY UPDATE是mysql特有的一個sql關鍵字,只能在mysql中使用。
在MySQL資料庫中,如果在insert語句後面帶上ON DUPLICATE KEY UPDATE 子句,而要插入的行與表中現有記錄的惟一索引或主鍵中產生重復值,那麼就會發生舊行的更新;如果插入的行數據與現有表中記錄的唯一索引或者主鍵不重復,則執行新紀錄插入操作。
比如有這樣一張表:
create table func(id int primary key,count int,birthday date);
insert into func values(1,1,'1990-09-09');--插入一條數據
insert into func values(1,1,'1990-09-09') on plicate key update count = count+1;--表中有數據,刪除原表數據,將新數據插入。
提示兩行受到影響,說明先執行的刪除操作,然後插入新的數據。
觀察到沒有任何新數據插入,count欄位被更新。(count欄位更新是因為剛剛的插入語句中書寫了update count = count+1;)
如果不希望任何欄位更新,可以寫成如下格式:
insert into func values(1,1,'1990-09-09') on plicate key update count = values(count);--再次執行,沒有新數據插入到資料庫中。
二、mysql內置函數
內置函數眾多,不需要每一個都掌握,熟練掌握幾個在以後使用即可。可以查看mysql官方文檔學習內置函數。
三、其它注意事項
1、在已經存在的表中添加外鍵。(僅作為了解內容)
alter table tb_name add constraint fk_name foreign key (tb_name.id) references tb_stu(id);
例如:alter table emp add constraint forkey foreign key(dept_id) references dept(id);
該語句是在 tb_name表上添加一個外鍵約束,引用 tb_stu的主鍵,fk_name是約束的名字。
刪除約束:alter table tb_name drop constraint fk_name ;
2、外鍵的使用情景:
在不要求吞吐速度而對數據的正確性和安全性要求較高時,推薦使用外鍵。
如果面對高吞吐量,要求優先保證讀取效率時,則不推薦使用外鍵。
3、刪除的時候使用別名:
原句:delete from employee where id = 1;
別名:delete e from employee as e where id =1;