亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 數(shù)據(jù)庫 > MySQL > 正文

mysql入門之1小時學(xué)會MySQL基礎(chǔ)

2024-07-24 13:15:20
字體:
供稿:網(wǎng)友

MySQL入門

mySQL (關(guān)系型數(shù)據(jù)庫管理系統(tǒng))

MySQL是一個關(guān)系型數(shù)據(jù)庫管理系統(tǒng),由瑞典MySQL AB 公司開發(fā),目前屬于 Oracle 旗下產(chǎn)品。MySQL 是最流行的關(guān)系型數(shù)據(jù)庫管理系統(tǒng)之一,在 WEB 應(yīng)用方面,MySQL是最好的 RDBMS (Relational Database Management System,關(guān)系數(shù)據(jù)庫管理系統(tǒng)) 應(yīng)用軟件。

MySQL是一種關(guān)系數(shù)據(jù)庫管理系統(tǒng),關(guān)系數(shù)據(jù)庫將數(shù)據(jù)保存在不同的表中,而不是將所有數(shù)據(jù)放在一個大倉庫內(nèi),這樣就增加了速度并提高了靈活性。

MySQL所使用的 SQL 語言是用于訪問數(shù)據(jù)庫的最常用標(biāo)準(zhǔn)化語言。MySQL 軟件采用了雙授權(quán)政策,分為社區(qū)版和商業(yè)版,由于其體積小、速度快、總體擁有成本低,尤其是開放源碼這一特點,一般中小型網(wǎng)站的開發(fā)都選擇 MySQL 作為網(wǎng)站數(shù)據(jù)庫。
由于其社區(qū)版的性能卓越,搭配 PHP 和 Apache 可組成良好的開發(fā)環(huán)境。

1. 數(shù)據(jù)庫(Database)是按照數(shù)據(jù)結(jié)構(gòu)來組織、存儲和管理數(shù)據(jù)的倉庫,每個數(shù)據(jù)庫都有一個或多個不同的API用于創(chuàng)建,訪問,管理,搜索和復(fù)制所保存的數(shù)據(jù)。

2. 使用關(guān)系型數(shù)據(jù)庫管理系統(tǒng)(RDBMS)來存儲和管理的大數(shù)據(jù)量。關(guān)系型數(shù)據(jù)庫是建立在關(guān)系模型基礎(chǔ)上的數(shù)據(jù)庫,借助于集合代數(shù)等數(shù)學(xué)概念和方法來處理數(shù)據(jù)庫中的數(shù)據(jù)。

3. RDBMS特點:

1.數(shù)據(jù)以表格的形式出現(xiàn)

2.每行為各種記錄名稱

3.每列為記錄名稱所對應(yīng)的數(shù)據(jù)域

4.許多的行和列組成一張表單

5.若干的表單組成database

4. RDBMS 術(shù)語

冗余:存儲兩倍數(shù)據(jù),冗余可以使系統(tǒng)速度更快。

主鍵:主鍵是唯一的。一個數(shù)據(jù)表中只能包含一個主鍵。你可以使用主鍵來查詢數(shù)據(jù)。

外鍵:外鍵用于關(guān)聯(lián)兩個表。

復(fù)合鍵:復(fù)合鍵(組合鍵)將多個列作為一個索引鍵,一般用于復(fù)合索引。

索引:使用索引可快速訪問數(shù)據(jù)庫表中的特定信息。索引是對數(shù)據(jù)庫表中一列或多列的值進(jìn)行排序的一種結(jié)構(gòu)。類似于書籍的目錄。

參照完整性: 參照的完整性要求關(guān)系中不允許引用不存在的實體。與實體完整性是關(guān)系模型必須滿足的完整性約束條件,目的是保證數(shù)據(jù)的一致性

5. MySQL是一種關(guān)聯(lián)數(shù)據(jù)庫管理系統(tǒng),關(guān)聯(lián)數(shù)據(jù)庫將數(shù)據(jù)保存在不同的表中,而不是將所有數(shù)據(jù)放在一個大倉庫內(nèi),這樣就增加了速度并提高了靈活性。

MySQL管理

6. 啟動及關(guān)閉 MySQL服務(wù)器:

(1) 檢查MySQL服務(wù)器是否啟動:

ps -ef | grepmysqld

(2) 啟動MySQL服務(wù)器:

root@host# cd/usr/bin

./safe_mysqld&

(3) 關(guān)閉目前運行的 MySQL 服務(wù)器:

root@host# cd/usr/bin

./mysqladmin-u root -p shutdown

Enterpassword: ******

 

7. MySQL 用戶設(shè)置

在 MySQL 數(shù)據(jù)庫中的 user 表添加新用戶:

root@host# mysql -u root –p //選擇數(shù)據(jù)庫Enter password:*******mysql> use mysql;Database changedmysql> INSERT INTO user(host, user, password,select_priv, insert_priv,update_priv) //設(shè)置權(quán)限YVALUES ('localhost', 'guest',PASSWORD('guest123'), 'Y', 'Y','Y');Query OK, 1 row affected (0.20 sec)mysql> FLUSH PRIVILEGES;

注意需要執(zhí)行 FLUSH PRIVILEGES 語句。這個命令執(zhí)行后會重新載入授權(quán)表。

另外一種添加用戶的方法為通過SQL的 GRANT命令

mysql> GRANTSELECT,INSERT,UPDATE,DELETE,CREATE,DROP-> ON TUTORIALS.*-> TO 'zara'@'localhost'-> IDENTIFIED BY'zara123';

8. 管理MySQL的命令

USE 數(shù)據(jù)庫名 :選擇要操作的MySQL數(shù)據(jù)庫:

mysql> use W3CSCHOOL;

Database changed

SHOW DATABASES: 列出 MySQL 數(shù)據(jù)庫管理系統(tǒng)的數(shù)據(jù)庫列表:

mysql> SHOWDATABASES;

SHOW TABLES: 顯示指定數(shù)據(jù)庫所有表,用該命令前需用 use 命令選擇操作的數(shù)據(jù)庫。

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ù)庫管理系統(tǒng)的性能及統(tǒng)計信息。

mysql> SHOW TABLESTATUS FROM W3CSCHOOL; # 顯示數(shù)據(jù)庫 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,...);

MySQL 連接

10.使用MySQL二進(jìn)制方式連接

[root@host]# mysql -uroot -p
Enter password:******
登錄成功后會出現(xiàn)mysql> 命令提示窗口,你可以在上面執(zhí)行任何 SQL 語句。
退出 mysql> 命令提示窗口可以使用exit 命令:mysql> exit

11.使用 PHP腳本連接 MySQL

PHP 提供了 mysql_connect() 函數(shù)來連接數(shù)據(jù)庫。
connectionmysql_connect(server,user,passwd,new_link,client_flag);5各參數(shù)均可選
使用PHP的mysql_close() 函數(shù)來斷開與MySQL數(shù)據(jù)庫的鏈接。
bool mysql_close (resource $link_identifier );
通常不要用mysql_close(),因為已打開的非持久連接會在腳本執(zhí)行完畢后自動關(guān)閉。
mysql_close() 不會關(guān)閉由 mysql_pconnect() 建立的持久連接

$conn = mysql_connect($dbhost, $dbuser, $dbpass);if(! $conn ){die('Could not connect: ' .mysql_error());}echo 'Connected successfully';mysql_close($conn);

MySQL 創(chuàng)建/刪除數(shù)據(jù)庫

12.使用 mysqladmin創(chuàng)建數(shù)據(jù)庫

用root用戶登錄,root用戶擁有最高權(quán)限,可以使用 mysql mysqladmin 命令來創(chuàng)建數(shù)據(jù)庫。
[root@host]#mysqladmin -u root -pcreate/drop W3CSCHOOL
Enter password:***** 

13.使用 PHP腳本創(chuàng)建數(shù)據(jù)庫

PHP使用 mysql_query 函數(shù)來創(chuàng)建或者刪除 MySQL 數(shù)據(jù)庫。

bool mysql_query( sql, connection); $conn = mysql_connect($dbhost,$dbuser, $dbpass);if(! $conn ){ die('連接錯誤: ' . mysql_error());}echo '連接成功<br />';$sql= 'CREATE/DROP DATABASE W3CSCHOOL';$retval= mysql_query( $sql, $conn );if(! $retval ){ die('創(chuàng)建數(shù)據(jù)庫失敗: ' . mysql_error());}echo "數(shù)據(jù)庫 W3CSCHOOL創(chuàng)建成功/n";mysql_close($conn);

MySQL 選擇數(shù)據(jù)庫

14.使用PHP腳本選擇MySQL數(shù)據(jù)庫

PHP 提供了函數(shù) mysql_select_db來選取一個數(shù)據(jù)庫。

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);

MySQL 創(chuàng)建/刪除數(shù)據(jù)表

15.MySQL 創(chuàng)建數(shù)據(jù)表

創(chuàng)建MySQL數(shù)據(jù)表需要以下信息:

表名

表字段名

定義每個表字段

創(chuàng)建語法:CREATE TABLE table_name (column_name column_type);

刪除語法:DROP TABLE table_name ;

以下例子中我們將在 W3CSCHOOL 數(shù)據(jù)庫中創(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 ));

16.通過命令提示符創(chuàng)建表

使用 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命令終止符為分號 (;) 。 

17.使用PHP腳本創(chuàng)建/刪除數(shù)據(jù)表或插入數(shù)據(jù)

語法: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);

MySQL 插入數(shù)據(jù)

18.向MySQL數(shù)據(jù)表插入數(shù)據(jù)通用的 INSERT INTO SQL語法:

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

如果數(shù)據(jù)是字符型,必須使用單引號或者雙引號,如:"value"。

 

w3cschool_tbl表插入一條數(shù)據(jù):

mysql> INSERT INTOw3cschool_tbl
     ->(w3cschool_title, w3cschool_author,submission_date)
     ->VALUES
     ->("Learn PHP", "JohnPoul", NOW());

(->)不是SQL語句的一部分,它僅表示一個新行,如SQL語句太長,可通過回車鍵創(chuàng)建一個新行編寫SQL語句,SQL語句的命令結(jié)束符為分號(;)。

 

19.使用PHP腳本插入數(shù)據(jù)

  $sql = "INSERT INTO w3cschool_tbl ".
       "(w3cschool_title,w3cschool_author,submission_date) ".
       "VALUES ".
      "('$w3cschool_title','$w3cschool_author','$submission_date')";

MySQL 查詢數(shù)據(jù)

20.為在MySQL數(shù)據(jù)庫中查詢數(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ù)。

你可以使用星號(*)來代替其他字段,SELECT語句會返回表的所有字段數(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ù)據(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ù)組的索引。

MySQL 選擇數(shù)據(jù)

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子句也可以運用于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"';

 MySQL UPDATE

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';

MySQL DELETE

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 子句中使用百分號(%)字符來表示任意字符

沒有使用百分號(%),LIKE 子句與等號(=)的效果是一樣的。
26.QL SELECT語句使用 LIKE子句從數(shù)據(jù)表中讀取數(shù)據(jù)的通用語法:
SELECT field1,field2,...fieldN table_name1, table_name2...
WHERE field1 LIKEcondition1 [AND [OR]] filed2 = 'somevalue'
LIKE 通常與 % 一同使用,類似于一個元字符的搜索


在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)情況下,它是按升排列。

 

MySQL 分組

SELECT column_name,function(column_name)
FROM table_name
WHERE column_nameoperator value
GROUP BY column_name;

WITH ROLLUP 可以實現(xiàn)在分組統(tǒng)計數(shù)據(jù)基礎(chǔ)上再進(jìn)行相同的統(tǒng)計(SUM,AVG,COUNT…)。

coalesce 來設(shè)置一個可以取代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 |

+--------------------------+--------------+

 MySQL 多表查詢

27.在SELECT, UPDATE 和 DELETE 語句中使用 Mysql 的 JOIN 來聯(lián)合多表查詢。

JOIN 按照功能大致分為如下三類:

INNER JOIN(內(nèi)連接,或等值連接):獲取兩個表中字段匹配關(guān)系的記錄。
LEFT JOIN(左連接):獲取左表所有記錄,即使右表沒有對應(yīng)匹配的記錄。
RIGHT JOIN(右連接):與 LEFT JOIN 相反,用于獲取右表所有記錄,即使左表沒有對應(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表對應(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中沒有對應(yīng)的w3cschool_author字段值A(chǔ)bdul S。

MySQL NULL

IS NULL: 當(dāng)列的值是NULL,此運算符返回true。
IS NOT NULL: 當(dāng)列的值不為NULL, 運算符返回true。

NULL值與任何其它值的比較(即使是NULL)永遠(yuǎn)返回false,

使用PHP腳本處理 NULL 值:

PHP腳本中你可以在 if...else 語句來處理變量是否為空,并生成相應(yīng)的條件語句。

MySQL 正則表達(dá)式

28.MySQL中使用 REGEXP 操作符來進(jìn)行正則表達(dá)式匹配。

^     匹配輸入字符串的開始位置。如果設(shè)置了 RegExp 對象的 Multiline 屬性,^ 也匹配 '/n' 或 '/r' 之后的位置。
$     匹配輸入字符串的結(jié)束位置。如果設(shè)置了RegExp 對象的 Multiline 屬性,$ 也匹配 '/n' 或 '/r' 之前的位置。
.      匹配除"/n" 之外的任何單個字符。要匹配包括 '/n' 在內(nèi)的任何字符,請使用象 '[./n]' 的模式。

實例(表名: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$';

 MySQL 事務(wù)

29.MySQL 事務(wù)主要用于處理操作量大,復(fù)雜度高的數(shù)據(jù)。

在MySQL中只有使用了Innodb數(shù)據(jù)庫引擎的數(shù)據(jù)庫或表才支持事務(wù)

事務(wù)處理可以用來維護(hù)數(shù)據(jù)庫的完整性,保證成批的SQL語句要么全部執(zhí)行,要么全部不執(zhí)行

事務(wù)用來管理insert,update,delete語句

事務(wù)必須滿足4個條件(ACID): Atomicity(原子性)、Consistency(穩(wěn)定性)、Isolation(隔離性)、Durability(可靠性)

1、事務(wù)的原子性:一組事務(wù),要么成功;要么撤回。

2、穩(wěn)定性: 有非法數(shù)據(jù)(外鍵約束之類),事務(wù)撤回。

3、隔離性:事務(wù)獨立運行。一個事務(wù)處理后的結(jié)果,影響了其他事務(wù),那么其他事務(wù)會撤回。事務(wù)的100%隔離,需要犧牲速度。

4、可靠性:軟、硬件崩潰后,InnoDB數(shù)據(jù)表驅(qū)動會利用日志文件重構(gòu)修改??煽啃院透咚俣炔豢杉娴?, innodb_flush_log_at_trx_commit選項 決定什么時候吧事務(wù)保存到日志里。

 在MySQL控制臺使用事務(wù)來操作:

1,開始一個事務(wù)

start transaction

2, 做保存點

savepoint 保存點名稱

3, 操作

4,可以回滾,可以提交,沒有問題,就提交,有問題就回滾。

 PHP中使用事務(wù)實例

mysql_query("SETAUTOCOMMIT=0");//設(shè)置為不自動提交,因為MYSQL默認(rèn)立即執(zhí)行mysql_query("BEGIN");//開始事務(wù)定義

if(!mysql_query("insertinto trans (id) values('2')")){mysql_query("ROOLBACK");//判斷當(dāng)執(zhí)行失敗時回滾}mysql_query("COMMIT");//執(zhí)行事務(wù)mysql_close($handler);MySQL ALTER

30.修改數(shù)據(jù)表名或者修改數(shù)據(jù)表字段時,就需要使用到MySQL ALTER命令。

 

使用了 ALTER 命令及 DROP 子句來刪除以上創(chuàng)建表的 i字段:

mysql> ALTER TABLEtestalter_tbl  DROP i;

數(shù)據(jù)表中只剩余一個字段則無法使用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)鍵字之后,緊跟著的是你要修改的字段名,然后指定新字段的類型及名稱。嘗試如下實例:
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;

MySQL 索引

索引可以大大提高M(jìn)ySQL的檢索速度
索引分單列索引和組合索引。單列索引,即一個索引只包含單個列,一個表可以有多個單列索引,但這不是組合索引。組合索引,即一個索包含多個列。
創(chuàng)建索引,確保該索引是應(yīng)用在 SQL 查詢語句的條件(一般作為 WHERE 子句的條件)。
索引也是一張表,該表保存了主鍵與索引字段,并指向?qū)嶓w表的記錄。
缺點:雖然索引大大提高了查詢速度,同時卻會降低更新表的速度,如對表進(jìn)行INSERT、UPDATE和DELETE。因為更新表時,MySQL不僅要保存數(shù)據(jù),還要保存一下索引文件。
3方式創(chuàng)建普通索引

CREATE INDEX indexName ONmytable(username(length));

如果是CHAR,VARCHAR類型,length可以小于字段實際長度;如果是BLOB和TEXT類型,必須指定 length。

修改表結(jié)構(gòu)

ALTER mytable ADD INDEX[indexName] ON (username(length))

創(chuàng)建表的時候直接指定

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):該語句添加一個主鍵,這意味著索引值必須是唯一的,且不能為NULL。
ALTER TABLE tbl_name ADD UNIQUEindex_name (column_list):這條語句創(chuàng)建索引的值必須是唯一的(除了NULL外,NULL可能會出現(xiàn)多次)。
ALTER TABLE tbl_name ADD INDEXindex_name (column_list):添加普通索引,索引值可出現(xiàn)多次。
ALTER TABLE tbl_name ADD FULLTEXTindex_name (column_list):該語句指定了索引為 FULLTEXT ,用于全文索引。

 使用 ALTER 命令添加和刪除主鍵

主鍵只能作用于一個列上,添加主鍵索引時,你需要確保該主鍵默認(rèn)不為空(NOT NULL)。實例如下:

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 臨時表

臨時表只在當(dāng)前連接可見,當(dāng)關(guān)閉連接時,MySQL會自動刪除表并釋放所有空間。

mysql> CREATE TEMPORARY TABLE SalesSummary

mysql> DROP TABLE SalesSummary;

MySQL 復(fù)制表

創(chuàng)建新的克隆表clone_tbl。如果你想拷貝數(shù)據(jù)表的數(shù)據(jù)你可以使用 INSERT INTO... SELECT 語句來實現(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 元數(shù)據(jù)

想知道MySQL以下三種信息:

查詢結(jié)果信息: SELECT,UPDATE 或 DELETE語句影響的記錄數(shù)。
數(shù)據(jù)庫和數(shù)據(jù)表的信息: 包含了數(shù)據(jù)庫及數(shù)據(jù)表的結(jié)構(gòu)信息。
MySQL服務(wù)器信息: 包含了數(shù)據(jù)庫服務(wù)器的當(dāng)前狀態(tài),版本號等。

(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");

 數(shù)據(jù)庫和數(shù)據(jù)表列表

PERL 實例

# 獲取當(dāng)前數(shù)據(jù)庫中所有可用的表。

my @tables =$dbh->tables ( );foreach $table (@tables){ print "Table Name $table/n";}

PHP 實例:

$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實例

使用mysql_insertid 屬性來獲取 AUTO_INCREMENT 的值。實例如下:

$dbh->do("INSERT INTO insect (name,date,origin)

VALUES('moth','2001-09-14','windowsill')");

my $seq =$dbh->{mysql_insertid};

PHP實例

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ù)表中的多條記錄,并對剩下數(shù)據(jù)的AUTO_INCREMENT列進(jìn)行重新排列,那么你可以通過刪除自增的列,然后重新添加來實現(xiàn)。

mysql> ALTER TABLEinsect DROP id;

mysql> ALTER TABLEinsect

    -> ADD id INT UNSIGNED NOT NULLAUTO_INCREMENT FIRST,

    -> ADD PRIMARY KEY (id);

一般情況下序列的開始值為1,但如果你需要指定一個開始值100:

-> id INT UNSIGNEDNOT NULL AUTO_INCREMENT = 100,

或在表創(chuàng)建成功后,通過以下語句來實現(xiàn):

mysql> ALTER TABLE tAUTO_INCREMENT = 100;

 MySQL 處理重復(fù)數(shù)據(jù)

防止表中出現(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è)置了雙主鍵,那么那個鍵的默認(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會忽略數(shù)據(jù)庫中已經(jīng)存在的數(shù)據(jù),如果數(shù)據(jù)庫沒有數(shù)據(jù),就插入新的數(shù)據(jù),如果有數(shù)據(jù)的話就跳過這條數(shù)據(jù)。這樣可以保留數(shù)據(jù)庫中已經(jīng)存在數(shù)據(jù),達(dá)到在間隙中插入數(shù)據(jù)的目的。

用了INSERT IGNORE INTO,執(zhí)行后不會出錯,也不會向數(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)計重復(fù)數(shù)據(jù)

統(tǒng)計表中 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ù)

讀取不重復(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);

 刪除重復(fù)數(shù)據(jù)

刪除數(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(主鍵)這種簡單的方法來刪除表中的重復(fù)記錄。方法如下:

mysql> ALTER IGNORE TABLE person_tbl ->ADD PRIMARY KEY (last_name, first_name);

MySQL 及 SQL 注入

沒有過濾特殊字符時,出現(xiàn)的SQL情況:

// 設(shè)定$name 中插入了我們不需要的SQL語句

$name = "Qadir';DELETE FROM users;";

mysql_query("SELECT* FROM users WHERE name='{$name}'");

以上的注入語句中,我們沒有對 $name 的變量進(jìn)行過濾,$name中插入了我們不需要的SQL語句,將刪除 users 表中的所有數(shù)據(jù)。

 

防止SQL注入,注意以下幾個要點:

1.永遠(yuǎn)不要信任用戶的輸入。對用戶的輸入進(jìn)行校驗,可以通過正則表達(dá)式,或限制長度;對單引號和雙"-"進(jìn)行轉(zhuǎn)換等。

2.永遠(yuǎn)不要使用動態(tài)拼裝sql,可以使用參數(shù)化的sql或者直接使用存儲過程進(jìn)行數(shù)據(jù)查詢存取。

3.永遠(yuǎn)不要使用管理員權(quán)限的數(shù)據(jù)庫連接,為每個應(yīng)用使用單獨的權(quán)限有限的數(shù)據(jù)庫連接。

4.不要把機密信息直接存放,加密或者h(yuǎn)ash掉密碼和敏感的信息。

5.應(yīng)用的異常信息應(yīng)該給出盡可能少的提示,最好使用自定義的錯誤信息對原始錯誤信息進(jìn)行包裝

6.sql注入的檢測方法一般采取輔助軟件或網(wǎng)站平臺來檢測,軟件一般采用sql注入檢測工具jsky,網(wǎng)站平臺就有億思網(wǎng)站安全平臺檢測工具。MDCSOFT SCAN等。采用MDCSOFT-IPS可以有效的防御SQL注入,XSS攻擊等。

 在腳本語言,如Perl和PHP可以對用戶輸入的數(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語句中的注入

like查詢時,如用戶輸入的值有"_"和"%",則會出現(xiàn)這種情況:用戶本只想查詢"abcd_",查詢結(jié)果中卻有"abcd_"、"abcde"、"abcdf"等等;用戶要查詢"30%"(注:百分之三十)時也會出現(xiàn)問題。

在PHP腳本中我們可以使用addcslashes()函數(shù)來處理以上情況,如下實例:

$sub =addcslashes(mysql_real_escape_string("%something_"), "%_");

// $sub == /%something/_

mysql_query("SELECT * FROMmessages WHERE subject LIKE '{$sub}%'");

addcslashes() 函數(shù)在指定的字符前添加反斜杠。

語法格式:

addcslashes(string,characters) 

MySQL 導(dǎo)出數(shù)據(jù)

使用 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';

生成一個文件,各值用逗號隔開。這種格式可以被許多程序使用。

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句法。為了將一個數(shù)據(jù)庫的數(shù)據(jù)寫入一個文件,使用SELECT ... INTO OUTFILE,為了將文件讀回數(shù)據(jù)庫,使用LOAD DATA INFILE。

SELECT...INTO OUTFILE 'file_name'形式的SELECT可以把被選擇的行寫入一個文件中。該文件被創(chuàng)建到服務(wù)器主機上,因此您必須擁有FILE權(quán)限,才能使用此語法。

輸出不能是一個已存在的文件。防止文件數(shù)據(jù)被篡改。

你需要有一個登陸服務(wù)器的賬號來檢索文件。否則SELECT ... INTO OUTFILE 不會起任何作用。

在UNIX中,該文件被創(chuàng)建后是可讀的,權(quán)限由MySQL服務(wù)器所擁有。這意味著,雖然你就可以讀取該文件,但可能無法將其刪除

 導(dǎo)出表作為原始數(shù)據(jù)

mysqldump是MySQL用于轉(zhuǎn)存儲數(shù)據(jù)庫的實用程序。

將數(shù)據(jù)表tutorials_tbl 導(dǎo)出到 /tmp 目錄中:

$ mysqldump -u root -p--no-create-info /

            --tab=/tmp W3CSCHOOL w3cschool_tbl

password ******

導(dǎo)出整個數(shù)據(jù)庫的數(shù)據(jù),可以使用以下命令:

$ mysqldump -u root -pW3CSCHOOL > database_dump.txt

password ******

備份所有數(shù)據(jù)庫,可以使用以下命令:

$ mysqldump -u root -p--all-databases > database_dump.txt

password ******

在 mysqldump 命令中指定數(shù)據(jù)庫名及數(shù)據(jù)表。

在源主機上執(zhí)行以下命令,將數(shù)據(jù)備份至 dump.txt 文件中:

$ mysqldump -u root -pdatabase_name table_name > dump.txt

password *****

將備份的數(shù)據(jù)庫導(dǎo)入到MySQL服務(wù)器中,可以使用以下命令,使用以下命令你需要確認(rèn)數(shù)據(jù)庫已經(jīng)創(chuàng)建:

$ mysql -u root -pdatabase_name < dump.txt password *****

以下命令將導(dǎo)出的數(shù)據(jù)直接導(dǎo)入到遠(yuǎn)程的服務(wù)器上,但請確保兩臺服務(wù)器是相通的,是可以相互訪問的:</p>

$ mysqldump -u root -pdatabase_name /

       | mysql -h other-host.com database_name

 MySQL 導(dǎo)入數(shù)據(jù)

從當(dāng)前目錄中讀取文件dump.txt ,將該文件中的數(shù)據(jù)插入到當(dāng)前數(shù)據(jù)庫的 mytbl 表中。

mysql> LOAD DATALOCAL INFILE 'dump.txt' INTO TABLE mytbl;

如果用戶指定一個FIELDS 子句,它的子句(TERMINATED BY、[OPTIONALLY] ENCLOSED BY 和 ESCAPED BY) 也是可選的,不過,用戶必須至少指定它們中的一個。

mysql> LOAD DATALOCAL INFILE 'dump.txt' INTO TABLE mytbl

  -> FIELDS TERMINATED BY ':'

  -> LINES TERMINATED BY '/r/n';

指定列的順序。

如,在數(shù)據(jù)文件中的列順序是a,b,c,但在插入表的列順序為b,c,a,則數(shù)據(jù)導(dǎo)入語法如下:

mysql> LOAD DATALOCAL INFILE 'dump.txt'

    -> INTO TABLE mytbl (b, c, a);

 

使用mysqlimport 導(dǎo)入數(shù)據(jù)

mysqlimport客戶端提供了LOADDATA INFILEQL語句的一個命令行接口。mysqlimport的大多數(shù)選項直接對應(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命令可以指定選項來設(shè)置指定格式,命令語句格式如下:

$ mysqlimport -u root-p --local --fields-terminated-by=":" /

   --lines-terminated-by="/r/n"  database_name dump.txt

password *****

mysqlimport 語句中使用 --columns 選項來設(shè)置列的順序:

$ mysqlimport -u root-p --local --columns=b,c,a /

    database_name dump.txt

password *****


注:相關(guān)教程知識閱讀請移步到MYSQL教程頻道。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
114国产精品久久免费观看| 日韩人体视频一二区| 黑人巨大精品欧美一区二区奶水| 色综合影院在线观看| 精品一区二区在线免费观看| 四虎永久在线观看免费网站网址| 精品国产www| 性生交大片免费看女人按摩| 日本三级视频在线观看| 亚洲黄色免费观看| 久久久久国产精品一区二区| 精品国产乱码久久久久| 国产69久久精品成人| 97色在线视频观看| 在线视频日韩欧美| 秋霞午夜电影| 精品人体无码一区二区三区| 青青青青久久精品国产一百度| 国产三级在线观看完整版| 中文字幕一区二区中文字幕| 中文字幕一级片| 亚洲中文字幕无码一区| 午夜激情福利在线| 欧美三级黄色大片| 美丽的姑娘在线观看免费动漫| 欧美激情免费| 欧美高清另类hdvideosexjaⅴ| 国产成人免费视频网站视频社区| 国产传媒日韩欧美成人| 自拍偷拍欧美精品| 欧美绝顶高潮抽搐喷水合集| 伊人影院中文字幕| 亚洲综合小说图片| 二区在线播放| 亚洲片区在线| 日韩精品欧美一区二区三区| 国产传媒欧美日韩成人精品大片| 97在线观看视频| 欧美h版在线观看| 国产精品灌醉下药二区| 日本免费一级视频| 日本孕妇大胆孕交无码| 福利视频亚洲| 免费在线国产| 在线成人www免费观看视频| 麻豆视频网站在线观看| 91色九色蝌蚪| 日日夜夜综合| www.爱久久| 国产乱人伦精品一区二区在线观看| 5月丁香婷婷综合| 成人免费视频a| 成人网6969conwww| 国产视频精品免费| 91精品视频免费在线观看| 无码少妇一区二区三区| 欧美娇小极度另类| 国产白丝一区二区三区| 福利一区二区三区视频在线观看| 在线播放一区二区三区| 国模一区二区三区白浆| 国产又粗又猛又爽又黄的视频一| 麻豆视频在线观看免费网站| abab456成人免费网址| a篇片在线观看网站| 国产片一区二区三区| 亚洲激情成人| 精品久久久久久综合日本欧美| 不卡电影免费在线播放一区| 91社区视频| 麻豆乱码国产一区二区三区| www黄com| 制服.丝袜.亚洲.中文.综合| 日本不卡一区二区三区在线观看| 国产精品99久久免费| 岛国最新视频免费在线观看| 一卡二卡三卡四卡| 亚洲一区二区三区乱码| 国产高清一区日本| 日韩a**中文字幕| 奇米4444一区二区三区| 亚洲va国产va欧美va观看| 国模套图日韩精品一区二区| 1区2区3区欧美| 韩国精品一区二区三区| 国产伦精品一区二区三区精品视频| 久久亚洲精品一区二区| 99热99这里只有精品| 波多野结衣三级在线| 国产精品自偷自拍| 欧美亚洲国产一区二区三区| 精品少妇人妻av免费久久洗澡| 小早川怜子痴女在线精品视频| 99re这里只有精品在线| 成人短视频在线| 国产日产欧美精品一区二区三区| 又粗又大的机巴好爽欧美| 欧美一区二区在线不卡| 成年人黄视频在线观看| 亚洲在线一区二区| 5566成人精品视频免费| 亚洲色图五月天| 亚洲欧美综合v| 久久久久亚洲av片无码v| 8mav模特福利视频在线观看| 亚洲国产精品日韩专区av有中文| 久久精品国产99| 精品在线免费观看| 久久成人久久爱| 日本高清视频www| 国产鲁鲁视频在线观看免费| 日韩av男人天堂| 欧美e片成人在线播放乱妇| 国产精品久久久久久福利| 日韩精品免费综合视频在线播放| 亚洲成熟少妇视频在线观看| 国产精品老熟女一区二区| 天天干天天草| 欧美福利专区| 免费在线性爱视频| 国产伦理在线观看| 激情视频国产| 久久精品国产久精国产| 国产第一页在线观看| 国产美女网站在线观看| 日本一区二区三区四区在线观看| 欧美精品三区| 日韩午夜激情电影| 中文字幕一区二区三区色视频| 99热国内精品永久免费观看| 日本一区二区在线不卡| 亚洲中文字幕无码不卡电影| 亚洲日本在线播放| 噜噜噜在线观看免费视频日韩| 人xxxx性xxxxx欧美| 免费在线观看av片| 国产精品小说在线| 这里只有精品电影| 国产一区二区视频在线看| 91精品免费在线观看| 久久久精品中文字幕| a中文在线播放| 欧美日韩国产美| 99热国内精品| 色狠狠色噜噜噜综合网| 高清不卡av| 国产精品一区免费视频| 久久综合一区二区三区| 午夜在线精品偷拍| 无线免费在线视频| 国产精品欧美激情在线播放| 宅男午夜在线| 欧美性xxxxx极品少妇| 日韩激情电影| 在线欧美成人| 九九热只有这里有精品| 亚洲线精品一区二区三区| 欧美大胆成人| 国产盗摄一区二区| 久久精品日产第一区二区三区精品版| 成人av番号网| 日本xxxxxxxxxx75| 日韩欧美在线播放视频| 日韩av一区二区在线观看| 91高潮在线观看| 成人午夜影视| 综合欧美精品| 国产做受高潮漫动| 国产精品久久久精品| 久久国产视频网站| 亚洲精品国产成人久久av盗摄| 亚洲成人在线电影| 色婷婷综合成人| 精品一区免费| 国产一区二区在线视频播放| 久草网站在线观看| 国产精品a成v人在线播放| 久久国产在线观看| jlzzjlzz亚洲女人| 岛国视频一区免费观看| 色的视频在线免费看| 欧美xxxhd| 日韩久久久久久久久久| 伊人网中文字幕| 亚洲视频中文| 欧美在线色图| 日本一区二区高清视频| 伊人影院中文字幕| 成人手机在线视频| 最近中文字幕在线中文视频| 中文国语毛片高清视频| 国产一区二区三区四区五区六区| 久久这里只有精品国产| 日韩久久久久久久久久久| 亚洲第一天堂在线观看| 国产精品九九九九九| a黄色在线观看| 天天色天天操天天| 国产免费亚洲高清| 奇米一区二区三区四区久久| eeuss影院www影院入口| 视频一区二区三区免费观看| 亚洲欧美日韩一区在线观看| 性爱视频在线播放| 亚洲福利影视| 中文字幕伦理片| 一区精品久久| 亚洲综合在线一区二区| 国产精品久久久久久久美男| 高清性色生活片在线观看| 欧美性高跟鞋xxxxhd| 久久韩剧网电视剧| 国产又爽又黄的视频| 3d性欧美动漫精品xxxx软件| 国产精品毛片一区二区| 黄网站免费在线观看| gogogo高清在线观看免费完整版| 亚洲欧美偷拍另类| 在线免费av电影| 天天色天天看| 国产一区二区三区不卡在线| 九9re精品视频在线观看re6| 日韩精品在线一区| 新婚的少妇hd中文字幕| 9色porny自拍视频一区二区| 亚洲成人性视频| 亚洲一区二区三区激情| 欧美成人免费网站| 自拍小视频在线观看| 成人精品第一区二区三区| 欧美日本韩国在线| 久久综合九色欧美综合狠狠| 国产麻豆91精品| 亚洲欧美色图小说| 好吊色一区二区三区| 国产网红主播福利一区二区| 日本一区二区三区电影| 精品无人区太爽高潮在线播放| 欧美自拍偷拍午夜视频| 2020中文字幕在线播放| 在线一级成人| 波多野一区二区| 国产老熟女伦老熟妇露脸| 国产免费高清av| 正在播放一区二区三区| 欧美日韩一区二区三区在线看| 欧美激情综合色综合啪啪| 欧美特黄a级高清免费大片a级| 乡村艳史在线观看| 日本三级在线观看网站| 自拍视频在线看| 成人国产免费视频| 亚洲精品中文字幕成人片| 欧美精品18videosex性欧美| 午夜国产精品视频| 一区二区三区四区亚洲| 欧美激情第三页| 九九九视频在线观看| 国产精品久久毛片| 久久高清一区| 欧美三级视频| 日韩av一区二区在线观看| 十八禁视频网站在线观看| www狠狠操| 日韩专区在线视频| 久草在线免费福利| 电影一区二区三| 日本精品久久| 插菊花综合1| 青青视频一区二区| 国产精品美女久久久久高潮| 国产在线精品一区二区三区》| 亚洲成人久久精品| 日韩网站免费观看高清| 成人精品视频在线| 三级影片在线看| 欧美激情影音先锋| 日本成人片在线| 麻豆免费看一区二区三区| 亚洲主播在线播放| av在线亚洲男人的天堂| 亚洲激情成人| 97国产一区二区精品久久呦| 亚洲永久精品ww.7491进入| 国产精品99久久久久久人| 网站免费满18成年在线观看| 91精品国产高清久久久久久| 国产成人91久久精品| 婷婷伊人五月天| 国内精品2019| 亚洲不卡一卡2卡三卡4卡5卡精品| 亚洲精品7777| 日本啊v在线| 国产精品成人网站| 一二三四在线观看免费高清中文在线观看| 国产一区二区三区四区五区六区| 国产精品免费在线视频| 91成人免费视频| 91精品国产91久久久久久不卡| 国产人妖一区二区三区| 少妇精品放荡导航| 亚洲成色777777在线观看影院| 国产91久久久久| 久久久久亚洲精品国产| 国产精品99久久99久久久| 麻豆成人91精品二区三区| 中国老太性bbbxxxx| 中文字幕有码在线播放| 久久久久久久久久影院| 色婷婷精品久久二区二区密| 成人h猎奇视频网站| 免费精品视频一区| 日韩精品一区二区三区四区| 北条麻妃一区二区三区在线| 日韩精品一区二区三区免费观看| 天天射天天操天天干| 中文字幕av专区| 精品免费国产| av三级在线观看| 色老头在线观看| 国产欧美日韩在线观看视频| 国产xxxxxxxxx| 毛片a片免费观看| 美女航空一级毛片在线播放| 国产三级精品三级在线观看国产| 欧美日韩国产黄| 国产精品三级a三级三级午夜| 永久av免费在线观看|