最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

MySQL中insert語(yǔ)句的使用與優(yōu)化教程

 更新時(shí)間:2016年03月03日 16:35:06   投稿:goldensun  
這篇文章主要介紹了MySQL中insert語(yǔ)句的使用與優(yōu)化教程,使用insert語(yǔ)句插入數(shù)據(jù)是MySQL入門(mén)學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下

MySQL 表中使用 INSERT INTO SQL語(yǔ)句來(lái)插入數(shù)據(jù)。
你可以通過(guò) mysql> 命令提示窗口中向數(shù)據(jù)表中插入數(shù)據(jù),或者通過(guò)PHP腳本來(lái)插入數(shù)據(jù)。
語(yǔ)法
以下為向MySQL數(shù)據(jù)表插入數(shù)據(jù)通用的 INSERT INTO SQL語(yǔ)法:

INSERT INTO table_name ( field1, field2,...fieldN )
            VALUES
            ( value1, value2,...valueN );

如果數(shù)據(jù)是字符型,必須使用單引號(hào)或者雙引號(hào),如:"value"。
通過(guò)命令提示窗口插入數(shù)據(jù)
以下我們將使用 SQL INSERT INTO 語(yǔ)句向 MySQL 數(shù)據(jù)表 runoob_tbl 插入數(shù)據(jù)
實(shí)例
以下實(shí)例中我們將想 runoob_tbl 表插入三條數(shù)據(jù):

root@host# mysql -u root -p password;
Enter password:*******
mysql> use RUNOOB;
Database changed
mysql> INSERT INTO runoob_tbl 
   ->(runoob_title, runoob_author, submission_date)
   ->VALUES
   ->("Learn PHP", "John Poul", NOW());
Query OK, 1 row affected (0.01 sec)
mysql> INSERT INTO runoob_tbl
   ->(runoob_title, runoob_author, submission_date)
   ->VALUES
   ->("Learn MySQL", "Abdul S", NOW());
Query OK, 1 row affected (0.01 sec)
mysql> INSERT INTO runoob_tbl
   ->(runoob_title, runoob_author, submission_date)
   ->VALUES
   ->("JAVA Tutorial", "Sanjay", '2007-05-06');
Query OK, 1 row affected (0.01 sec)
mysql>


注意: 使用箭頭標(biāo)記(->)不是SQL語(yǔ)句的一部分,它僅僅表示一個(gè)新行,如果一條SQL語(yǔ)句太長(zhǎng),我們可以通過(guò)回車(chē)鍵來(lái)創(chuàng)建一個(gè)新行來(lái)編寫(xiě)SQL語(yǔ)句,SQL語(yǔ)句的命令結(jié)束符為分號(hào)(;)。
在以上實(shí)例中,我們并沒(méi)有提供 runoob_id 的數(shù)據(jù),因?yàn)樵撟侄挝覀冊(cè)趧?chuàng)建表的時(shí)候已經(jīng)設(shè)置它為 AUTO_INCREMENT(自動(dòng)增加) 屬性。 所以,該字段會(huì)自動(dòng)遞增而不需要我們?nèi)ピO(shè)置。實(shí)例中 NOW() 是一個(gè) MySQL 函數(shù),該函數(shù)返回日期和時(shí)間。
使用PHP腳本插入數(shù)據(jù)
你可以使用PHP 的 mysql_query() 函數(shù)來(lái)執(zhí)行 SQL INSERT INTO命令來(lái)插入數(shù)據(jù)。
該函數(shù)有兩個(gè)參數(shù),在執(zhí)行成功時(shí)返回 TRUE,否則返回 FALSE。
語(yǔ)法

bool mysql_query( sql, connection );

參數(shù):
sql:必需,規(guī)定要發(fā)送的 SQL 查詢(xún),注意、查詢(xún)字符串不應(yīng)以分號(hào)結(jié)束。
connection:可選,規(guī)定 SQL 連接標(biāo)識(shí)符,如果未規(guī)定,則使用上一個(gè)打開(kāi)的連接。
實(shí)例
以下實(shí)例中程序接收用戶(hù)輸入的三個(gè)字段數(shù)據(jù),并插入數(shù)據(jù)表中:

<html>
<head>
<title>向 MySQL 數(shù)據(jù)庫(kù)添加數(shù)據(jù)</title>
</head>
<body>
<?php
if(isset($_POST['add']))
{
$dbhost = 'localhost:3036';
$dbuser = 'root';
$dbpass = 'rootpassword';
$conn = mysql_connect($dbhost, $dbuser, $dbpass);
if(! $conn )
{
 die('Could not connect: ' . mysql_error());
}

if(! get_magic_quotes_gpc() )
{
  $runoob_title = addslashes ($_POST['runoob_title']);
  $runoob_author = addslashes ($_POST['runoob_author']);
}
else
{
  $runoob_title = $_POST['runoob_title'];
  $runoob_author = $_POST['runoob_author'];
}
$submission_date = $_POST['submission_date'];

$sql = "INSERT INTO runoob_tbl ".
    "(runoob_title,runoob_author, submission_date) ".
    "VALUES ".
    "('$runoob_title','$runoob_author','$submission_date')";
mysql_select_db('RUNOOB');
$retval = mysql_query( $sql, $conn );
if(! $retval )
{
 die('Could not enter data: ' . mysql_error());
}
echo "Entered data successfully\n";
mysql_close($conn);
}
else
{
?>
<form method="post" action="<?php $_PHP_SELF ?>">
<table width="600" border="0" cellspacing="1" cellpadding="2">
<tr>
<td width="250">Tutorial Title</td>
<td>
<input name="runoob_title" type="text" id="runoob_title">
</td>
</tr>
<tr>
<td width="250">Tutorial Author</td>
<td>
<input name="runoob_author" type="text" id="runoob_author">
</td>
</tr>
<tr>
<td width="250">Submission Date [ yyyy-mm-dd ]</td>
<td>
<input name="submission_date" type="text" id="submission_date">
</td>
</tr>
<tr>
<td width="250"> </td>
<td> </td>
</tr>
<tr>
<td width="250"> </td>
<td>
<input name="add" type="submit" id="add" value="Add Tutorial">
</td>
</tr>
</table>
</form>
<?php
}
?>
</body>
</html>

在我們接收用戶(hù)提交的數(shù)據(jù)時(shí),為了數(shù)據(jù)的安全性我們需要使用 get_magic_quotes_gpc() 函數(shù)來(lái)判斷特殊字符的轉(zhuǎn)義是否已經(jīng)開(kāi)啟。如果這個(gè)選項(xiàng)為off(未開(kāi)啟),返回0,那么我們就必須調(diào)用addslashes 這個(gè)函數(shù)來(lái)為字符串增加轉(zhuǎn)義。
義。
你也可以添加其他檢查數(shù)據(jù)的方法,比如郵箱格式驗(yàn)證,電話(huà)號(hào)碼驗(yàn)證,是否為整數(shù)驗(yàn)證等。


優(yōu)化 insert 性能
mysql 的 insert 語(yǔ)句語(yǔ)法

insert into `table`(`field1`,`field2`) values('value1','value2'); 

提高insert 性能的方法
1.一條sql語(yǔ)句插入多條數(shù)據(jù)

INSERT INTO `insert_table` (`uid`, `content`, `type`) VALUES ('userid_0', 'content_0', 0); 
INSERT INTO `insert_table` (`uid`, `content`, `type`) VALUES ('userid_1', 'content_1', 1); 

可以寫(xiě)成

復(fù)制代碼 代碼如下:

INSERT INTO `insert_table` (`uid`, `content`, `type`) VALUES ('userid_0', 'content_0', 0), ('userid_1', 'content_1', 1); 

2.使用事務(wù)

START TRANSACTION; 
INSERT INTO `insert_table` (`uid`, `content`, `type`) VALUES ('userid_0', 'content_0', 0); 
INSERT INTO `insert_table` (`uid`, `content`, `type`) VALUES ('userid_1', 'content_1', 1); 
... 
COMMIT; 

注意
1.sql語(yǔ)句長(zhǎng)度有限制,合并sql語(yǔ)句時(shí)要注意。長(zhǎng)度限制可以通過(guò)max_allowed_packet配置項(xiàng)修改,默認(rèn)為1M。
2.事務(wù)太大會(huì)影響執(zhí)行效率,mysql有innodb_log_buffer_size配置項(xiàng),超過(guò)這個(gè)值會(huì)使用磁盤(pán)數(shù)據(jù),影響執(zhí)行效率。

關(guān)于事務(wù)的配置項(xiàng)說(shuō)明:
1.innodb_buffer_pool_size
如 果用Innodb,那么這是一個(gè)重要變量。相對(duì)于MyISAM來(lái)說(shuō),Innodb對(duì)于buffer size更敏感。MySIAM可能對(duì)于大數(shù)據(jù)量使用默認(rèn)的key_buffer_size也還好,但I(xiàn)nnodb在大數(shù)據(jù)量時(shí)用默認(rèn)值就感覺(jué)在爬了。 Innodb的緩沖池會(huì)緩存數(shù)據(jù)和索引,所以不需要給系統(tǒng)的緩存留空間,如果只用Innodb,可以把這個(gè)值設(shè)為內(nèi)存的70%-80%。和 key_buffer相同,如果數(shù)據(jù)量比較小也不怎么增加,那么不要把這個(gè)值設(shè)太高也可以提高內(nèi)存的使用率。

2.innodb_additional_pool_size
這個(gè)的效果不是很明顯,至少是當(dāng)操作系統(tǒng)能合理分配內(nèi)存時(shí)。但你可能仍需要設(shè)成20M或更多一點(diǎn)以看Innodb會(huì)分配多少內(nèi)存做其他用途。

3.innodb_log_file_size
對(duì)于寫(xiě)很多尤其是大數(shù)據(jù)量時(shí)非常重要。要注意,大的文件提供更高的性能,但數(shù)據(jù)庫(kù)恢復(fù)時(shí)會(huì)用更多的時(shí)間。我一般用64M-512M,具體取決于服務(wù)器的空間。

4.innodb_log_buffer_size
默認(rèn)值對(duì)于多數(shù)中等寫(xiě)操作和事務(wù)短的運(yùn)用都是可以的。如 果經(jīng)常做更新或者使用了很多blob數(shù)據(jù),應(yīng)該增大這個(gè)值。但太大了也是浪費(fèi)內(nèi)存,因?yàn)?秒鐘總會(huì) flush(這個(gè)詞的中文怎么說(shuō)呢?)一次,所以不需要設(shè)到超過(guò)1秒的需求。8M-16M一般應(yīng)該夠了。小的運(yùn)用可以設(shè)更小一點(diǎn)。

5.innodb_flush_log_at_trx_commit
抱怨Innodb比MyISAM慢 100倍?那么你大概是忘了調(diào)整這個(gè)值。默認(rèn)值1的意思是每一次事務(wù)提交或事務(wù)外的指令都需要把日志寫(xiě)入(flush)硬盤(pán),這是很費(fèi)時(shí)的。特別是使用電 池供電緩存(Battery backed up cache)時(shí)。設(shè)成2對(duì)于很多運(yùn)用,特別是從MyISAM表轉(zhuǎn)過(guò)來(lái)的是可以的,它的意思是不寫(xiě)入硬盤(pán)而是寫(xiě)入系統(tǒng)緩存。日志仍然會(huì)每秒flush到硬 盤(pán),所以你一般不會(huì)丟失超過(guò)1-2秒的更新。設(shè)成0會(huì)更快一點(diǎn),但安全方面比較差,即使MySQL掛了也可能會(huì)丟失事務(wù)的數(shù)據(jù)。而值2只會(huì)在整個(gè)操作系統(tǒng) 掛了時(shí)才可能丟數(shù)據(jù)。

相關(guān)文章

  • 導(dǎo)致MySQL索引失效的一些常見(jiàn)寫(xiě)法總結(jié)

    導(dǎo)致MySQL索引失效的一些常見(jiàn)寫(xiě)法總結(jié)

    這篇文章主要給大家介紹了關(guān)于導(dǎo)致MySQL索引失效的一些常見(jiàn)寫(xiě)法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09
  • Linux7操作系統(tǒng)中如何安裝MySQL5.6

    Linux7操作系統(tǒng)中如何安裝MySQL5.6

    這篇文章主要介紹了Linux7操作系統(tǒng)中如何安裝MySQL5.6問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-09-09
  • linux忘記mysql密碼處理方法

    linux忘記mysql密碼處理方法

    這篇文章主要為大家介紹下linux忘記mysql密碼處理方法,需要的朋友可以參考下。
    2011-08-08
  • 深入mysql主從復(fù)制延遲問(wèn)題的詳解

    深入mysql主從復(fù)制延遲問(wèn)題的詳解

    本篇文章是對(duì)mysql中主從復(fù)制延遲的問(wèn)題進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-06-06
  • mysql數(shù)據(jù)庫(kù)從服務(wù)器移植到個(gè)人PC的方法

    mysql數(shù)據(jù)庫(kù)從服務(wù)器移植到個(gè)人PC的方法

    有時(shí)候本地也需要數(shù)據(jù)庫(kù)進(jìn)行測(cè)試,那么就需要將服務(wù)器的東西移植到本地,如果有服務(wù)器控制權(quán)限,可以直接復(fù)制mysql的目錄(windows下),如果是別的那么就需要下面的方法了。
    2011-08-08
  • 查看linux服務(wù)器上mysql配置文件路徑的方法

    查看linux服務(wù)器上mysql配置文件路徑的方法

    下面小編就為大家?guī)?lái)一篇查看linux服務(wù)器上mysql配置文件路徑的方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2016-10-10
  • Mysql中FIND_IN_SET()和IN區(qū)別簡(jiǎn)析

    Mysql中FIND_IN_SET()和IN區(qū)別簡(jiǎn)析

    這篇文章主要介紹了Mysql中FIND_IN_SET()和IN區(qū)別簡(jiǎn)析,設(shè)計(jì)實(shí)例代碼,具有一定參考價(jià)值。需要的朋友可以了解。
    2017-10-10
  • mysql 8.0.12 安裝圖文教程

    mysql 8.0.12 安裝圖文教程

    這篇文章主要為大家詳細(xì)介紹了mysql 8.0.12 安裝配置圖文教程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-11-11
  • MyBatis動(dòng)態(tài)SQL、模糊查詢(xún)與結(jié)果映射操作過(guò)程

    MyBatis動(dòng)態(tài)SQL、模糊查詢(xún)與結(jié)果映射操作過(guò)程

    本篇所講的動(dòng)態(tài)SQL,是mybatis通過(guò)標(biāo)簽元素的形式,?如if,?choose,?when,?otherwise,?trim,?where,?set,?foreach等標(biāo)簽完成對(duì)sql的拼接功能,使用起來(lái)也非常靈活方便,這篇文章主要介紹了MyBatis動(dòng)態(tài)SQL、模糊查詢(xún)與結(jié)果映射,需要的朋友可以參考下
    2023-08-08
  • MySQL 使用索引掃描進(jìn)行排序

    MySQL 使用索引掃描進(jìn)行排序

    mysql可以使用同一個(gè)索引既滿(mǎn)足排序,又用于查找行,因此,如果可能,設(shè)計(jì)索引時(shí)應(yīng)該盡可能地同時(shí)滿(mǎn)足這兩種任務(wù),這樣是最好的。本文將介紹如何利用索引來(lái)進(jìn)行排序
    2021-06-06

最新評(píng)論

北宁市| 深圳市| 济源市| 荔浦县| 麟游县| 疏勒县| 明水县| 沙湾县| 共和县| 鄂托克旗| 桂林市| 绥棱县| 莱西市| 珠海市| 正宁县| 赞皇县| 巩义市| 宁乡县| 庄浪县| 锡林浩特市| 乡宁县| 连江县| 阜平县| 墨玉县| 开江县| 周宁县| 阿尔山市| 新绛县| 图木舒克市| 都昌县| 浮山县| 罗山县| 密山市| 浙江省| 浦江县| 靖远县| 安康市| 宜昌市| 怀柔区| 霍林郭勒市| 江北区|