這篇文章給大家分享的是有關(guān)MySQL基礎(chǔ)的示例分析的內(nèi)容。小編覺得挺實(shí)用的,因此分享給大家做個(gè)參考,一起跟隨小編過來看看吧。
成都創(chuàng)新互聯(lián)公司主要從事成都做網(wǎng)站、成都網(wǎng)站制作、網(wǎng)頁(yè)設(shè)計(jì)、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)陵川,10多年網(wǎng)站建設(shè)經(jīng)驗(yàn),價(jià)格優(yōu)惠、服務(wù)專業(yè),歡迎來電咨詢建站服務(wù):18982081108
mySQL (關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng))
MySQL是一個(gè)關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng),由瑞典MySQL AB 公司開發(fā),目前屬于 Oracle 旗下產(chǎn)品。MySQL 是最流行的關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng)之一,在 WEB 應(yīng)用方面,MySQL是最好的 RDBMS (Relational Database Management System,關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)) 應(yīng)用軟件。
MySQL是一種關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng),關(guān)系數(shù)據(jù)庫(kù)將數(shù)據(jù)保存在不同的表中,而不是將所有數(shù)據(jù)放在一個(gè)大倉(cāng)庫(kù)內(nèi),這樣就增加了速度并提高了靈活性。
MySQL所使用的 SQL 語言是用于訪問數(shù)據(jù)庫(kù)的最常用標(biāo)準(zhǔn)化語言。MySQL 軟件采用了雙授權(quán)政策,分為社區(qū)版和商業(yè)版,由于其體積小、速度快、總體擁有成本低,尤其是開放源碼這一特點(diǎn),一般中小型網(wǎng)站的開發(fā)都選擇 MySQL 作為網(wǎng)站數(shù)據(jù)庫(kù)。
由于其社區(qū)版的性能卓越,搭配 PHP 和 Apache 可組成良好的開發(fā)環(huán)境。
1. 數(shù)據(jù)庫(kù)(Database)是按照數(shù)據(jù)結(jié)構(gòu)來組織、存儲(chǔ)和管理數(shù)據(jù)的倉(cāng)庫(kù),每個(gè)數(shù)據(jù)庫(kù)都有一個(gè)或多個(gè)不同的API用于創(chuàng)建,訪問,管理,搜索和復(fù)制所保存的數(shù)據(jù)。
2. 使用關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng)(RDBMS)來存儲(chǔ)和管理的大數(shù)據(jù)量。關(guān)系型數(shù)據(jù)庫(kù)是建立在關(guān)系模型基礎(chǔ)上的數(shù)據(jù)庫(kù),借助于集合代數(shù)等數(shù)學(xué)概念和方法來處理數(shù)據(jù)庫(kù)中的數(shù)據(jù)。
3. RDBMS特點(diǎn):
1.數(shù)據(jù)以表格的形式出現(xiàn)
2.每行為各種記錄名稱
3.每列為記錄名稱所對(duì)應(yīng)的數(shù)據(jù)域
4.許多的行和列組成一張表單
5.若干的表單組成database
4. RDBMS 術(shù)語
冗余:存儲(chǔ)兩倍數(shù)據(jù),冗余可以使系統(tǒng)速度更快。
主鍵:主鍵是唯一的。一個(gè)數(shù)據(jù)表中只能包含一個(gè)主鍵。你可以使用主鍵來查詢數(shù)據(jù)。
外鍵:外鍵用于關(guān)聯(lián)兩個(gè)表。
復(fù)合鍵:復(fù)合鍵(組合鍵)將多個(gè)列作為一個(gè)索引鍵,一般用于復(fù)合索引。
索引:使用索引可快速訪問數(shù)據(jù)庫(kù)表中的特定信息。索引是對(duì)數(shù)據(jù)庫(kù)表中一列或多列的值進(jìn)行排序的一種結(jié)構(gòu)。類似于書籍的目錄。
參照完整性: 參照的完整性要求關(guān)系中不允許引用不存在的實(shí)體。與實(shí)體完整性是關(guān)系模型必須滿足的完整性約束條件,目的是保證數(shù)據(jù)的一致性
5. MySQL是一種關(guān)聯(lián)數(shù)據(jù)庫(kù)管理系統(tǒng),關(guān)聯(lián)數(shù)據(jù)庫(kù)將數(shù)據(jù)保存在不同的表中,而不是將所有數(shù)據(jù)放在一個(gè)大倉(cāng)庫(kù)內(nèi),這樣就增加了速度并提高了靈活性。
(1) 檢查MySQL服務(wù)器是否啟動(dòng):
ps -ef | grepmysqld
(2) 啟動(dòng)MySQL服務(wù)器:
root@host# cd/usr/bin
./safe_mysqld&
(3) 關(guān)閉目前運(yùn)行的 MySQL 服務(wù)器:
root@host# cd/usr/bin
./mysqladmin-u root -p shutdown
Enterpassword: ******
在 MySQL 數(shù)據(jù)庫(kù)中的 user 表添加新用戶:
root@host# mysql -u root –p //選擇數(shù)據(jù)庫(kù) Enter password:******* mysql> use mysql; Database changed mysql> INSERT INTO user (host, user, password, select_priv, insert_priv,update_priv) //設(shè)置權(quán)限Y VALUES ('localhost', 'guest', PASSWORD('guest123'), 'Y', 'Y','Y'); Query OK, 1 row affected (0.20 sec) mysql> FLUSH PRIVILEGES;
注意需要執(zhí)行 FLUSH PRIVILEGES 語句。這個(gè)命令執(zhí)行后會(huì)重新載入授權(quán)表。
另外一種添加用戶的方法為通過SQL的 GRANT命令
mysql> GRANTSELECT,INSERT,UPDATE,DELETE,CREATE,DROP -> ON TUTORIALS.* -> TO 'zara'@'localhost' -> IDENTIFIED BY'zara123';
USE 數(shù)據(jù)庫(kù)名 :選擇要操作的MySQL數(shù)據(jù)庫(kù):
mysql> use W3CSCHOOL;
Database changed
SHOW DATABASES: 列出 MySQL 數(shù)據(jù)庫(kù)管理系統(tǒng)的數(shù)據(jù)庫(kù)列表:
mysql> SHOWDATABASES;
SHOW TABLES: 顯示指定數(shù)據(jù)庫(kù)所有表,用該命令前需用 use 命令選擇操作的數(shù)據(jù)庫(kù)。
mysql> useW3CSCHOOL;
Database changed
mysql> SHOW TABLES;
SHOW COLUMNS FROM 數(shù)據(jù)表:顯示數(shù)據(jù)表的屬性,屬性類型,主鍵信息,是否NULL,默認(rèn)值等其他信息。
mysql> SHOW COLUMNSFROM W3Cschool_tbl;
+-----------------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-----------------+--------------+------+-----+---------+-------+
SHOW INDEX FROM 數(shù)據(jù)表:顯示數(shù)據(jù)表的詳細(xì)索引信息,包括PRIMARY KEY(主鍵)。
SHOW TABLE STATUS LIKE 數(shù)據(jù)表\G: 該命令將輸出MySQL數(shù)據(jù)庫(kù)管理系統(tǒng)的性能及統(tǒng)計(jì)信息。
mysql> SHOW TABLESTATUS FROM W3CSCHOOL; # 顯示數(shù)據(jù)庫(kù) W3CSCHOOL 中所有表的信息
mysql> SHOW TABLESTATUS from W3CSCHOOL LIKE 'W3Cschool%'; #表名以W3Cschool開頭的表的信息
mysql> SHOW TABLESTATUS from W3CSCHOOL LIKE 'W3Cschool%'\G; #加上 \G,查詢結(jié)果按列打印
9. PHP MySQL函數(shù)格式:mysql_function(value,value,...);
[root@host]# mysql -uroot -p
Enter password:******
登錄成功后會(huì)出現(xiàn)mysql> 命令提示窗口,你可以在上面執(zhí)行任何 SQL 語句。
退出 mysql> 命令提示窗口可以使用exit 命令:mysql> exit
PHP 提供了 mysql_connect() 函數(shù)來連接數(shù)據(jù)庫(kù)。
connectionmysql_connect(server,user,passwd,new_link,client_flag);5各參數(shù)均可選
使用PHP的mysql_close() 函數(shù)來斷開與MySQL數(shù)據(jù)庫(kù)的鏈接。
bool mysql_close (resource $link_identifier );
通常不要用mysql_close(),因?yàn)橐汛蜷_的非持久連接會(huì)在腳本執(zhí)行完畢后自動(dòng)關(guān)閉。
mysql_close() 不會(huì)關(guān)閉由 mysql_pconnect() 建立的持久連接
$conn = mysql_connect($dbhost, $dbuser, $dbpass); if(! $conn ) { die('Could not connect: ' .mysql_error()); } echo 'Connected successfully'; mysql_close($conn);
用root用戶登錄,root用戶擁有最高權(quán)限,可以使用 mysql mysqladmin 命令來創(chuàng)建數(shù)據(jù)庫(kù)。
[root@host]#mysqladmin -u root -pcreate/drop W3CSCHOOL
Enter password:*****
PHP使用 mysql_query 函數(shù)來創(chuàng)建或者刪除 MySQL 數(shù)據(jù)庫(kù)。
bool mysql_query( sql, connection); $conn = mysql_connect($dbhost,$dbuser, $dbpass); if(! $conn ) { die('連接錯(cuò)誤: ' . mysql_error()); } echo '連接成功<br />'; $sql= 'CREATE/DROP DATABASE W3CSCHOOL'; $retval= mysql_query( $sql, $conn ); if(! $retval ) { die('創(chuàng)建數(shù)據(jù)庫(kù)失敗: ' . mysql_error()); } echo "數(shù)據(jù)庫(kù) W3CSCHOOL創(chuàng)建成功\n"; mysql_close($conn);
PHP 提供了函數(shù) mysql_select_db來選取一個(gè)數(shù)據(jù)庫(kù)。
bool mysql_select_db( db_name,connection ); $conn = mysql_connect($dbhost,$dbuser, $dbpass); if(! $conn ) { die('連接失敗: ' . mysql_error()); } echo '連接成功'; mysql_select_db('W3CSCHOOL' ); mysql_close($conn);
創(chuàng)建MySQL數(shù)據(jù)表需要以下信息:
表名
表字段名
定義每個(gè)表字段
創(chuàng)建語法:CREATE TABLE table_name (column_name column_type);
刪除語法:DROP TABLE table_name ;
以下例子中我們將在 W3CSCHOOL 數(shù)據(jù)庫(kù)中創(chuàng)建數(shù)據(jù)表w3cschool_tbl:
tutorials_tbl( tutorial_id INT NOT NULL AUTO_INCREMENT, tutorial_title VARCHAR(100) NOT NULL, tutorial_author VARCHAR(40) NOT NULL, submission_date DATE, PRIMARY KEY ( w3cschool_id ) );
使用 SQL 語句 CREATE TABLE 來創(chuàng)建數(shù)據(jù)表。
mysql> CREATE TABLE w3cschool_tbl( -> w3cschool_id INT NOTNULL AUTO_INCREMENT, -> w3cschool_titleVARCHAR(100) NOT NULL, -> w3cschool_authorVARCHAR(40) NOT NULL, -> submission_date DATE, -> PRIMARY KEY (w3cschool_id ) -> );
MySQL命令終止符為分號(hào) (;) 。
語法:bool mysql_query( sql, connection);
$sql = "CREATE TABLEtutorials_tbl( "創(chuàng)建 "tutorial_id INT NOTNULL AUTO_INCREMENT, ". "tutorial_titleVARCHAR(100) NOT NULL, ". "tutorial_authorVARCHAR(40) NOT NULL, ". "submission_dateDATE, ". "PRIMARY KEY (tutorial_id )); " ; $sql = "DROP TABLEw3cschool_tbl";刪除 mysql_select_db( 'TUTORIALS' ); $retval = mysql_query( $sql, $conn); //判斷是否成功而設(shè)置的參數(shù); if(! $retval ) { die('數(shù)據(jù)表創(chuàng)建失敗: ' . mysql_error()); } echo "數(shù)據(jù)表創(chuàng)建成功\n"; mysql_close($conn);
18.向MySQL數(shù)據(jù)表插入數(shù)據(jù)通用的 INSERT INTO SQL語法:
INSERT INTO table_name (field1, field2,...fieldN )
VALUES
( value1,value2,...valueN );
如果數(shù)據(jù)是字符型,必須使用單引號(hào)或者雙引號(hào),如:"value"。
w3cschool_tbl表插入一條數(shù)據(jù):
mysql> INSERT INTOw3cschool_tbl
->(w3cschool_title, w3cschool_author,submission_date)
->VALUES
->("Learn PHP", "JohnPoul", NOW());
(->)不是SQL語句的一部分,它僅表示一個(gè)新行,如SQL語句太長(zhǎng),可通過回車鍵創(chuàng)建一個(gè)新行編寫SQL語句,SQL語句的命令結(jié)束符為分號(hào)(;)。
19.使用PHP腳本插入數(shù)據(jù)
$sql = "INSERT INTO w3cschool_tbl ".
"(w3cschool_title,w3cschool_author,submission_date) ".
"VALUES ".
"('$w3cschool_title','$w3cschool_author','$submission_date')";
20.為在MySQL數(shù)據(jù)庫(kù)中查詢數(shù)據(jù)通用的 SELECT語法:
SELECT column_name,column_name
FROM table_name
[WHERE Clause]
[OFFSET M ][LIMIT N]
可以通過SELECT 命令讀取一條或者多條記錄。
可以通過OFFSET指定SELECT語句開始查詢的數(shù)據(jù)偏移量默認(rèn)情況下偏移量為0。
可以使用 LIMIT 屬性來設(shè)定返回的記錄數(shù)。
你可以使用星號(hào)(*)來代替其他字段,SELECT語句會(huì)返回表的所有字段數(shù)據(jù)
mysql> SELECT * from w3cschool_tbl
21.使用PHP腳本來獲取數(shù)據(jù)
使用PHP函數(shù)的mysql_query()及SQL SELECT命令來獲取數(shù)據(jù)。
該函數(shù)用于執(zhí)行SQL命令,然后通過 PHP 函數(shù) mysql_fetch_array() 來使用或輸出所有查詢的數(shù)據(jù)。
嘗試以下實(shí)例來顯示數(shù)據(jù)表w3cschool_tbl 的所有記錄
$sql = 'SELECT w3cschool_id,w3cschool_title,
w3cschool_author,submission_date
FROM w3cschool_tbl';
mysql_select_db('W3CSCHOOL');
$retval = mysql_query( $sql, $conn );
if(! $retval )
{
die('Could not get data: ' .mysql_error());
}
while($row =mysql_fetch_array($retval, MYSQL_ASSOC))
while($row =mysql_fetch_assoc($retval))
用MYSQL_NUM參數(shù)顯示數(shù)據(jù)表
while($row =mysql_fetch_array($retval, MYSQL_NUM))
用MYSQL_NUM參數(shù)顯示數(shù)據(jù)表
{
echo "Tutorial ID:{$row['w3cschool_id']} <br>".
"Title:{$row['w3cschool_title']} <br> ".
"Author:{$row['w3cschool_author']} <br> ".
"Submission Date : {$row['submission_date']}<br> ".
"--------------------------------<br>";
}
mysql_free_result($retval); 釋放游標(biāo)內(nèi)存
echo "Fetched data successfully\n";
mysql_close($conn);
MYSQL_ASSOC, 設(shè)置該參數(shù)查詢結(jié)果返回關(guān)聯(lián)數(shù)組,你可以使用字段名稱來作為數(shù)組的索引。
22.從MySQL表中使用SQL SELECT語句來讀取數(shù)據(jù)。
如需有條件地從表中選取數(shù)據(jù),可將 WHERE 子句添加到 SELECT 語句中
以下是SQL SELECT語句使用 WHERE 子句從數(shù)據(jù)表中讀取數(shù)據(jù)的通用語法:
SELECT field1,field2,...fieldN FROM table_name1, table_name2...
[WHERE condition1 [AND[OR]] condition2.....
WHERE子句也可以運(yùn)用于SQL的 DELETE 或者 UPDATE 命令。
使用 LIKE 來比較字符串,否則MySQL的WHERE子句的字符串比較是不區(qū)分大小寫的。 你可以使用 BINARY 關(guān)鍵字來設(shè)定WHERE子句的字符串比較是區(qū)分大小寫的。
23.使用PHP腳本讀取數(shù)據(jù)
使用PHP函數(shù)的mysql_query()及相同的SQL SELECT 帶上 WHERE 子句的命令來獲取數(shù)據(jù)。該函數(shù)用于執(zhí)行SQL命令,然后通過 mysql_fetch_array() 來輸出所有查詢的數(shù)據(jù)。
$sql = 'SELECT w3cschool_id,w3cschool_title,
w3cschool_author, submission_date
FROM w3cschool_tbl
WHEREw3cschool_author="Sanjay"';
24.修改或更新MySQL中的數(shù)據(jù),我們可以使用SQL UPDATE 命令來操作。
通用SQL語法:
UPDATE table_name SET field1=new-value1, field2=new-value2
[WHERE Clause]
更新數(shù)據(jù)表中 w3cschool_id 為 3 的 w3cschool_title 字段值:
mysql>UPDATE w3cschool_tbl
-> SET w3cschool_title='Learning JAVA'
- > WHERE w3cschool_id=3;
使用PHP腳本更新數(shù)據(jù)
$sql = 'UPDATE w3cschool_tbl
SETw3cschool_title="Learning JAVA"
WHERE w3cschool_id=3';
25.DELETE FROM table_name[WHERE Clause
如果沒有指定 WHERE 子句,MySQL表中的所有記錄將被刪除。
可以在 WHERE 子句中指定任何條件
刪除w3cschool_tbl 表中 w3cschool_id 為3 的記錄
mysql> DELETE FROMw3cschool_tbl WHERE w3cschool_id=3;
用 PHP 腳本刪除數(shù)據(jù)
$sql = 'DELETE FROMw3cschool_tbl
WHERE w3cschool_id=3';
MySQL LIKE 子句
QL LIKE 子句中使用百分號(hào)(%)字符來表示任意字符
沒有使用百分號(hào)(%),LIKE 子句與等號(hào)(=)的效果是一樣的。
26.QL SELECT語句使用 LIKE子句從數(shù)據(jù)表中讀取數(shù)據(jù)的通用語法:
SELECT field1,field2,...fieldN table_name1, table_name2...
WHERE field1 LIKEcondition1 [AND [OR]] filed2 = 'somevalue'
LIKE 通常與 % 一同使用,類似于一個(gè)元字符的搜索
在PHP腳本中使用 LIKE 子句
$sql = 'SELECTw3cschool_id, w3cschool_title,
w3cschool_author,submission_date
FROM w3cschool_tbl
WHERE w3cschool_author LIKE"%jay%"';
MySQL 排序
SELECT field1,field2,...fieldN table_name1, table_name2...
ORDER BY field1,[field2...] [ASC [DESC]]
ASC 或 DESC 關(guān)鍵字來設(shè)置查詢結(jié)果是按升序或降序排列。默認(rèn)情況下,它是按升排列。
SELECT column_name,function(column_name)
FROM table_name
WHERE column_nameoperator value
GROUP BY column_name;
WITH ROLLUP 可以實(shí)現(xiàn)在分組統(tǒng)計(jì)數(shù)據(jù)基礎(chǔ)上再進(jìn)行相同的統(tǒng)計(jì)(SUM,AVG,COUNT…)。
coalesce 來設(shè)置一個(gè)可以取代NUll 的名稱,coalesce 語法:
select coalesce(a,b,c);
參數(shù)說明:如果a==null,則選擇b;如果b==null,則選擇c;如果a!=null,則選擇a;如果a b c 都為null ,則返回為null(沒意義)。
mysql> SELECTcoalesce(name, '總數(shù)'), SUM(singin) as singin_countFROM employee_tbl GROUP BY name WITHROLLUP;
+--------------------------+--------------+
| coalesce(name, '總數(shù)') | singin_count |
+--------------------------+--------------+
| 小麗 | 2 |
| 小明 | 7 |
| 小王 | 7 |
| 總數(shù) | 16 |
+--------------------------+--------------+
27.在SELECT, UPDATE 和 DELETE 語句中使用 Mysql 的 JOIN 來聯(lián)合多表查詢。
JOIN 按照功能大致分為如下三類:
INNER JOIN(內(nèi)連接,或等值連接):獲取兩個(gè)表中字段匹配關(guān)系的記錄。
LEFT JOIN(左連接):獲取左表所有記錄,即使右表沒有對(duì)應(yīng)匹配的記錄。
RIGHT JOIN(右連接):與 LEFT JOIN 相反,用于獲取右表所有記錄,即使左表沒有對(duì)應(yīng)匹配的記錄。
| w3cschool_author |w3cschool_count |
+-----------------+----------------+
| mahran | 20 |
| mahnaz | NULL |
| Jen | NULL |
| Gill | 20 |
| John Poul | 1 |
| Sanjay | 1 |
+-----------------+----------------+
mysql> SELECT * fromw3cschool_tbl;
+-------------+----------------+-----------------+-----------------+
| w3cschool_id | w3cschool_title | w3cschool_author |submission_date |
+-------------+----------------+-----------------+-----------------+
| 1 | Learn PHP | John Poul |2007-05-24 |
| 2 | LearnMySQL | Abdul S | 2007-05-24 |
| 3 | JAVATutorial | Sanjay | 2007-05-06 |
連接以上兩張表來讀取w3cschool_tbl表中所有w3cschool_author字段在tcount_tbl表對(duì)應(yīng)的w3cschool_count字段值:
mysql> SELECTa.w3cschool_id, a.w3cschool_author, b.w3cschool_count FROM w3cschool_tbl aINNER JOIN tcount_tbl b ON a.w3cschool_author = b.w3cschool_author;
+-----------+---------------+--------------+
| w3cschool_id | w3cschool_author | w3cschool_count |
+-----------+---------------+--------------+
| 1 | John Poul | 1 |
| 3 | Sanjay | 1 |
w3cschool_tbl 為左表,tcount_tbl 為右表,
mysql> SELECTa.w3cschool_id, a.w3cschool_author, b.w3cschool_count FROM w3cschool_tbl a LEFTJOIN tcount_tbl b ON a.w3cschool_author = b.w3cschool_author;
+-------------+-----------------+----------------+
| w3cschool_id | w3cschool_author | w3cschool_count |
+-------------+-----------------+----------------+
| 1 | John Poul | 1 |
| 2 | Abdul S | NULL |
| 3 | Sanjay | 1 |
左邊的數(shù)據(jù)表w3cschool_tbl的所有選取的字段數(shù)據(jù),即便在右側(cè)表tcount_tbl中沒有對(duì)應(yīng)的w3cschool_author字段值A(chǔ)bdul S。
MySQL NULL
IS NULL: 當(dāng)列的值是NULL,此運(yùn)算符返回true。
IS NOT NULL: 當(dāng)列的值不為NULL, 運(yùn)算符返回true。
NULL值與任何其它值的比較(即使是NULL)永遠(yuǎn)返回false,
使用PHP腳本處理 NULL 值:
PHP腳本中你可以在 if...else 語句來處理變量是否為空,并生成相應(yīng)的條件語句。
28.MySQL中使用 REGEXP 操作符來進(jìn)行正則表達(dá)式匹配。
^ 匹配輸入字符串的開始位置。如果設(shè)置了 RegExp 對(duì)象的 Multiline 屬性,^ 也匹配 '\n' 或 '\r' 之后的位置。
$ 匹配輸入字符串的結(jié)束位置。如果設(shè)置了RegExp 對(duì)象的 Multiline 屬性,$ 也匹配 '\n' 或 '\r' 之前的位置。
. 匹配除"\n" 之外的任何單個(gè)字符。要匹配包括 '\n' 在內(nèi)的任何字符,請(qǐng)使用象 '[.\n]' 的模式。
實(shí)例(表名:person_tbl )來加深我們的理解:
查找name字段中以'st'為開頭的所有數(shù)據(jù):
mysql> SELECT name FROM person_tbl WHERE name REGEXP '^st';
查找name字段中以'ok'為結(jié)尾的所有數(shù)據(jù):
mysql> SELECT name FROM person_tbl WHERE name REGEXP 'ok$';
查找name字段中包含'mar'字符串的所有數(shù)據(jù):
mysql> SELECT name FROM person_tbl WHERE name REGEXP 'mar';
查找name字段中以元音字符開頭或以'ok'字符串結(jié)尾的所有數(shù)據(jù):
mysql> SELECT name FROM person_tbl WHERE name REGEXP'^[aeiou]|ok$';
29.MySQL 事務(wù)主要用于處理操作量大,復(fù)雜度高的數(shù)據(jù)。
在MySQL中只有使用了Innodb數(shù)據(jù)庫(kù)引擎的數(shù)據(jù)庫(kù)或表才支持事務(wù)
事務(wù)處理可以用來維護(hù)數(shù)據(jù)庫(kù)的完整性,保證成批的SQL語句要么全部執(zhí)行,要么全部不執(zhí)行
事務(wù)用來管理insert,update,delete語句
事務(wù)必須滿足4個(gè)條件(ACID): Atomicity(原子性)、Consistency(穩(wěn)定性)、Isolation(隔離性)、Durability(可靠性)
1、事務(wù)的原子性:一組事務(wù),要么成功;要么撤回。
2、穩(wěn)定性: 有非法數(shù)據(jù)(外鍵約束之類),事務(wù)撤回。
3、隔離性:事務(wù)獨(dú)立運(yùn)行。一個(gè)事務(wù)處理后的結(jié)果,影響了其他事務(wù),那么其他事務(wù)會(huì)撤回。事務(wù)的100%隔離,需要犧牲速度。
4、可靠性:軟、硬件崩潰后,InnoDB數(shù)據(jù)表驅(qū)動(dòng)會(huì)利用日志文件重構(gòu)修改。可靠性和高速度不可兼得, innodb_flush_log_at_trx_commit選項(xiàng) 決定什么時(shí)候吧事務(wù)保存到日志里。
1,開始一個(gè)事務(wù)
start transaction
2, 做保存點(diǎn)
savepoint 保存點(diǎn)名稱
3, 操作
4,可以回滾,可以提交,沒有問題,就提交,有問題就回滾。
PHP中使用事務(wù)實(shí)例
mysql_query("SETAUTOCOMMIT=0");//設(shè)置為不自動(dòng)提交,因?yàn)镸YSQL默認(rèn)立即執(zhí)行mysql_query("BEGIN");//開始事務(wù)定義
if(!mysql_query("insertinto trans (id) values('2')")) { mysql_query("ROOLBACK");//判斷當(dāng)執(zhí)行失敗時(shí)回滾 } mysql_query("COMMIT");//執(zhí)行事務(wù) mysql_close($handler); MySQL ALTER
30.修改數(shù)據(jù)表名或者修改數(shù)據(jù)表字段時(shí),就需要使用到MySQL ALTER命令。
使用了 ALTER 命令及 DROP 子句來刪除以上創(chuàng)建表的 i字段:
mysql> ALTER TABLEtestalter_tbl DROP i;
數(shù)據(jù)表中只剩余一個(gè)字段則無法使用DROP來刪除字段。
ADD 子句來想數(shù)據(jù)表中添加列,在表 testalter_tbl 中添加 i 字段,并定義數(shù)據(jù)類型:
mysql> ALTER TABLEtestalter_tbl ADD i INT;
以下 ALTERTABLE 語句, 在執(zhí)行成功后,使用 SHOW COLUMNS 查看表結(jié)構(gòu)的變化:
ALTER TABLEtestalter_tbl DROP i;
ALTER TABLEtestalter_tbl ADD i INT FIRST;
ALTER TABLEtestalter_tbl DROP i;
ALTER TABLEtestalter_tbl ADD i INT AFTER c;
FIRST 和 AFTER 關(guān)鍵字只占用于 ADD 子句,所以如果你想重置數(shù)據(jù)表字段的位置就需要先使用 DROP 刪除字段然后使用 ADD 來添加字段并設(shè)置位置。
修改字段類型及名稱:
31.在ALTER命令中使用 MODIFY 或 CHANGE 子句 。
把字段 c 的類型從 CHAR(1) 改為 CHAR(10),可以執(zhí)行以下命令:
mysql> ALTER TABLEtestalter_tbl MODIFY c CHAR(10);
使用 CHANGE 子句, 語法有很大的不同。 在 CHANGE 關(guān)鍵字之后,緊跟著的是你要修改的字段名,然后指定新字段的類型及名稱。嘗試如下實(shí)例:
mysql> ALTER TABLEtestalter_tbl CHANGE i j BIGINT;
<p如果你現(xiàn)在想把字段 j 從 BIGINT 修改為 INT,SQL語句如下:
mysql> ALTER TABLEtestalter_tbl CHANGE j j INT;
ALTER修改字段的默認(rèn)值,mysql> ALTER TABLEtestalter_tbl ALTER i SET DEFAULT 1000;
ALTER 及DROP刪除字段的默認(rèn)值, ALTER TABLEtestalter_tbl ALTER i DROP DEFAULT;
ALTER及 TYPE修改數(shù)據(jù)表類型,mysql> ALTER TABLEtestalter_tbl TYPE = MYISAM;
ALTER TABLE 使用RENAME修改數(shù)據(jù)表的名稱,mysql> ALTER TABLEtestalter_tbl RENAME TO alter_tbl;
索引可以大大提高M(jìn)ySQL的檢索速度
索引分單列索引和組合索引。單列索引,即一個(gè)索引只包含單個(gè)列,一個(gè)表可以有多個(gè)單列索引,但這不是組合索引。組合索引,即一個(gè)索包含多個(gè)列。
創(chuàng)建索引,確保該索引是應(yīng)用在 SQL 查詢語句的條件(一般作為 WHERE 子句的條件)。
索引也是一張表,該表保存了主鍵與索引字段,并指向?qū)嶓w表的記錄。
缺點(diǎn):雖然索引大大提高了查詢速度,同時(shí)卻會(huì)降低更新表的速度,如對(duì)表進(jìn)行INSERT、UPDATE和DELETE。因?yàn)楦卤頃r(shí),MySQL不僅要保存數(shù)據(jù),還要保存一下索引文件。
3方式創(chuàng)建普通索引
CREATE INDEX indexName ONmytable(username(length));
如果是CHAR,VARCHAR類型,length可以小于字段實(shí)際長(zhǎng)度;如果是BLOB和TEXT類型,必須指定 length。
修改表結(jié)構(gòu)
ALTER mytable ADD INDEX[indexName] ON (username(length))
創(chuàng)建表的時(shí)候直接指定
CREATE TABLE mytable( ID INT NOT NULL, username VARCHAR(16) NOTNULL, INDEX [indexName](username(length)) );
刪除索引的語法
DROP INDEX [indexName] ONmytable;
唯一索引:前面加UNIQUE
使用ALTER 命令添加和刪除索引
有四種方式來添加數(shù)據(jù)表的索引:
ALTER TABLE tbl_name ADD PRIMARYKEY (column_list):該語句添加一個(gè)主鍵,這意味著索引值必須是唯一的,且不能為NULL。
ALTER TABLE tbl_name ADD UNIQUEindex_name (column_list):這條語句創(chuàng)建索引的值必須是唯一的(除了NULL外,NULL可能會(huì)出現(xiàn)多次)。
ALTER TABLE tbl_name ADD INDEXindex_name (column_list):添加普通索引,索引值可出現(xiàn)多次。
ALTER TABLE tbl_name ADD FULLTEXTindex_name (column_list):該語句指定了索引為 FULLTEXT ,用于全文索引。
使用 ALTER 命令添加和刪除主鍵
主鍵只能作用于一個(gè)列上,添加主鍵索引時(shí),你需要確保該主鍵默認(rèn)不為空(NOT NULL)。實(shí)例如下:
mysql> ALTER TABLEtestalter_tbl MODIFY i INT NOT NULL;
mysql> ALTER TABLEtestalter_tbl ADD PRIMARY KEY (i);
你也可以使用 ALTER 命令刪除主鍵:
mysql> ALTER TABLEtestalter_tbl DROP PRIMARY KEY;
SHOW INDEX 命令列出表中的相關(guān)的索引信息。可以通過添加 \G 來格式化輸出信息。
mysql> SHOW INDEX FROMtable_name\G
MySQL 臨時(shí)表
臨時(shí)表只在當(dāng)前連接可見,當(dāng)關(guān)閉連接時(shí),MySQL會(huì)自動(dòng)刪除表并釋放所有空間。
mysql> CREATE TEMPORARY TABLE SalesSummary
mysql> DROP TABLE SalesSummary;
MySQL 復(fù)制表
創(chuàng)建新的克隆表clone_tbl。如果你想拷貝數(shù)據(jù)表的數(shù)據(jù)你可以使用 INSERT INTO... SELECT 語句來實(shí)現(xiàn)。
mysql> INSERT INTOclone_tbl (w3cschool_id,
-> w3cschool_title,
-> w3cschool_author,
-> submission_date)
-> SELECT w3cschool_id,w3cschool_title,
-> w3cschool_author,submission_date
->FROM w3cschool_tbl;
想知道MySQL以下三種信息:
查詢結(jié)果信息: SELECT,UPDATE 或 DELETE語句影響的記錄數(shù)。
數(shù)據(jù)庫(kù)和數(shù)據(jù)表的信息: 包含了數(shù)據(jù)庫(kù)及數(shù)據(jù)表的結(jié)構(gòu)信息。
MySQL服務(wù)器信息: 包含了數(shù)據(jù)庫(kù)服務(wù)器的當(dāng)前狀態(tài),版本號(hào)等。
(1)使用do( ) 執(zhí)行 $query
my $count = $dbh->do($query);
(2)使用prepare( )及 execute( ) 執(zhí)行 $query
my $sth =$dbh->prepare ($query);
my $count =$sth->execute ( );
在PHP中,使用mysql_affected_rows( ) 函數(shù)獲取查詢語句影響的記錄數(shù)。
$result_id =mysql_query ($query, $conn_id); # 如果查詢失敗返回 $count = ($result_id ?mysql_affected_rows ($conn_id) : 0); print ("$countrows were affected\n");
PERL 實(shí)例
# 獲取當(dāng)前數(shù)據(jù)庫(kù)中所有可用的表。
my @tables =$dbh->tables ( ); foreach $table (@tables){ print "Table Name $table\n"; }
PHP 實(shí)例:
$db_list =mysql_list_dbs($con); while ($db = mysql_fetch_object($db_list)) { echo $db->Database . "<br/>"; }
MySQL 序列
MySQL序列是一組整數(shù):1, 2, 3, ...,
用 MySQLAUTO_INCREMENT 來定義列。
mysql> CREATE TABLEinsect
-> (
-> id INT UNSIGNED NOT NULLAUTO_INCREMENT,
用 SQL中的LAST_INSERT_ID() 函數(shù)來獲取最后的插入表中的自增列的值。
PERL實(shí)例
使用mysql_insertid 屬性來獲取 AUTO_INCREMENT 的值。實(shí)例如下:
$dbh->do("INSERT INTO insect (name,date,origin)
VALUES('moth','2001-09-14','windowsill')");
my $seq =$dbh->{mysql_insertid};
PHP實(shí)例
PHP 通過 mysql_insert_id ()函數(shù)來獲取執(zhí)行的插入SQL語句中 AUTO_INCREMENT列的值。
mysql_query("INSERT INTO insect (name,date,origin) VALUES('moth','2001-09-14','windowsill')",$conn_id); $seq = mysql_insert_id($conn_id);
重置序列
刪除了數(shù)據(jù)表中的多條記錄,并對(duì)剩下數(shù)據(jù)的AUTO_INCREMENT列進(jìn)行重新排列,那么你可以通過刪除自增的列,然后重新添加來實(shí)現(xiàn)。
mysql> ALTER TABLEinsect DROP id;
mysql> ALTER TABLEinsect
-> ADD id INT UNSIGNED NOT NULLAUTO_INCREMENT FIRST,
-> ADD PRIMARY KEY (id);
一般情況下序列的開始值為1,但如果你需要指定一個(gè)開始值100:
-> id INT UNSIGNEDNOT NULL AUTO_INCREMENT = 100,
或在表創(chuàng)建成功后,通過以下語句來實(shí)現(xiàn):
mysql> ALTER TABLE tAUTO_INCREMENT = 100;
防止表中出現(xiàn)重復(fù)數(shù)據(jù)
在MySQL數(shù)據(jù)表中設(shè)置指定的字段為PRIMARY KEY(主鍵)或者UNIQUE(唯一)索引保證數(shù)據(jù)的唯一性。
設(shè)置表中字段first_name,last_name數(shù)據(jù)不能重復(fù),你可以設(shè)置雙主鍵模式來設(shè)置數(shù)據(jù)的唯一性, 如果你設(shè)置了雙主鍵,那么那個(gè)鍵的默認(rèn)值不能為NULL,可設(shè)置為NOT NULL。如下所示:
CREATE TABLE person_tbl ( first_name CHAR(20) NOT NULL, last_name CHAR(20) NOT NULL, sexCHAR(10), PRIMARY KEY (last_name, first_name) );
INSERT IGNOREINTO與INSERT INTO的區(qū)別就是INSERT IGNORE會(huì)忽略數(shù)據(jù)庫(kù)中已經(jīng)存在的數(shù)據(jù),如果數(shù)據(jù)庫(kù)沒有數(shù)據(jù),就插入新的數(shù)據(jù),如果有數(shù)據(jù)的話就跳過這條數(shù)據(jù)。這樣可以保留數(shù)據(jù)庫(kù)中已經(jīng)存在數(shù)據(jù),達(dá)到在間隙中插入數(shù)據(jù)的目的。
用了INSERT IGNORE INTO,執(zhí)行后不會(huì)出錯(cuò),也不會(huì)向數(shù)據(jù)表中插入重復(fù)數(shù)據(jù):
mysql> INSERT IGNORE INTO person_tbl(last_name, first_name)
->VALUES( 'Jay', 'Thomas');
Query OK, 1 row affected (0.00 sec)
REPLACE INTO into如果存在primary 或 unique相同的記錄,則先刪除掉。再插入新記錄。
UNIQUE(last_name, first_name)
查詢重復(fù)記錄
select user_name,count(*) as count fromuser_table group by user_name having count>1;
select * from people
where peopleId in (select peopleId from peoplegroup by peopleId having count(peopleId) > 1)
統(tǒng)計(jì)重復(fù)數(shù)據(jù)
統(tǒng)計(jì)表中 first_name 和 last_name的重復(fù)記錄數(shù):
mysql> SELECT COUNT(*) as repetitions,last_name, first_name ->FROM person_tbl ->GROUP BY last_name, first_name ->HAVING repetitions > 1;
讀取不重復(fù)的數(shù)據(jù)可以在SELECT 語句中使用 DISTINCT 關(guān)鍵字來過濾重復(fù)數(shù)據(jù)。
mysql> SELECT DISTINCT last_name, first_name
->FROM person_tbl
->ORDER BY last_name;
也可以使用 GROUP BY 來讀取數(shù)據(jù)表中不重復(fù)的數(shù)據(jù):
mysql> SELECT last_name, first_name ->FROM person_tbl ->GROUP BY (last_name, first_name);
刪除數(shù)據(jù)表中的重復(fù)數(shù)據(jù),你可以使用以下的SQL語句:
mysql> CREATE TABLE tmp SELECT last_name,first_name, sex -> FROMperson_tbl; -> GROUP BY(last_name, first_name); mysql> DROP TABLE person_tbl; mysql> ALTER TABLE tmp RENAME TO person_tbl;
也可以在數(shù)據(jù)表中添加 INDEX(索引) 和 PRIMAY KEY(主鍵)這種簡(jiǎn)單的方法來刪除表中的重復(fù)記錄。方法如下:
mysql> ALTER IGNORE TABLE person_tbl ->ADD PRIMARY KEY (last_name, first_name);
MySQL 及 SQL 注入
沒有過濾特殊字符時(shí),出現(xiàn)的SQL情況:
// 設(shè)定$name 中插入了我們不需要的SQL語句
$name = "Qadir';DELETE FROM users;";
mysql_query("SELECT* FROM users WHERE name='{$name}'");
以上的注入語句中,我們沒有對(duì) $name 的變量進(jìn)行過濾,$name中插入了我們不需要的SQL語句,將刪除 users 表中的所有數(shù)據(jù)。
防止SQL注入,注意以下幾個(gè)要點(diǎn):
1.永遠(yuǎn)不要信任用戶的輸入。對(duì)用戶的輸入進(jìn)行校驗(yàn),可以通過正則表達(dá)式,或限制長(zhǎng)度;對(duì)單引號(hào)和雙"-"進(jìn)行轉(zhuǎn)換等。
2.永遠(yuǎn)不要使用動(dòng)態(tài)拼裝sql,可以使用參數(shù)化的sql或者直接使用存儲(chǔ)過程進(jìn)行數(shù)據(jù)查詢存取。
3.永遠(yuǎn)不要使用管理員權(quán)限的數(shù)據(jù)庫(kù)連接,為每個(gè)應(yīng)用使用單獨(dú)的權(quán)限有限的數(shù)據(jù)庫(kù)連接。
4.不要把機(jī)密信息直接存放,加密或者h(yuǎn)ash掉密碼和敏感的信息。
5.應(yīng)用的異常信息應(yīng)該給出盡可能少的提示,最好使用自定義的錯(cuò)誤信息對(duì)原始錯(cuò)誤信息進(jìn)行包裝
6.sql注入的檢測(cè)方法一般采取輔助軟件或網(wǎng)站平臺(tái)來檢測(cè),軟件一般采用sql注入檢測(cè)工具jsky,網(wǎng)站平臺(tái)就有億思網(wǎng)站安全平臺(tái)檢測(cè)工具。MDCSOFT SCAN等。采用MDCSOFT-IPS可以有效的防御SQL注入,XSS攻擊等。
在腳本語言,如Perl和PHP可以對(duì)用戶輸入的數(shù)據(jù)進(jìn)行轉(zhuǎn)義從而來防止SQL注入。
PHP的MySQL擴(kuò)展提供了mysql_real_escape_string()函數(shù)來轉(zhuǎn)義特殊的輸入字符。
if (get_magic_quotes_gpc()) { $name = stripslashes($name); } $name =mysql_real_escape_string($name); mysql_query("SELECT * FROMusers WHERE name='{$name}'");
like查詢時(shí),如用戶輸入的值有"_"和"%",則會(huì)出現(xiàn)這種情況:用戶本只想查詢"abcd_",查詢結(jié)果中卻有"abcd_"、"abcde"、"abcdf"等等;用戶要查詢"30%"(注:百分之三十)時(shí)也會(huì)出現(xiàn)問題。
在PHP腳本中我們可以使用addcslashes()函數(shù)來處理以上情況,如下實(shí)例:
$sub =addcslashes(mysql_real_escape_string("%something_"), "%_");
// $sub == \%something\_
mysql_query("SELECT * FROMmessages WHERE subject LIKE '{$sub}%'");
addcslashes() 函數(shù)在指定的字符前添加反斜杠。
語法格式:
addcslashes(string,characters)
使用 SELECT ...INTO OUTFILE 語句導(dǎo)出數(shù)據(jù)
將數(shù)據(jù)表w3cschool_tbl 數(shù)據(jù)導(dǎo)出到 /tmp/tutorials.txt 文件中:
mysql> SELECT * FROMtutorials_tbl
-> INTO OUTFILE '/tmp/tutorials.txt';
生成一個(gè)文件,各值用逗號(hào)隔開。這種格式可以被許多程序使用。
SELECT a,b,a+b INTOOUTFILE '/tmp/result.text' FIELDS TERMINATED BY',' OPTIONALLY ENCLOSED BY '"' LINES TERMINATED BY'\n' FROM test_table;
SELECT ... INTO OUTFILE 語句有以下屬性:
LOAD DATA INFILE是SELECT ... INTO OUTFILE的逆操作,SELECT句法。為了將一個(gè)數(shù)據(jù)庫(kù)的數(shù)據(jù)寫入一個(gè)文件,使用SELECT ... INTO OUTFILE,為了將文件讀回?cái)?shù)據(jù)庫(kù),使用LOAD DATA INFILE。
SELECT...INTO OUTFILE 'file_name'形式的SELECT可以把被選擇的行寫入一個(gè)文件中。該文件被創(chuàng)建到服務(wù)器主機(jī)上,因此您必須擁有FILE權(quán)限,才能使用此語法。
輸出不能是一個(gè)已存在的文件。防止文件數(shù)據(jù)被篡改。
你需要有一個(gè)登陸服務(wù)器的賬號(hào)來檢索文件。否則SELECT ... INTO OUTFILE 不會(huì)起任何作用。
在UNIX中,該文件被創(chuàng)建后是可讀的,權(quán)限由MySQL服務(wù)器所擁有。這意味著,雖然你就可以讀取該文件,但可能無法將其刪除
mysqldump是MySQL用于轉(zhuǎn)存儲(chǔ)數(shù)據(jù)庫(kù)的實(shí)用程序。
將數(shù)據(jù)表tutorials_tbl 導(dǎo)出到 /tmp 目錄中:
$ mysqldump -u root -p--no-create-info \
--tab=/tmp W3CSCHOOL w3cschool_tbl
password ******
導(dǎo)出整個(gè)數(shù)據(jù)庫(kù)的數(shù)據(jù),可以使用以下命令:
$ mysqldump -u root -pW3CSCHOOL > database_dump.txt
password ******
備份所有數(shù)據(jù)庫(kù),可以使用以下命令:
$ mysqldump -u root -p--all-databases > database_dump.txt
password ******
在 mysqldump 命令中指定數(shù)據(jù)庫(kù)名及數(shù)據(jù)表。
在源主機(jī)上執(zhí)行以下命令,將數(shù)據(jù)備份至 dump.txt 文件中:
$ mysqldump -u root -pdatabase_name table_name > dump.txt
password *****
將備份的數(shù)據(jù)庫(kù)導(dǎo)入到MySQL服務(wù)器中,可以使用以下命令,使用以下命令你需要確認(rèn)數(shù)據(jù)庫(kù)已經(jīng)創(chuàng)建:
$ mysql -u root -pdatabase_name < dump.txt password *****
以下命令將導(dǎo)出的數(shù)據(jù)直接導(dǎo)入到遠(yuǎn)程的服務(wù)器上,但請(qǐng)確保兩臺(tái)服務(wù)器是相通的,是可以相互訪問的:</p>
$ mysqldump -u root -pdatabase_name \
| mysql -h other-host.com database_name
從當(dāng)前目錄中讀取文件dump.txt ,將該文件中的數(shù)據(jù)插入到當(dāng)前數(shù)據(jù)庫(kù)的 mytbl 表中。
mysql> LOAD DATALOCAL INFILE 'dump.txt' INTO TABLE mytbl;
如果用戶指定一個(gè)FIELDS 子句,它的子句(TERMINATED BY、[OPTIONALLY] ENCLOSED BY 和 ESCAPED BY) 也是可選的,不過,用戶必須至少指定它們中的一個(gè)。
mysql> LOAD DATALOCAL INFILE 'dump.txt' INTO TABLE mytbl
-> FIELDS TERMINATED BY ':'
-> LINES TERMINATED BY '\r\n';
指定列的順序。
如,在數(shù)據(jù)文件中的列順序是a,b,c,但在插入表的列順序?yàn)閎,c,a,則數(shù)據(jù)導(dǎo)入語法如下:
mysql> LOAD DATALOCAL INFILE 'dump.txt'
-> INTO TABLE mytbl (b, c, a);
mysqlimport客戶端提供了LOADDATA INFILEQL語句的一個(gè)命令行接口。mysqlimport的大多數(shù)選項(xiàng)直接對(duì)應(yīng)LOAD DATA INFILE子句。
從文件 dump.txt 中將數(shù)據(jù)導(dǎo)入到 mytbl數(shù)據(jù)表中, 可以使用以下命令:
$ mysqlimport -u root-p --local database_name dump.txt
password *****
mysqlimport命令可以指定選項(xiàng)來設(shè)置指定格式,命令語句格式如下:
$ mysqlimport -u root-p --local --fields-terminated-by=":" \
--lines-terminated-by="\r\n" database_name dump.txt
password *****
mysqlimport 語句中使用 --columns 選項(xiàng)來設(shè)置列的順序:
$ mysqlimport -u root-p --local --columns=b,c,a \
database_name dump.txt
password *****
感謝各位的閱讀!關(guān)于“MySQL基礎(chǔ)的示例分析”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,讓大家可以學(xué)到更多知識(shí),如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到吧!
本文名稱:MySQL基礎(chǔ)的示例分析
文章來源:http://m.2m8n56k.cn/article20/jdsico.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供微信小程序、App設(shè)計(jì)、ChatGPT、云服務(wù)器、網(wǎng)站設(shè)計(jì)、外貿(mào)網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)