日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

Mac操作数据库Mysql知识点备忘录

發(fā)布時間:2024/1/18 数据库 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Mac操作数据库Mysql知识点备忘录 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

目錄

Mac安裝Ubuntu啟動Mysql

Mac安裝Mysql

CenterOS

Mac

Mysql 8和5的密碼插件區(qū)別

介紹

基礎(chǔ)命令操作數(shù)據(jù)庫

遠程連接

數(shù)據(jù)庫操作命令

表操作命令

數(shù)據(jù)操作命令

備份與恢復(fù)命令

查詢分配

條件查詢

聚合查詢

分組查詢

排序

分頁查詢

高級特性

表關(guān)系建立和外鍵

inner join 連接查詢

完整的select語句

自關(guān)聯(lián)

視圖sql語句的封裝

事務(wù)

索引

小例子

Python3.6數(shù)據(jù)庫操作Demo

配置PYCharm

邏輯代碼

面向?qū)ο蠓庋b

登錄Demo


Mac安裝Ubuntu啟動Mysql

1.先安裝VirtualBoxVM? ?安裝搜狗

2.然后安裝Ubuntu系統(tǒng)安裝

3.打開Ubuntu左側(cè)工具欄選擇軟件中心,搜索Mysql更新安裝Mysql客戶端和Mysql服務(wù)端源

4.執(zhí)行命令安裝

安裝

sudo apt-get install mysql-server mysql-client 然后按照提示輸入

一旦安裝完成,MySQL 服務(wù)器應(yīng)該自動啟動。您可以在終端提示符后運行以下命令來檢查 MySQL 服務(wù)器是否正在運行

sudo netstat -tap | grep mysql

出現(xiàn)如下代表已啟動

deftmikejing@deftmikejing-VirtualBox:~$ sudo netstat -tap | grep mysql [sudo] password for deftmikejing: tcp6 0 0 [::]:mysql [::]:* LISTEN 1078/mysqld deftmikejing@deftmikejing-VirtualBox:~$ 或者 deftmikejing@deftmikejing-VirtualBox:/lib/systemd/system$ ps ajx|grep mysql1 686 686 686 ? -1 Ss 120 0:00 /bin/sh /usr/bin/mysqld_safe686 1141 686 686 ? -1 Sl 120 0:01 /usr/sbin/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib/mysql/plugin --log-error=/var/log/mysql/error.log --pid-file=/var/run/mysqld/mysqld.pid --socket=/var/run/mysqld/mysqld.sock --port=33062877 6341 6340 2877 pts/1 6340 S+ 1000 0:00 grep --color=auto mysql
  • 啟動
service mysql start
  • 停止
service mysql stop
  • 重啟
service mysql restart

如果服務(wù)器不能正常運行,您可以通過下列命令啟動它:

?sudo /etc/init.d/mysql restart

mysql 的默認密碼是linux系統(tǒng)密碼,如果需要修改

mysql -u root -p輸入密碼set password =password('需要替換的密碼');

5.設(shè)置mysql遠程訪問

使用 sudo netstat -lntp 命令看看

tcp??????? 0????? 0 0.0.0.0:3306??????????? 0.0.0.0:*?????????????? LISTEN?
如果上面0 0.0.0.0后面不是3306的話就打開/etc/mysql/my.cnf?? 吧下面這一行給注釋掉

bind-address = 127.0.0.1

修改配置以后記得要重啟mysql

編輯mysql配置文件,把其中bind-address = 127.0.0.1注釋了

vi /etc/mysql/mysql.conf.d/mysqld.cnf

建立遠程連接?

使用root進入mysql命令行 mysql -uroot -p執(zhí)行如下2個命令,示例中mysql的root賬號密碼:root(這root填寫具體的密碼) grant all privileges on *.* to root@"%" identified by "password" with grant option; flush privileges;重啟mysql/etc/init.d/mysql restart

注意說明

本機登陸mysql:mysql -u root -p (-p一定要有);從所有主機:grant all privileges on *.* to root@"%" identified by "password" with grant option;從指定主機:grant all privileges on *.* to root@"192.168.11.205" identified by "password" with grant option;??例如:grant all privileges on *.* to test@'192.168.113.124' identified by '123456'然后執(zhí)行flush privileges;重啟Mysql

查看下剛才的賬號

select host,user,password from mysql.user

到這里就可以測試下宿主機器ping通宿主下的Ubuntu

默認情況下無法ping通,需要修改網(wǎng)絡(luò)設(shè)置?參考鏈接

之后下載Navicat用Mac鏈接Ubuntu里面的Mysql就可以用圖形化工具操作了

Mac安裝Mysql

CenterOS

一般我們部署到Linux上去,這里就先介紹些CenterOS的安裝方法

以 MySQL 5.6 的 Yum 源為例,如果需要更高版本可以另尋,安裝命令如下:

wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm sudo rpm -ivh mysql-community-release-el7-5.noarch.rpm yum install -y mysql mysql-server

運行如上命令即可完成安裝,初始密碼為空。接下來需要啟動 MySQL 服務(wù)。

啟動 MySQL 服務(wù)命令:

sudo systemctl start mysqld

停止、重啟命令:

sudo systemctl stop mysqld sudo systemctl restart mysqld

以上我們就完成了 Linux 下 MySQL 的安裝,安裝完成之后可以修改密碼,可以執(zhí)行如下命令:

mysql -uroot -p

輸入密碼后進入 MySQL 命令行模式。

use mysql; UPDATE user SET Password = PASSWORD('newpass') WHERE user = 'root'; FLUSH PRIVILEGES;

命令中 newpass 即為修改的新的 MySQL 密碼,請自行替換。

由于 Linux 一般會作為服務(wù)器使用,為了使得 MySQL 可以被遠程訪問,我們需要修改 MySQL 的配置文件,配置文件路徑一般為 /etc/mysql/my.cnf。

如使用 vi 進行修改的命令如下:

vi /etc/mysql/my.cnf

取消此行的注釋:

bind-address = 127.0.0.1

此行限制了 MySQL 只能本地訪問而不能遠程訪問,取消注釋即可解除此限制。

修改完成之后重啟 MySQL 服務(wù),這樣 MySQL 就可以被遠程訪問了。

到此為止,Linux 下安裝 MySQL 的過程結(jié)束。

Mac

推薦使用 Homebrew 安裝,執(zhí)行 brew 命令即可。

brew install mysql

啟動、停止、重啟 MySQL 服務(wù)的命令:

sudo mysql.server start sudo mysql.server stop sudo mysql.server restart

Mac 一般不會作為服務(wù)器使用,如果要想取消本地 host 綁定,同樣修改 my.cnf 文件,然后重啟服務(wù)即可。

?

這里如果找不到my.cnf文件,可以通過如下命令進行查找:

find 文件路徑 參數(shù)

比如你可以通過以下命令在用戶文件夾中搜索名字中包含screen的文件

find ~ -iname ?"screen*"

你也可以在特定的文件夾中尋找特定的文件,比如

find ~/Library/ -iname "com.apple.syncedpreferences.plist"

這個命令可以在Library文件夾中尋找com.apple.syncedpreferences.plist文件

mdfind命令就是Spotlight功能的終端界面,這意味著如果Spotlight被禁用,mdfind命令也將無法工作。mdfind命令非常迅速、高效。最基本的使用方法是:

mdfind -name 文件名字

比如你可以通過下面的命令尋找Photo 1.PNG文件

mdfind -name "Photo 1.PNG"

因為mdfind就是Spotlight功能的終端界面,你還可以使用mdfind尋找文件和文件夾的內(nèi)容,比如通過以下命令尋找所有包含Will Pearson文字的文件:

mdfind "Will Pearson"

mdfind命令還可以通過-onlyin參數(shù)搜索特定文件夾的內(nèi)容,比如

mdfind -onlyin ~/Library plist

這條命令可以搜索Library文件夾中所有plist文件。

mikejing$ mdfind -name "my.cnf" /usr/local/etc/my.cnf

修改該文件下127.0.0.1?是否注釋來調(diào)整是否可以遠程連接。

安裝之后進行配置

1.啟動

mysql.server start

2.mysql配置腳本

/usr/local/opt/mysql/bin/mysql_secure_installation //mysql 提供的配置向?qū)?

詳細如下

sunyichaodeMacBook-Pro:~ sunyichao$ /usr/local/opt/mysql/bin/mysql_secure_installation //mysql 提供的配置向?qū)?Securing the MySQL server deployment. Connecting to MySQL using a blank password. VALIDATE PASSWORD PLUGIN can be used to test passwordsand improve security. It checks the strength of password and allows the users to set only those passwords which are secure enough. Would you like to setup VALIDATE PASSWORD plugin?Press y|Y for Yes, any other key for No: k //是否采用mysql密碼安全檢測插件(這里作為演示選擇否,密碼檢查插件要求密碼復(fù)雜程度高,大小寫字母+數(shù)字+字符等) Please set the password for root here. // 首次使用自帶配置腳本,設(shè)置root密碼New password:Re-enter new password:By default, a MySQL installation has an anonymous user, allowing anyone to log into MySQL without having to have a user account created for This is intended only for testing, and to make the installation go a bit smoother. You should remove them before moving into a production environment. Remove anonymous users? [Y/n] Y //是否刪除匿名用戶... Success!Normally, root should only be allowed to connect from 'localhost'.This ensures that someone cannot guess at the root password from the network.Disallow root login remotely? [Y/n] Y //是否禁止遠程登錄... Success!By default, MySQL comes with a database named 'test' that anyone can access.This is also intended only for testing, and should be removed before moving into a production environment.Remove test database and access to it? [Y/n] Y //刪除測試數(shù)據(jù)庫,并登錄Dropping test database...... Success!Removing privileges on test database...... Success!Reloading the privilege tables will ensure that all changes made so far will take effect immediately.Reload privilege tables now? [Y/n] Y//重新載入權(quán)限表... Success!All done! If you've completed all of the above steps, your MySQL installation should now be secure.Thanks for using MySQL!Cleaning up... sunyichaodeMacBook-Pro:~ sunyichao$

Mysql 8和5的密碼插件區(qū)別

Navicat連接報錯如下:

2059 - Authentication plugin 'caching_sha2_password' cannot be loaded: dlopen(../Frameworks/caching_sha2_password.so, 2): image not found

兩個版本的區(qū)別?

mysql> select version()-> ; +-----------+ | version() | +-----------+ | 8.0.16 | +-----------+ 1 row in set (0.01 sec)mysql> show variables like 'default_authentication_plugin'-> ; +-------------------------------+-----------------------+ | Variable_name | Value | +-------------------------------+-----------------------+ | default_authentication_plugin | caching_sha2_password | +-------------------------------+-----------------------+ 1 row in set (0.10 sec)mysql> show tables; +---------------------------+ | Tables_in_mysql | +---------------------------+ | columns_priv | | component | | db | | default_roles | | engine_cost | | func | | general_log | | global_grants | | gtid_executed | | help_category | | help_keyword | | help_relation | | help_topic | | innodb_index_stats | | innodb_table_stats | | password_history | | plugin | | procs_priv | | proxies_priv | | role_edges | | server_cost | | servers | | slave_master_info | | slave_relay_log_info | | slave_worker_info | | slow_log | | tables_priv | | time_zone | | time_zone_leap_second | | time_zone_name | | time_zone_transition | | time_zone_transition_type | | user | +---------------------------+ 33 rows in set (0.01 sec)mysql> select Host, User, Plugin from user; +-----------+------------------+-----------------------+ | Host | User | Plugin | +-----------+------------------+-----------------------+ | localhost | mysql.infoschema | caching_sha2_password | | localhost | mysql.session | caching_sha2_password | | localhost | mysql.sys | caching_sha2_password | | localhost | root | caching_sha2_password | +-----------+------------------+-----------------------+ 4 rows in set (0.00 sec) mysql> select version(); +------------+ | version() | +------------+ | 5.7.15-log | +------------+ 1 row in set (0.00 sec)mysql> show variables like 'default_authentication_plugin'; +-------------------------------+-----------------------+ | Variable_name | Value | +-------------------------------+-----------------------+ | default_authentication_plugin | mysql_native_password | +-------------------------------+-----------------------+ 1 row in set (0.01 sec)mysql> select host,user,plugin from mysql.user; +-----------+-----------+-----------------------+ | host | user | plugin | +-----------+-----------+-----------------------+ | localhost | root | mysql_native_password | | localhost | mysql.sys | mysql_native_password | | % | root | mysql_native_password |

可以看到MySQL8.0.11版本默認的認證方式是caching_sha2_password ,而在MySQL5.7版本則為mysql_native_password。

若想在MySQL8.0版本中繼續(xù)使用舊版本中的認證方式需要在my.cnf 文件中配置并重啟,因為此參數(shù)不可動態(tài)修改。
?

mysql> set global default_authentication_plugin='mysql_native_password'; ERROR 1238 (HY000): Variable 'default_authentication_plugin' is a read only variable

寫入my.cnf 文件后重啟MySQL:

vim my.cnf [mysqld] default_authentication_plugin=mysql_native_password

上面的這種方案對已有的賬戶是無法修改的,只是后續(xù)新增的賬戶就會默認的Plugin變成mysql_native_password?


第二種解決方法:兼容新老版本的認證方式。

ALTER USER 'root'@'localhost' IDENTIFIED BY 'password' PASSWORD EXPIRE NEVER; #修改加密規(guī)則? ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password'; #更新一下用戶的密碼? FLUSH PRIVILEGES; #刷新權(quán)限

創(chuàng)建新用戶步驟,其中 with mysql_native_password不是必須的,默認根據(jù)配置文件走?

--創(chuàng)建新的用戶:create user root@'%' identified WITH mysql_native_password BY 'password';grant all privileges on *.* to root@'%' with grant option;flush privileges;--在MySQL8.0創(chuàng)建用戶并授權(quán)的語句則不被支持:mysql> grant all privileges on *.* to root@'%' identified by 'password' with grant option;ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'identified by 'root' with grant option' at line 1mysql>

?

介紹

  • 數(shù)據(jù)庫系統(tǒng)解決的問題:持久化存儲,優(yōu)化讀寫,保證數(shù)據(jù)的有效性
  • 當前使用的數(shù)據(jù)庫,主要分為兩類
    • 文檔型,如sqlite,就是一個文件,通過對文件的復(fù)制完成數(shù)據(jù)庫的復(fù)制
    • 服務(wù)型,如mysql、postgre,數(shù)據(jù)存儲在一個物理文件中,但是需要使用終端以tcp/ip協(xié)議連接,進行數(shù)據(jù)庫的讀寫操作

E-R模型

  • 當前物理的數(shù)據(jù)庫都是按照E-R模型進行設(shè)計的
  • E表示entry,實體
  • R表示relationship,關(guān)系
  • 一個實體轉(zhuǎn)換為數(shù)據(jù)庫中的一個表
  • 關(guān)系描述兩個實體之間的對應(yīng)規(guī)則,包括
    • 一對一
    • 一對多
    • 多對多
  • 關(guān)系轉(zhuǎn)換為數(shù)據(jù)庫表中的一個列 *在關(guān)系型數(shù)據(jù)庫中一行就是一個對象

三范式

  • 經(jīng)過研究和對使用中問題的總結(jié),對于設(shè)計數(shù)據(jù)庫提出了一些規(guī)范,這些規(guī)范被稱為范式
  • 第一范式(1NF):列不可拆分
  • 第二范式(2NF):唯一標識
  • 第三范式(3NF):引用主鍵
  • 說明:后一個范式,都是在前一個范式的基礎(chǔ)上建立的

?

字段類型

  • 在mysql中包含的數(shù)據(jù)類型很多,這里主要列出來常用的幾種
  • 數(shù)字:int,decimal
  • 字符串:char(不可變,長度不夠自動填充), varchar(可變的),text
  • 日期:datetime
  • 布爾:bit


    約束
  • 主鍵primary key
  • 非空not null
  • 惟一unique
  • 默認default
  • 外鍵foreign key

基礎(chǔ)命令操作數(shù)據(jù)庫

遠程連接

  • 一般在公司開發(fā)中,可能會將數(shù)據(jù)庫統(tǒng)一搭建在一臺服務(wù)器上,所有開發(fā)人員共用一個數(shù)據(jù)庫,而不是在自己的電腦中配置一個數(shù)據(jù)庫
  • 運行命令
mysql -hip地址 -uroot -p
  • -h后面寫要連接的主機ip地址
  • -u后面寫連接的用戶名
  • -p回車后寫密碼

數(shù)據(jù)庫操作命令

  • 查看數(shù)據(jù)庫
show databases;
  • 創(chuàng)建數(shù)據(jù)庫
create database 數(shù)據(jù)庫名 charset=utf8;
  • 刪除數(shù)據(jù)庫
drop database 數(shù)據(jù)庫名;
  • 切換數(shù)據(jù)庫
use 數(shù)據(jù)庫名;
  • 查看當前選擇的數(shù)據(jù)庫
select database();

表操作命令

  • 查看當前數(shù)據(jù)庫中所有表
show tables;
  • 創(chuàng)建表
  • auto_increment表示自動增長

    create table 表名(列及類型); 如: create table students( id int auto_increment primary key, sname varchar(10) not null );
  • 修改表

alter table 表名 add|change|drop 列名 類型; 如: alter table students add birthday datetime;change舉例alter table 表名 change 原字段 修改后字段 類型
  • 刪除表
drop table 表名;
  • 查看表結(jié)構(gòu)
desc 表名;
  • 更改表名稱
rename table 原表名 to 新表名;
  • 查看表的創(chuàng)建語句
show create table 表名;

數(shù)據(jù)操作命令

  • 查詢
select * from 表名
  • 增加
全列插入:insert into 表名 values(...) 缺省插入:insert into 表名(列1,...) values(值1,...) 同時插入多條數(shù)據(jù):insert into 表名 values(...),(...)...; 或insert into 表名(列1,...) values(值1,...),(值1,...)...;
  • 主鍵列是自動增長,但是在全列插入時需要占位,通常使用0,插入成功后以實際數(shù)據(jù)為準
  • 修改
update 表名 set 列1=值1,... where 條件
  • 刪除
delete from 表名 where 條件
  • 邏輯刪除,本質(zhì)就是修改操作update
alter table students add isdelete bit default 0; 如果需要刪除則 update students isdelete=1 where ...;

備份與恢復(fù)命令

數(shù)據(jù)備份

  • 進入超級管理員
sudo -s
  • 進入mysql庫目錄?
Homebrew 安裝目錄? /usr/local/var/mysql/ cd /usr/local/var/mysql/
  • 運行mysqldump命令
mysqldump –uroot –p 數(shù)據(jù)庫名 > ~/Desktop/備份文件.sql; 按提示輸入mysql的密碼

數(shù)據(jù)恢復(fù)

  • 連接mysql,創(chuàng)建數(shù)據(jù)庫

  • 退出連接,執(zhí)行如下命令

mysql -uroot –p 數(shù)據(jù)庫名 < ~/Desktop/備份文件.sql 根據(jù)提示輸入mysql密碼

查詢分配

條件查詢

  • 查詢的基本語法
select * from 表名;
  • from關(guān)鍵字后面寫表名,表示數(shù)據(jù)來源于是這張表
  • select后面寫表中的列名,如果是*表示在結(jié)果中顯示表中所有列
  • 在select后面的列名部分,可以使用as為列起別名,這個別名出現(xiàn)在結(jié)果集中
  • 如果要查詢多個列,之間使用逗號分隔

消除重復(fù)行

  • 在select后面列前使用distinct可以消除重復(fù)的行
select distinct gender from students;
  • 使用where子句對表中的數(shù)據(jù)篩選,結(jié)果為true的行會出現(xiàn)在結(jié)果集中
  • 語法如下:
select * from 表名 where 條件;

比較運算符

  • 等于=
  • 大于>
  • 大于等于>=
  • 小于<
  • 小于等于<=
  • 不等于!=或<>
  • 查詢編號大于3的學生
select * from students where id>3;
  • 查詢編號不大于4的科目
select * from subjects where id<=4;
  • 查詢姓名不是“黃蓉”的學生
select * from students where sname!='黃蓉';
  • 查詢沒被刪除的學生
select * from students where isdelete=0;

邏輯運算符

  • and
  • or
  • not
  • 查詢編號大于3的女同學
select * from students where id>3 and gender=0;
  • 查詢編號小于4或沒被刪除的學生
select * from students where id<4 or isdelete=0;

模糊查詢

  • like
  • %表示任意多個任意字符
  • _表示一個任意字符
  • 查詢姓黃的學生
select * from students where sname like '黃%';
  • 查詢姓黃并且名字是一個字的學生
select * from students where sname like '黃_';
  • 查詢姓黃或叫靖的學生
select * from students where sname like '黃%' or sname like '%靖%';

范圍查詢

  • in表示在一個非連續(xù)的范圍內(nèi)
  • 查詢編號是1或3或8的學生
select * from students where id in(1,3,8);
  • between ... and ...表示在一個連續(xù)的范圍內(nèi)
  • 查詢學生是3至8的學生
select * from students where id between 3 and 8;
  • 查詢學生是3至8的男生
select * from students where id between 3 and 8 and gender=1;

空判斷

  • 注意:null與''是不同的
  • 判空is null
  • 查詢沒有填寫地址的學生
select * from students where hometown is null;
  • 判非空is not null
  • 查詢填寫了地址的學生
select * from students where hometown is not null;
  • 查詢填寫了地址的女生
select * from students where hometown is not null and gender=0;

優(yōu)先級

  • 小括號,not,比較運算符,邏輯運算符
  • and比or先運算,如果同時出現(xiàn)并希望先算or,需要結(jié)合()使用

聚合查詢

  • 為了快速得到統(tǒng)計數(shù)據(jù),提供了5個聚合函數(shù)
  • count(*)表示計算總行數(shù),括號中寫星與列名,結(jié)果是相同的
  • 查詢學生總數(shù)
select count(*) from students;
  • max(列)表示求此列的最大值
  • 查詢女生的編號最大值
select max(id) from students where gender=0;
  • min(列)表示求此列的最小值
  • 查詢未刪除的學生最小編號
select min(id) from students where isdelete=0;
  • sum(列)表示求此列的和
  • 查詢男生的編號之后
select sum(id) from students where gender=1;
  • avg(列)表示求此列的平均值
  • 查詢未刪除女生的編號平均值
select avg(id) from students where isdelete=0 and gender=0;

分組查詢

  • 按照字段分組,表示此字段相同的數(shù)據(jù)會被放到一個組中
  • 分組后,只能查詢出相同的數(shù)據(jù)列,對于有差異的數(shù)據(jù)列無法出現(xiàn)在結(jié)果集中
  • 可以對分組后的數(shù)據(jù)進行統(tǒng)計,做聚合運算
  • 語法:
select 列1,列2,聚合... from 表名 group by 列1,列2,列3...
  • 查詢男女生總數(shù)
select gender as 性別,count(*) from students group by gender;
  • 查詢各城市人數(shù)
select hometown as 家鄉(xiāng),count(*) from students group by hometown;

分組后的數(shù)據(jù)篩選

  • 語法:
select 列1,列2,聚合... from 表名 group by 列1,列2,列3... having 列1,...聚合...
  • having后面的條件運算符與where的相同
  • 查詢男生總?cè)藬?shù)
方案一 select count(*) from students where gender=1; ----------------------------------- 方案二: select gender as 性別,count(*) from students group by gender having gender=1;

對比where與having

  • where是對from后面指定的表進行數(shù)據(jù)篩選,屬于對原始數(shù)據(jù)的篩選
  • having是對group by的結(jié)果進行篩選

排序

  • 為了方便查看數(shù)據(jù),可以對數(shù)據(jù)進行排序
  • 語法:
select * from 表名 order by 列1 asc|desc,列2 asc|desc,...
  • 將行數(shù)據(jù)按照列1進行排序,如果某些行列1的值相同時,則按照列2排序,以此類推
  • 默認按照列值從小到大排列
  • asc從小到大排列,即升序
  • desc從大到小排序,即降序
  • 查詢未刪除男生學生信息,按學號降序
select * from students where gender=1 and isdelete=0 order by id desc;
  • 查詢未刪除科目信息,按名稱升序
select * from subject where isdelete=0 order by stitle;

分頁查詢

  • 當數(shù)據(jù)量過大時,在一頁中查看數(shù)據(jù)是一件非常麻煩的事情
  • 語法
select * from 表名 limit start,count
  • 從start開始,獲取count條數(shù)據(jù)
  • start索引從0開始

示例:分頁

  • 已知:每頁顯示m條數(shù)據(jù),當前顯示第n頁
  • 求總頁數(shù):此段邏輯后面會在python中實現(xiàn)
    • 查詢總條數(shù)p1
    • 使用p1除以m得到p2
    • 如果整除則p2為總數(shù)頁
    • 如果不整除則p2+1為總頁數(shù)
  • 求第n頁的數(shù)據(jù)
select * from students where isdelete=0 limit (n-1)*m,m

高級特性

表關(guān)系建立和外鍵

案例一:

學生 1對多? 成績?? ? 學生表中一行能對應(yīng)多行成績出現(xiàn)

科目 1對多? 成績? ? 科目中一行能對應(yīng)多行成績出現(xiàn)

成績 1對1? ?學生和科目? ?一條成績必定對應(yīng)一個學生和一個科目

案例二:

班級? ? 1對多? 學生? ? 班級表中一行,能對應(yīng)多行學生出現(xiàn)

學生? 1對1? ? 班級? ? ? 一個學生必定對應(yīng)一個班級

1對多代表1的這一方會出現(xiàn)多個在另一方,因此主鍵關(guān)聯(lián)都會寫在學生表中或者成績表中?

  • 創(chuàng)建成績表scores,結(jié)構(gòu)如下
    • id
    • 學生
    • 科目
    • 成績
  • ?
  • 思考:學生列應(yīng)該存什么信息呢?
  • 答:學生列的數(shù)據(jù)不是在這里新建的,而應(yīng)該從學生表引用過來,關(guān)系也是一條數(shù)據(jù);根據(jù)范式要求應(yīng)該存儲學生的編號,而不是學生的姓名等其它信息
  • 同理,科目表也是關(guān)系列,引用科目表中的數(shù)據(jù)

這里學生,成績,科目三個的分析和電商里面 用戶,購物車,商品是一樣的,首先

學生和科目是n:m的關(guān)系,無法維護,因此需要再開一張表成績來維護好比用戶和商品是n:m的關(guān)系,因此需要購物車來維護,用戶和購物車是1:n,商品和購物車也是1:n

?

以下是科目和學生的標 以及創(chuàng)建一張成績單的標,

+----+---------+ | id | title | +----+---------+ | 1 | Science | | 2 | Math | | 3 | English | | 4 | Pysical | | 5 | Mamical | +----+---------+ 5 rows in set (0.00 sec)mysql> select *from students; +----+------------+--------+---------------------+----------+-------+----------+ | id | name | gender | birthday | isDelete | score | address | +----+------------+--------+---------------------+----------+-------+----------+ | 1 | Mekejing | | 2018-01-01 00:00:00 | | 97 | NULL | | 2 | jiaojiao | | 2018-01-01 00:00:00 | | 55 | NULL | | 3 | elf | | 2018-01-01 00:00:00 | | 100 | shenzhen | | 4 | 11111 | | 2018-01-01 00:00:00 | | 60 | shenzhen | | 6 | 3333333 | | 2018-01-01 00:00:00 | | 77 | shenzhen | | 7 | wuke | | 0000-00-00 00:00:00 | | 80 | NULL | | 8 | Deft | | 2019-01-01 00:00:00 | | 32 | NULL | | 9 | jiaoBo | | 2001-01-01 00:00:00 | | 71 | NULL | | 10 | oojiaojiao | | 2001-01-01 00:00:00 | | 71 | NULL | +----+------------+--------+---------------------+----------+-------+----------+mysql> create table score(-> id int auto_increment primary key not null,-> score decimal(4,1),-> stuid int,-> subid int,-> foreign key(stuid) references students(id),-> foreign key(subid) references subjects(id))-> ; Query OK, 0 rows affected (0.02 sec)mysql> desc score; +-------+--------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-------+--------------+------+-----+---------+----------------+ | id | int(11) | NO | PRI | NULL | auto_increment | | score | decimal(4,1) | YES | | NULL | | | stuid | int(11) | YES | MUL | NULL | | | subid | int(11) | YES | MUL | NULL | | +-------+--------------+------+-----+---------+----------------+

查看原始的創(chuàng)建腳本

show create table score;| score | CREATE TABLE `score` (`id` int(11) NOT NULL AUTO_INCREMENT,`score` decimal(4,1) DEFAULT NULL,`stuid` int(11) DEFAULT NULL,`subid` int(11) DEFAULT NULL,PRIMARY KEY (`id`),KEY `stuid` (`stuid`),KEY `subid` (`subid`),CONSTRAINT `score_ibfk_1` FOREIGN KEY (`stuid`) REFERENCES `students` (`id`),CONSTRAINT `score_ibfk_2` FOREIGN KEY (`subid`) REFERENCES `subjects` (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=12 DEFAULT CHARSET=utf8 |

可以看到stuid和subid都是關(guān)聯(lián)著各自表中的primary key

  • 思考:怎么保證關(guān)系列數(shù)據(jù)的有效性呢?任何整數(shù)都可以嗎?
  • 答:必須是學生表中id列存在的數(shù)據(jù),可以通過外鍵約束進行數(shù)據(jù)的有效性驗證
  • 為stuid添加外鍵約束

可以和上面一樣直接在創(chuàng)建表的時候創(chuàng)建外鍵約束,也可以alter添加

alter table scores add constraint stu_sco foreign key(stuid) references students(id);
  • 此時插入或者修改數(shù)據(jù)時,如果stuid的值在students表中不存在則會報錯
  • 在創(chuàng)建表時可以直接創(chuàng)建約束

外鍵的級聯(lián)操作)

例如刪除students里面的一個學生,那么score里面已經(jīng)有數(shù)據(jù)關(guān)聯(lián)上,如何處理?

  • 在刪除students表的數(shù)據(jù)時,如果這個id值在scores中已經(jīng)存在,則會拋異常
  • 推薦使用邏輯刪除,還可以解決這個問題
  • 可以創(chuàng)建表時指定級聯(lián)操作,也可以在創(chuàng)建表后再修改外鍵的級聯(lián)操作
  • 語法
alter table scores add constraint stu_sco foreign key(stuid) references students(id) on delete cascade;
  • 級聯(lián)操作的類型包括:
    • restrict(限制):默認值,拋異常
    • cascade(級聯(lián)):如果主表的記錄刪掉,則從表中相關(guān)聯(lián)的記錄都將被刪除
    • set null:將外鍵設(shè)置為空
    • no action:什么都不做

刪除約束

查看表建立語句| Table | Create Table | +-------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | score | CREATE TABLE `score` (`id` int(11) NOT NULL AUTO_INCREMENT,`score` decimal(5,2) DEFAULT NULL,`stuid` int(11) DEFAULT NULL,`subid` int(11) DEFAULT NULL,PRIMARY KEY (`id`),KEY `subid` (`subid`),KEY `stu_sco` (`stuid`),CONSTRAINT `stu_sco` FOREIGN KEY (`stuid`) REFERENCES `students` (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8 |刪除約束 alter table score drop foreign key stu_sco;這時候就可以刪除級聯(lián)的表數(shù)據(jù)了,比如這個時候你刪除了students表的數(shù)據(jù),其他表有外鍵關(guān)聯(lián)也沒事,因為約束已經(jīng)解除了,但是這個時候你要添加約束,就會報錯,因為數(shù)據(jù)已經(jīng)找不到了 alter table score add constraint stu_sco foreign key(stuid) references students(id); ERROR 1452 (23000): Cannot add or update a child row: a foreign key constraint fails (`mikejing`.`#sql-15650_18`, CONSTRAINT `stu_sco` FOREIGN KEY (`stuid`) REFERENCES `students` (`id`)) mysql> delete from score where id = 4; Query OK, 1 row affected (0.00 sec)mysql> alter table score add constraint stu_sco foreign key(stuid) references students(id); Query OK, 4 rows affected (0.05 sec) Records: 4 Duplicates: 0 Warnings: 0

?

  • 問:查詢每個學生每個科目的分數(shù)
  • 分析:學生姓名來源于students表,科目名稱來源于subjects,分數(shù)來源于scores表,怎么將3個表放到一起查詢,并將結(jié)果顯示在同一個結(jié)果集中呢?
  • 答:當查詢結(jié)果來源于多張表時,需要使用連接查詢
  • 關(guān)鍵:找到表間的關(guān)系,當前的關(guān)系是
    • students表的id---scores表的stuid
    • subjects表的id---scores表的subid
  • 則上面問題的答案是:
select students.sname,subjects.stitle,scores.score from scores inner join students on scores.stuid=students.id inner join subjects on scores.subid=subjects.id;
  • 結(jié)論:當需要對有關(guān)系的多張表進行查詢時,需要使用連接join

inner join 連接查詢

select *from score inner join students;

這是最基本的,如果score表10條和students表5條,因此在不加on條件下,組合起來是10*5=50條新的數(shù)據(jù)組合,然后根據(jù)on后面的組合篩選,比如下面的操作,id關(guān)聯(lián)到的,因此自關(guān)聯(lián)的表可以理解為 自身表條目的平方組合出來的數(shù)據(jù)進行篩選即可
?

實際上就是多個表鏈接成一個大表

  • 連接查詢分類如下:
    • 表A inner join 表B:表A與表B匹配的行會出現(xiàn)在結(jié)果中
    • 表A left join 表B:表A與表B匹配的行會出現(xiàn)在結(jié)果中,外加表A中獨有的數(shù)據(jù),未對應(yīng)的數(shù)據(jù)使用null填充
    • 表A right join 表B:表A與表B匹配的行會出現(xiàn)在結(jié)果中,外加表B中獨有的數(shù)據(jù),未對應(yīng)的數(shù)據(jù)使用null填充
  • 在查詢或條件中推薦使用“表名.列名”的語法
  • 如果多個表中列名不重復(fù)可以省略“表名.”部分
  • 如果表的名稱太長,可以在表名后面使用' as 簡寫名'或' 簡寫名',為表起個臨時的簡寫名稱
  • 查詢學生的姓名、平均分
select students.sname,avg(scores.score) from scores inner join students on scores.stuid=students.id group by students.sname;
  • 查詢男生的姓名、總分
select students.sname,avg(scores.score) from scores inner join students on scores.stuid=students.id where students.gender=1 group by students.sname;
  • 查詢科目的名稱、平均分
select subjects.stitle,avg(scores.score) from scores inner join subjects on scores.subid=subjects.id group by subjects.stitle;
  • 查詢未刪除科目的名稱、最高分、平均分
select subjects.stitle,avg(scores.score),max(scores.score) from scores inner join subjects on scores.subid=subjects.id where subjects.isdelete=0 group by subjects.stitle;
  • 嵌套查詢
    第一個select from用的后面查詢出來的表,需要給一個as別名,不然會報錯
select sum(anum) from (select students.name,sum(score.score) as anum from score inner join students on score.stuid=students.id where gender=1 group by students.name) as MKJ;

完整的select語句

select distinct * from 表名 inner |left|right|on join 表 on 關(guān)系 where .... group by ... having ... order by ... limit star,count
  • 執(zhí)行順序為:
    • from 表名
    • where .... inner...
    • group by ...
    • select distinct *
    • having ...
    • order by ...
    • limit star,count
  • 實際使用中,只是語句中某些部分的組合,而不是全部

自關(guān)聯(lián)

以省市縣為例,這些數(shù)據(jù)不需要開多個表,可以通過自關(guān)聯(lián)的方式完成,例如

id title pid 1 浙江 NULL 2 寧波 1(關(guān)聯(lián)到自身表中另一行) 3 慈溪 2 (關(guān)聯(lián)到自身表中另一行) 。。。。。

這種設(shè)計還有類似分類,一張表中可以無限數(shù)據(jù),無限分類下去,充分利用空間?

?

  • 設(shè)計省信息的表結(jié)構(gòu)provinces
    • id
    • ptitle
  • 設(shè)計市信息的表結(jié)構(gòu)citys
    • id
    • ctitle
    • proid
  • citys表的proid表示城市所屬的省,對應(yīng)著provinces表的id值
  • 問題:能不能將兩個表合成一張表呢?
  • 思考:觀察兩張表發(fā)現(xiàn),citys表比provinces表多一個列proid,其它列的類型都是一樣的
  • 意義:存儲的都是地區(qū)信息,而且每種信息的數(shù)據(jù)量有限,沒必要增加一個新表,或者將來還要存儲區(qū)、鄉(xiāng)鎮(zhèn)信息,都增加新表的開銷太大
  • 答案:定義表areas,結(jié)構(gòu)如下
    • id
    • atitle
    • pid
  • 因為省沒有所屬的省份,所以可以填寫為null
  • 城市所屬的省份pid,填寫省所對應(yīng)的編號id
  • 這就是自關(guān)聯(lián),表中的某一列,關(guān)聯(lián)了這個表中的另外一列,但是它們的業(yè)務(wù)邏輯含義是不一樣的,城市信息的pid引用的是省信息的id
  • 在這個表中,結(jié)構(gòu)不變,可以添加區(qū)縣、鄉(xiāng)鎮(zhèn)街道、村社區(qū)等信息
  • 創(chuàng)建areas表的語句如下:
create table areas( id int primary key, atitle varchar(20), pid int, foreign key(pid) references areas(id) );

視圖sql語句的封裝

  • 對于復(fù)雜的查詢,在多次使用后,維護是一件非常麻煩的事情
  • 解決:定義視圖
  • 視圖本質(zhì)就是對查詢的一個封裝
  • 定義視圖
create view stuscore as select students.*,scores.score from scores inner join students on scores.stuid=students.id;
  • 視圖的用途就是查詢
select * from stuscore;

事務(wù)

數(shù)據(jù)被更改時? insert? update delete?

  • 當一個業(yè)務(wù)邏輯需要多個sql完成時,如果其中某條sql語句出錯,則希望整個操作都退回
  • 使用事務(wù)可以完成退回的功能,保證業(yè)務(wù)邏輯的正確性
  • 事務(wù)四大特性(簡稱ACID)
    • 原子性(Atomicity):事務(wù)中的全部操作在數(shù)據(jù)庫中是不可分割的,要么全部完成,要么均不執(zhí)行
    • 一致性(Consistency):幾個并行執(zhí)行的事務(wù),其執(zhí)行結(jié)果必須與按某一順序串行執(zhí)行的結(jié)果相一致
    • 隔離性(Isolation):事務(wù)的執(zhí)行不受其他事務(wù)的干擾,事務(wù)執(zhí)行的中間結(jié)果對其他事務(wù)必須是透明的
    • 持久性(Durability):對于任意已提交事務(wù),系統(tǒng)必須保證該事務(wù)對數(shù)據(jù)庫的改變不被丟失,即使數(shù)據(jù)庫出現(xiàn)故障
  • 要求:表的類型必須是innodb或bdb類型,才可以對此表使用事務(wù)
  • 查看表的創(chuàng)建語句
show create table students;
  • 修改表的類型
alter table '表名' engine=innodb;
  • 事務(wù)語句
開啟begin; 提交commit; 回滾rollback;

事務(wù)可以理解為對同一個東西的修改操作,可以理解為OC里面的setter操作,多線程會搶資源,因此會有鎖的存在,事務(wù)也是一樣,通過鎖來保證數(shù)據(jù)執(zhí)行的一致性和隔離性,事務(wù)其實就通過鎖在內(nèi)存中開辟一個空間進行計算,通過commit或者rollback來確定是否需要采用之前的修改,如果其他線程也在操作數(shù)據(jù)庫而且是操作同一條,就會出現(xiàn)鎖等待,等commit或者rollback之后解鎖繼續(xù)執(zhí)行

先做個淺顯的理解,到時候深入了再來記錄;

其實事務(wù)可以優(yōu)化的點想到一個,比如你要插入很多條數(shù)據(jù),直接執(zhí)行insert語句不開啟事務(wù),其實每次都會對數(shù)據(jù)庫的更改和提交操作,因此開啟事務(wù),再合理內(nèi)存配置范圍內(nèi),通過事務(wù)一次性提交更改物理數(shù)據(jù)庫,減少損耗

事務(wù)引擎提交事務(wù)會開啟行級鎖

索引

Mysql 索引原理

Mysql索引使用方式介紹

MySQL官方對索引的定義為:索引(Index)是幫助MySQL高效獲取數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu)。提取句子主干,就可以得到索引的本質(zhì):索引是數(shù)據(jù)結(jié)構(gòu)。

我們知道,數(shù)據(jù)庫查詢是數(shù)據(jù)庫的最主要功能之一。我們都希望查詢數(shù)據(jù)的速度能盡可能的快,因此數(shù)據(jù)庫系統(tǒng)的設(shè)計者會從查詢算法的角度進行優(yōu)化。最基本的查詢算法當然是順序查找(linear search),這種復(fù)雜度為O(n)的算法在數(shù)據(jù)量很大時顯然是糟糕的,好在計算機科學的發(fā)展提供了很多更優(yōu)秀的查找算法,例如二分查找(binary search)、二叉樹查找(binary tree search)等。如果稍微分析一下會發(fā)現(xiàn),每種查找算法都只能應(yīng)用于特定的數(shù)據(jù)結(jié)構(gòu)之上,例如二分查找要求被檢索數(shù)據(jù)有序,而二叉樹查找只能應(yīng)用于二叉查找樹上,但是數(shù)據(jù)本身的組織結(jié)構(gòu)不可能完全滿足各種數(shù)據(jù)結(jié)構(gòu)(例如,理論上不可能同時將兩列都按順序進行組織),所以,在數(shù)據(jù)之外,數(shù)據(jù)庫系統(tǒng)還維護著滿足特定查找算法的數(shù)據(jù)結(jié)構(gòu),這些數(shù)據(jù)結(jié)構(gòu)以某種方式引用(指向)數(shù)據(jù),這樣就可以在這些數(shù)據(jù)結(jié)構(gòu)上實現(xiàn)高級查找算法。這種數(shù)據(jù)結(jié)構(gòu),就是索引。

可以理解為數(shù)據(jù)本身的組織結(jié)構(gòu)不可能滿足各種數(shù)據(jù)結(jié)構(gòu),比如滿足有序的二分查找或者二叉樹查找,因此需要建立索引,把該字段或者多個字段下的所有數(shù)據(jù)都拉出來新建一個目錄,滿足數(shù)據(jù)結(jié)構(gòu)查找,比如有序拉出來二分查找。

選擇數(shù)據(jù)類型

  • 越小的數(shù)據(jù)類型和簡單的數(shù)據(jù)類型越好,數(shù)據(jù)越小磁盤,內(nèi)存,CPU中需要更少的空間,處理起來更快
  • 盡量避免NULL:應(yīng)指定列為NOT NULL,除非你想存儲NULL,在Mysql中,含有空值的列很難進行查詢優(yōu)化,因為他們使索引統(tǒng)計信息比較起來更復(fù)雜,應(yīng)該用0,特殊的值,或者空串來標識

?

普通索引

普通索引僅有一個功能:加速查詢

創(chuàng)建表

create table in1(nid int not null auto_increment primary key,name varchar(32) not null,email varchar(64) not null,extra text,index ix_name (name) )

創(chuàng)建

create index index_name on table_name(column_name)

查看

show index from table_name;

刪除

drop index_name on table_name;

注意:對于創(chuàng)建索引時如果是BLOB?和?TEXT?類型,必須指定length。

create index ix_extra on in1(extra(32));

缺點

雖然索引提高了查詢速度,但是會降低更新表的速度,如果對表進行INSERT UPDATE和DELETE,Mysql不僅要更新數(shù)據(jù),還有保存更新索引文件,而且建立索引會占磁盤索引對應(yīng)的文件

- 查看執(zhí)行時間set profiling = 1;SQL...show profiles;

詳細介紹可以看上面的文章

?

小例子

1、設(shè)計班級表,與學生表關(guān)聯(lián),并進行查詢 2、設(shè)計分類表,自關(guān)聯(lián),并進行查詢 3、創(chuàng)建視圖存儲上面的兩個查詢# 班級表和學生表關(guān)聯(lián) 1.班級表和學生表 班級表一條數(shù)據(jù)可以對應(yīng)多條學生數(shù)據(jù) 1:n 因此關(guān)聯(lián)外鍵設(shè)置在n這里 create table Class( id int auto_increment primary key not null, name varchar(10));create table Student( id int auto_increment primary key not null, name varchar(10), clsid int, foreign key(clsid) references Class(id));create view V_stu_class as select Student.id,Student.name,Class.name as className from Student inner join Class on Student.clsid=Class.id# 自關(guān)聯(lián) create table typeClass( id int auto_increment primary key not null, name varchar(10), pid int, foreign key(pid) references typeClass(id));create view V_types as select son.* from typeClass as father inner join TypeClass as son on son.pid=father.id

?

Python3.6數(shù)據(jù)庫操作Demo

首先Python3x之后需要安裝 pymysql

In [1]: import osIn [2]: os.__file__ Out[2]: '/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/os.py'In [3]:

以上目錄能找到自帶的安裝包,我們執(zhí)行

pip3 install pymysql

可以在該目錄下找到site-packages文件夾,里面有我們自行安裝的所有安裝包,我們在cmd下面import會在該目錄下自動查找,OK

配置PYCharm

但是我們用PYCharm的時候,你import你自行安裝的包,是會報錯的,告訴我們找不到該moduel,由于上不了圖了,說下步驟

1.打開PYCharm,File? ------ Default Settings---------選擇Project Interpreter,右側(cè)會出現(xiàn)默認的配置環(huán)境

2.由于默認的環(huán)境不會加載site-packages,需要自己配置新的,點擊齒輪,選擇Add

3.這里的彈出框默認值不用管,只要把下面的Inherit global site-packages選上,第三方包就出現(xiàn)了

4.編譯的時候右上角會出現(xiàn)對應(yīng)的文件名選項,點擊Edit Configuration選擇對應(yīng)的環(huán)境即可

以下是配置好之后的代碼

邏輯代碼

import pymysqlconfig = {'host':'192.168.0.61','port':3306,'user':'root','password':'mikejing','db':'python','charset':'utf8' } # 鏈接打開數(shù)據(jù)庫 db = pymysql.connect(**config)# 使用cousor() 創(chuàng)建一個游標對象 cursor cursor = db.cursor()# 使用excute執(zhí)行sql語句 cursor.execute("SELECT VERSION()")# 使用fetchone獲取單條數(shù)據(jù) data = cursor.fetchone() print("Database version:%s"%data)# sql = "insert into students (name) values('握草')" # sql = "update students set name='框要是' where id=12" # sql = "delete from students where id=12" # data = input("請輸入姓名:") # sql = "insert into students (name) values(%s)" # cursor.execute(sql, data)sql = "select * from students where id=13" cursor.execute(sql) info = cursor.fetchone() print(info)sql = "select * from students" cursor.execute(sql) info1 = cursor.fetchall() print(info1)try:cursor.execute("show tables") except Exception as result:print(result)print(cursor.fetchall())name =input("請輸入修改后的名字:") ids = input("請輸入修改用戶ID:") params = [name,ids] sql = "update students set name=%s where id=%s" cursor.execute(sql,params)# 默認開啟事務(wù),需要提交 db.commit() cursor.close() # 關(guān)閉數(shù)據(jù)庫 db.close()

面向?qū)ο蠓庋b

對象

import pymysqlclass MysqlHelper(object):def __init__(self,host, port, user, password, db, charset='utf8'):self.host = hostself.port = portself.user = userself.password = passwordself.db = dbself.charset = charsetdef connect(self):self.con = pymysql.connect(host=self.host,port=self.port,user=self.user,password=self.password,db=self.db,charset=self.charset)self.cursor = self.con.cursor()def dealloc(self):self.con.close()self.cursor.close()def cud(self, sql, params):try:self.connect()self.cursor.execute(sql,params)self.con.commit()self.dealloc()except Exception as result:print(result)def watch(self, sql, params=[]):try:self.connect()self.cursor.execute(sql,params)result = self.cursor.fetchall()self.con.commitself.dealloc()return resultexcept Exception as result:print("error:%s"%result)

使用

import MysqlHelperhelper = MysqlHelper.MysqlHelper('192.168.0.61', 3306, 'root', 'mikejing', 'python')name = input("請輸入修改后的名字:") ids = input("請輸入需要修改的用戶id:") params = (name, ids) sql = "update students set name=%s where id=%s"# 或者直接憑借 # sql = "update students set name=%s where id=%s"%(name, ids)helper.cud(sql, params)sql = "select * from students where id >20" result = helper.watch(sql) print(result)/Users/mintou/venv/bin/python /Users/mintou/Desktop/PYCharm/tPython.py 請輸入修改后的名字:29歲翻倍 請輸入需要修改的用戶id:30 ((24, 'hehehe', b'\x00', datetime.datetime(1990, 1, 1, 0, 0), b'\x00', 100, 'cixi', 'www.ads.com'), (25, '我是神e', b'\x00', datetime.datetime(1990, 1, 1, 0, 0), b'\x00', 100, 'cixi', 'www.ads.com'), (26, 'iOS大神', b'\x00', datetime.datetime(1990, 1, 1, 0, 0), b'\x00', 100, 'cixi', 'www.ads.com'), (27, '宓珂璟', b'\x01', None, b'\x00', None, None, None), (28, 'python大神', b'\x01', None, b'\x00', None, None, None), (30, '29歲翻倍', b'\x01', None, b'\x00', None, None, None))Process finished with exit code 0

登錄Demo

還是用上面的MysqlHelper工具 用sha1試試

正常登錄是RSA,用戶在客戶端輸入密碼,通過公鑰加密給后臺,后臺私鑰解密,加鹽之后然后AES,接著存入數(shù)據(jù)庫,就是注冊

下次登錄的時候,輸入用戶名密碼,輸入密碼,公鑰加密,后臺私鑰解密,然后根據(jù)用戶名去數(shù)據(jù)庫select,匹配上就登錄成功

import MysqlHelper import hashlibhelper = MysqlHelper.MysqlHelper('192.168.0.61', 3306, 'root', 'mikejing', 'python')def sha1Operation(pwd):hash_pwd = pwd.encode("utf-8")hashTool = hashlib.sha1()hashTool.update(hash_pwd)return hashTool.hexdigest()print("注冊用戶密碼") name = input("name:") pwd = input("pwd:") parmes = (name,sha1Operation(pwd)) sql = "insert into userinofs values(0,%s,%s)" helper.cud(sql, parmes)print("*"*50+"注冊成功" + "*"*50)while True:print("登錄")name = input("name:")pwd = input("pwd:")parames = (name)sql = "select pwd from userinofs where username = %s"result = helper.watch(sql, parames)if len(result) == 0:print("用戶名不存在")elif result[0][0] == sha1Operation(pwd):print("登錄成功")break;else:print("密碼錯誤")

?

?

參考文章

Python3各種模塊安裝(比如Mysql)

Mysql安裝初始化

find命令

總結(jié)

以上是生活随笔為你收集整理的Mac操作数据库Mysql知识点备忘录的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

婷色| 久久久久久久久久久福利 | 天堂av免费看 | 9色在线视频 | 91精品亚洲影视在线观看 | 国产午夜精品一区二区三区 | 91免费高清观看 | 久草在线视频精品 | 欧美一区成人 | 久草精品国产 | 亚洲一区二区麻豆 | 三上悠亚一区二区在线观看 | 国产91在| 免费裸体视频网 | 久久午夜影视 | 久久成人国产精品一区二区 | 国产成人在线观看 | 不卡av电影在线观看 | 色偷偷男人的天堂av | 最新精品国产 | 国产成人在线综合 | 中文字幕精品三级久久久 | 欧美色综合天天久久综合精品 | av网址在线播放 | 日韩精品一区电影 | 一本一本久久a久久精品牛牛影视 | 日日干夜夜干 | 亚洲一级片在线看 | 国产专区视频在线观看 | 国产美女免费视频 | 在线看国产日韩 | 国产色视频一区 | 亚洲成人黄色在线 | 午夜av一区二区三区 | 国产精品久久久久久高潮 | 免费av成人在线 | 亚洲精品久久久蜜臀下载官网 | 亚洲国产精品va在线看黑人动漫 | 在线视频日韩一区 | 永久免费毛片在线观看 | 久热免费在线 | 欧美另类z0zx | 97视频免费 | 欧美一区二区三区四区夜夜大片 | 玖玖在线资源 | 亚洲精品美女 | 国产精品久久久久久爽爽爽 | 五月天丁香亚洲 | 国产精品高潮呻吟久久久久 | 特级西西444www大精品视频免费看 | 波多野结衣资源 | 成人久久18免费网站麻豆 | 一区二区三区免费在线观看视频 | 久操久| 久久国产影视 | 丁香一区二区 | 成人黄性视频 | 日韩特级黄色片 | 亚洲最新视频在线播放 | 天天色影院 | 亚洲精品乱码久久久久久蜜桃欧美 | 亚洲精品男人天堂 | 伊人天天操 | 天天色天天操天天爽 | 婷婷射五月 | 一区在线观看视频 | 麻豆传媒视频在线 | 麻豆国产视频下载 | 日韩av一区二区在线播放 | 国产专区精品视频 | 欧美少妇bbwhd | 91综合久久一区二区 | 国产免费xvideos视频入口 | 色婷婷在线视频 | 久久精品三级 | 久久国产精品系列 | 色综合五月天 | 开心丁香婷婷深爱五月 | 日本精品视频在线播放 | 国产99久久九九精品免费 | 日韩天天干 | 国产成人av网站 | 久久精品免费电影 | 超碰97.com | 黄色的网站免费看 | 久久久网 | www激情com | 久久精品国产成人 | 欧美日韩亚洲一 | 日韩在线观看不卡 | 免费日韩电影 | 国产精品久久久久久久久久尿 | 久久精品视频在线免费观看 | 懂色av一区二区在线播放 | 在线视频 91 | 在线视频 91| 亚洲免费一级 | 中文字幕有码在线观看 | 久草久热 | 天天爱天天操天天射 | 成人久久久久 | 欧美天天综合 | 欧美色图另类 | 亚洲精品在线免费看 | 婷婷精品进入 | 午夜在线日韩 | 日本在线视频一区二区三区 | 国产另类av| 日韩免费在线视频 | 欧洲精品一区二区 | 久久久久久久久久久久av | 国产精品久久久久久久久久东京 | 视频三区在线 | 久久99久久99精品免观看粉嫩 | 久久黄色影视 | 久久99久久99免费视频 | 国产精品日韩 | 国产 欧美 日韩 | 97超碰影视 | 97在线观看免费 | 国产福利在线不卡 | 久久爱992xxoo | 国产精品入口麻豆 | 亚洲国产日韩欧美 | 日韩三级视频在线看 | 成人久久18免费 | 国产亚洲精品久久久久久 | 黄污视频大全 | 亚洲激情在线观看 | 在线导航av| 精品一区二区免费在线观看 | 国产精品嫩草影院99网站 | 日韩免费视频线观看 | 免费看三片 | 2023av在线| 999视频精品 | 久久精品1区 | 久久久亚洲国产精品麻豆综合天堂 | 最近中文字幕完整视频高清1 | 欧美日韩免费视频 | 久久精品高清视频 | 国产婷婷精品av在线 | 精品国产一区二区三区久久久蜜月 | 24小时日本在线www免费的 | 欧美另类亚洲 | 美女网站色在线观看 | 99视频在线免费观看 | 亚洲最大激情中文字幕 | 婷婷六月中文字幕 | 久久字幕精品一区 | 四川bbb搡bbb爽爽视频 | 欧美精品免费一区二区 | 亚洲毛片一区二区三区 | 欧美一区二区精品在线 | 色综合久久久久综合体 | 久久久18 | 91高清完整版在线观看 | 在线天堂8√ | 欧美a在线看 | 婷婷亚洲综合五月天小说 | 91热精品 | 日韩视频在线不卡 | 欧美国产视频在线 | 欧美久久久一区二区三区 | 在线韩国电影免费观影完整版 | 日韩中文字幕免费看 | 亚洲精品视频免费观看 | 婷婷色视频 | 精品国产欧美一区二区三区不卡 | 精品久久久久亚洲 | 高清av免费一区中文字幕 | 国内精品国产三级国产aⅴ久 | 精品免费一区 | 色婷婷综合在线 | 日韩中文字幕网站 | 视频在线观看99 | 日韩久久午夜一级啪啪 | 国产精品免费在线 | 人人爽人人爽人人爽 | 国产日韩视频在线播放 | 高清不卡免费视频 | 伊人狠狠干| 97av影院| 欧美精品亚洲精品日韩精品 | 成人一级片在线观看 | 最新av在线网站 | 精品高清美女精品国产区 | 中文字幕成人在线 | 久久99最新地址 | 国产精品久久久久久久久久久久午 | 日日天天狠狠 | 欧美国产高清 | 伊人天天 | 国产精品毛片久久久久久久 | 一区二区男女 | 懂色av一区二区在线播放 | 国内精品视频免费 | 五月婷婷在线视频观看 | 免费a网址 | 日韩精品免费在线 | 欧美aa一级片 | 国产精品一区二区久久精品爱微奶 | 欧美精品亚洲精品 | av免费电影在线观看 | 9999精品免费视频 | 黄色片网站大全 | 日本黄色免费播放 | 精品国产伦一区二区三区免费 | 国产不卡网站 | 91在线国内视频 | 黄色av免费电影 | 日韩精品久久久久久久电影99爱 | 国产只有精品 | 亚洲综合激情五月 | 午夜性福利 | 天干啦夜天干天干在线线 | 97在线免费观看 | 综合网中文字幕 | 欧美天天干 | 99视频在线免费看 | 久久久久久久久免费 | 91亚洲精品久久久中文字幕 | 国内三级在线观看 | 夜夜爽www | 国产又粗又猛又爽又黄的视频免费 | 日韩欧美在线一区二区 | 久久久久久久久久久久久久av | 色在线免费 | 国产高清久久久久 | 国产成人免费精品 | 久久99久久99精品免费看小说 | 色妞色视频一区二区三区四区 | 狠狠操狠狠干2017 | 成年人在线观看网站 | 天天撸夜夜操 | 日本在线中文在线 | 黄色的视频 | 中文字幕在线看片 | 精品美女国产在线 | 国产精品九九九 | 最新色视频 | 五月婷婷狠狠 | 日韩色一区二区三区 | 成人中文字幕在线 | 久热国产视频 | 精品国产一区二区三区噜噜噜 | 91在线精品播放 | 五月婷婷丁香在线观看 | 天天天天天操 | 91手机电视 | 一级片免费观看视频 | 欧美精品二 | 国产高清视频免费在线观看 | 狠狠色噜噜狠狠 | 久久综合久久综合久久 | 99精品在线 | 在线 视频 一区二区 | 福利一区在线 | 国产精品久久久久久久毛片 | 色网站免费在线观看 | 日韩欧美视频在线播放 | 久久国产高清 | 黄色小说免费观看 | 国产精品99久久久久久有的能看 | 毛片无卡免费无播放器 | 91免费日韩| 天天操网址 | 日韩欧美网址 | 五月天色中色 | 91av欧美| 天天干天天干天天射 | 黄色三级网站 | 91色视频 | 欧美日韩中文国产一区发布 | 成 人 黄 色 片 在线播放 | 久草精品资源 | 中文字幕黄色 | 日韩欧美一二三 | 在线成人免费 | 999色视频 | wwwwww色 | 久久久五月婷婷 | 夜夜狠狠 | 日韩在线观看精品 | 国产福利精品一区二区 | 天天干天天拍天天操天天拍 | 色综合亚洲精品激情狠狠 | 成人污视频在线观看 | 中文字幕在线看片 | 超碰免费观看 | 二区中文字幕 | 国产精品久久久毛片 | 免费a级大片| 在线免费黄色 | 婷婷色影院 | 91成人网在线 | 中文字幕在线观看资源 | www.久久色 | 精品国产精品久久一区免费式 | 欧美一区二区三区在线看 | 国产精品久久久久一区二区三区 | 欧美一区日韩一区 | 超碰人人在线 | 欧美专区国产专区 | 免费久久99精品国产婷婷六月 | 久久久www成人免费精品 | 免费黄色在线网址 | 一二三久久久 | 成人免费视频观看 | 亚洲午夜精品久久久久久久久 | 国产99在线 | 久久久久久蜜桃一区二区 | 日韩最新在线视频 | 免费视频区 | 国产一区二区三区久久久 | 国产亚洲片 | 国产麻豆精品一区 | 91看片看淫黄大片 | v片在线看 | 国产精选视频 | 亚洲综合视频在线播放 | 婷婷伊人五月天 | 日日干影院 | 精品亚洲视频在线观看 | 亚洲中字幕 | 婷婷五月情 | 成人动态视频 | 在线观看免费av片 | 丁香久久五月 | 中文字幕免费高清在线观看 | 色黄久久久久久 | 人成电影网 | 欧美一区二区三区激情视频 | 久久精品牌麻豆国产大山 | 狠狠的干狠狠的操 | 视频在线日韩 | 久久久久综合网 | 亚洲影院国产 | 国产成人av网站 | 免费a一级 | 十八岁以下禁止观看的1000个网站 | 美女网站视频久久 | 天天干天天做 | 夜夜澡人模人人添人人看 | 免费日韩一区二区三区 | 国内精品久久久久国产 | 日韩激情小视频 | 色国产在线| 最新国产精品拍自在线播放 | 免费观看十分钟 | 91在线免费视频观看 | 亚洲欧美日韩不卡 | 久久免费在线观看视频 | 黄色av电影一级片 | 久久公开免费视频 | 中文 一区二区 | 91av官网 | 丝袜+亚洲+另类+欧美+变态 | 久久视频在线免费观看 | 夜夜操天天摸 | 国产直播av | 国产毛片久久 | 91精品蜜桃| 欧美一区在线观看视频 | 国产美腿白丝袜足在线av | 成人免费观看完整版电影 | 亚洲午夜电影网 | 97碰碰碰| 欧美日韩精品区 | 国产精品久久久久高潮 | 国产三级av在线 | 日韩高清无线码2023 | 波多野结衣一区三区 | 色婷婷综合久久久 | 国产精品中文字幕在线 | 国产精品av在线免费观看 | 91视频一8mav | 久久丁香 | av一区二区三区在线播放 | 色狠狠一区二区 | 欧美日韩亚洲第一页 | 亚洲成av| 97色在线观看 | 黄色片网站免费 | 欧美一区二区三区在线播放 | 黄色aaa级片 | 18女毛片 | 亚洲精品欧美精品 | 久久精品官网 | 亚洲精品国产精品乱码在线观看 | 成人免费xxxxxx视频 | 国产最顶级的黄色片在线免费观看 | 日韩免费中文字幕 | 欧美国产日韩一区二区三区 | 免费情趣视频 | 精品在线免费观看 | 久久夜色精品国产欧美一区麻豆 | 久久激情久久 | 国产亚洲亚洲 | 激情久久五月天 | 狠狠做深爱婷婷综合一区 | av一区二区三区在线观看 | 国产中文字幕国产 | 91三级在线观看 | 99久久久久免费精品国产 | 中国一级片视频 | 人人看黄色 | 精品久久1| 91精品对白一区国产伦 | 91精品一区在线观看 | 国产免费视频在线 | 天天天天爱天天躁 | 99爱爱| 久久精品视频在线观看免费 | 久久久精品国产免费观看同学 | 四虎在线免费观看 | 久久久久久伊人 | 99成人免费视频 | 人九九精品 | 久久乱码卡一卡2卡三卡四 五月婷婷久 | 日韩精品播放 | 久久综合九色综合久久久精品综合 | 国产精品美女在线 | 亚洲视频在线免费看 | 亚洲激情一区二区三区 | 一区二区三区av在线 | 91av在线播放 | 亚洲成人午夜av | 久久久成人精品 | 免费观看一区 | 97成人在线观看视频 | 日韩在线精品一区 | 一区二区电影网 | 人人澡人人澡人人 | 国产成人av免费在线观看 | 欧美激情视频一区二区三区 | 一区二区视频欧美 | 美女视频一区二区 | 99热这里只有精品久久 | 91视频免费观看 | 日韩网站在线免费观看 | 国产精品黄色 | 亚洲 精品在线视频 | 日韩理论在线 | 成年人免费在线观看网站 | 在线观看小视频 | 中文字幕有码在线 | 中文字幕一区三区 | 国产亚洲在线视频 | 国产精品一区二区三区在线播放 | 日本韩国精品在线 | 视频三区在线 | 青草视频在线播放 | 国产伦理久久精品久久久久_ | 国产美女搞久久 | 亚洲成人av在线播放 | 激情五月婷婷激情 | 亚洲精品乱码久久久久久蜜桃91 | 久草亚洲视频 | 在线a视频 | 国产精品成人久久久久 | h动漫中文字幕 | 日韩电影在线一区二区 | 色91av| 91av在线播放视频 | 久久男人影院 | 精品你懂的 | 国产在线观看地址 | 亚洲影视资源 | 丁香激情网 | 亚洲理论在线观看电影 | 综合网伊人 | 99久久一区 | 亚洲天堂va | 免费观看的av网站 | 亚洲欧美视频 | 久久se视频 | 18久久久久久 | 久久久亚洲电影 | 国产婷婷vvvv激情久 | 日韩美女一级片 | 中文视频在线播放 | 国产成人三级在线 | 99久久精品免费视频 | 中国一级片在线 | 色婷婷在线观看视频 | 日本黄色大片儿 | 91香蕉视频污在线 | 午夜视频在线网站 | 久久国产精品久久精品国产演员表 | 久草香蕉在线视频 | 玖玖玖国产精品 | 五月婷网 | 久久99国产精品久久99 | 天天摸天天操天天爽 | 久久免费视频网 | 国产精品影音先锋 | 九七在线视频 | 欧美在线观看禁18 | 精品久久影院 | 丁香花在线观看视频在线 | 日韩欧美亚州 | 国内外成人免费在线视频 | 免费黄在线观看 | 日韩免费精品 | 日韩电影中文,亚洲精品乱码 | 五月婷婷六月丁香在线观看 | 天天干夜夜操视频 | 国产色道 | 天天躁日日躁狠狠 | 一区免费观看 | 色综合天 | 99精品乱码国产在线观看 | 国产精品第| 亚洲91av | 草久热 | 国产在线传媒 | 99色视频在线 | 中文视频在线 | 成人一区二区在线观看 | 国产精品 中文字幕 亚洲 欧美 | 亚洲黄色免费观看 | 久久免费视频国产 | 国产日韩高清在线 | 国产亚洲观看 | 久久综合色一综合色88 | 99看视频在线观看 | 天天天天色射综合 | 精品久久久久久亚洲综合网站 | 99亚洲精品在线 | 欧美性网站 | 中文字幕在线观看网址 | 国产美女在线免费观看 | 区一区二区三区中文字幕 | 亚欧日韩成人h片 | 这里只有精品视频在线观看 | 天堂av在线中文在线 | 天天操天天射天天爽 | 91精品一区在线观看 | 中文 一区二区 | 开心激情婷婷 | 国产精品毛片久久久久久久 | 国产福利91精品 | 久久综合狠狠综合久久激情 | 日韩在线观看第一页 | 久久综合免费视频影院 | 99精品福利 | 婷婷久久综合九色综合 | 91在线看视频免费 | 亚洲国产免费 | 国产手机免费视频 | 91大片网站 | 午夜视频在线观看一区二区 | 99久久网站| 中文字幕一区二区三区在线播放 | 久在线观看视频 | 亚洲精品色 | 国产黄a三级 | 天天综合入口 | 亚洲精品国| 天天操天天操一操 | 热热热热热色 | 99性视频 | 99久高清在线观看视频99精品热在线观看视频 | 成人免费视频网站在线观看 | 高清免费在线视频 | 一级大片在线观看 | 国产精品网红直播 | 久久老司机精品视频 | 国产精品久久久av久久久 | 日韩一二区在线观看 | 九热在线 | 精品一区中文字幕 | 五月婷婷国产 | 在线电影播放 | 国产成人精品区 | 日韩在线观看网站 | 久久国产精品久久精品国产演员表 | 国产精品第 | 天天操天天射天天操 | 亚洲精品国产精品久久99 | 国产午夜免费视频 | 日韩在线视频国产 | 91成人免费看 | 99在线精品视频观看 | 日韩av免费在线看 | 国产免费xvideos视频入口 | 麻豆视频成人 | 69av视频在线观看 | 午夜在线免费观看视频 | 日韩精品第1页 | 天天射狠狠干 | 日韩在线观看网址 | 国产午夜三级一区二区三桃花影视 | 大片网站久久 | 色橹橹欧美在线观看视频高清 | 欧美精品免费一区二区 | 在线小视频国产 | 四虎成人精品 | 亚洲免费精品一区二区 | 免费av网站在线看 | 国产视频91在线 | 中文字幕一区二区在线观看 | 视频精品一区二区三区 | 亚洲视频在线观看免费 | 黄网站免费久久 | 天天干,狠狠干 | 精品视频123区在线观看 | 国产啊v在线观看 | 人人爱在线视频 | 久草网在线观看 | 成人黄色在线 | 美女黄色网在线播放 | 国产精品一区二区三区电影 | 天天天天天天操 | 国产亚洲精品美女久久 | 天天射天天操天天色 | 免费在线观看中文字幕 | 久久久天堂 | 国产麻豆精品95视频 | 久久精品国产亚洲精品2020 | 国产一区国产二区在线观看 | 亚洲涩涩涩 | 97精品一区 | 成人国产精品电影 | 又长又大又黑又粗欧美 | 日韩国产精品毛片 | 日韩av免费在线看 | 久久综合久久久久88 | 91精品啪啪 | 69av久久 | 日韩伦理一区二区三区av在线 | 日本公妇在线观看高清 | 成人app在线免费观看 | 日韩av影视在线观看 | 国产成人精品一区二区三区在线 | 亚洲午夜久久久久久久久久久 | 日韩电影在线观看一区二区三区 | 午夜精品99久久免费 | 日韩午夜小视频 | 欧美va天堂va视频va在线 | 国产视频在线免费观看 | 成年人免费观看在线视频 | 91麻豆精品国产91久久久久久 | 国产精品一区二区久久精品 | 精品国产美女在线 | 久久免费观看少妇a级毛片 久久久久成人免费 | 91探花在线视频 | 狠狠狠色丁香婷婷综合久久五月 | 超碰在线观看97 | 国产 中文 日韩 欧美 | av天天在线观看 | 色播五月激情五月 | jizzjizzjizz亚洲| 亚洲激情视频在线观看 | 国产91综合一区在线观看 | 在线观看久久 | 在线亚洲午夜片av大片 | 亚洲综合日韩在线 | 综合色在线观看 | 日韩在线中文字幕 | 久久天天躁 | 西西444www大胆高清视频 | 日韩欧美一区二区在线播放 | 亚洲欧美激情插 | 日韩在线观看影院 | 麻豆传媒一区二区 | 国产在线看一区 | 激情综合五月天 | 日韩电影一区二区三区在线观看 | 中文字幕丝袜美腿 | www.91国产| 精品麻豆 | 狠狠色丁香婷婷综合最新地址 | 在线观看色视频 | 日韩色视频在线观看 | 国产一级免费视频 | 成人av电影免费在线播放 | av在线免费网 | 毛片一区二区 | 天天草天天摸 | 久久免费视频国产 | 久久欧洲视频 | 91九色porny在线 | 激情电影影院 | 国产一区二区三区在线免费观看 | 久久久久久网站 | 国产精品久久99精品毛片三a | 色多多视频在线 | 国产精品久久久久久久久久白浆 | 色婷婷88av视频一二三区 | www.夜夜操.com| 久久久久久综合网天天 | 免费看一级黄色 | 国产视频在线观看一区二区 | 久久亚洲综合色 | 日韩免费 | 91精品国产综合久久福利 | 久久视频精品在线观看 | 欧美一级裸体视频 | 99久久婷婷国产综合精品 | 免费久久久久久 | 国产精品成人一区 | 国产91精品一区二区绿帽 | 国产一级片观看 | 91精品国产成人www | 中文在线最新版天堂 | 97超视频免费观看 | 国产做aⅴ在线视频播放 | 99热9 | 国产一级二级视频 | 99热国产在线中文 | 亚州精品天堂中文字幕 | 亚洲91在线 | 久久久久久欧美二区电影网 | 99久久精品国产一区 | 色综合久久久 | 国产综合婷婷 | 欧美日韩网站 | 精品二区视频 | 成人免费观看在线视频 | 欧美国产日韩中文 | 97视频在线免费播放 | 亚洲精品久久久久久久不卡四虎 | 九九九九九国产 | av网在线观看 | 欧美一级免费片 | 在线观看中文字幕第一页 | 日韩网 | 97人人人人 | 亚洲精品激情 | 亚洲精品乱码久久久一二三 | 91精品国产成人观看 | 超碰97人人在线 | 久草视频手机在线 | 西西www4444大胆视频 | 久草视频在线看 | 99精品黄色片免费大全 | www天天干 | 亚洲精品国产综合99久久夜夜嗨 | 狠狠色丁香婷婷综合橹88 | 日韩一二三区不卡 | 亚洲视频 中文字幕 | 国产精品一码二码三码在线 | 欧美日韩国产在线精品 | 欧美大片mv免费 | 国产96视频 | 欧美a级成人淫片免费看 | 日韩精品视频免费专区在线播放 | av一区二区在线观看中文字幕 | 中文字幕一区二区三区乱码在线 | 久久综合色婷婷 | 黄色成人小视频 | 亚洲欧美国产精品va在线观看 | 欧美精品乱码99久久影院 | 蜜臀av夜夜澡人人爽人人桃色 | 国产天天综合 | 手机看片 | 免费看v片 | 偷拍福利视频一区二区三区 | 探花视频在线观看免费 | 91精品黄色 | 激情综合一区 | 国产精品自产拍在线观看网站 | 91精品久久久久久久久久久久久 | 日韩免| 午夜手机看片 | 久章操 | av黄网站 | 亚洲综合色av | 91精品国产99久久久久 | 国产精品97| 久久永久免费视频 | 国产精品久久久久久久久久久免费 | 91精品影视| 久久se视频| 婷婷丁香激情网 | 91亚洲网 | 激情欧美一区二区免费视频 | 久久99久久精品国产 | 日韩欧美国产免费播放 | 成人毛片在线视频 | 在线观看黄色小视频 | 国产一级一片免费播放放 | 激情综合亚洲 | 久久久2o19精品 | 丝袜足交在线 | 国产一级精品在线观看 | www久久国产 | 一级性视频 | 日日操天天操夜夜操 | 欧美一级片在线免费观看 | 午夜精品av在线 | 99久久免费看 | 美女久久久久 | 欧美精品亚洲二区 | 国产精品99久久久精品免费观看 | av片在线看 | 911国产| 深爱激情综合 | 欧美日韩三区二区 | 久久精品国产精品亚洲 | 久久精品国产精品亚洲精品 | 免费国产一区二区 | 成人久久18免费网站图片 | 在线小视频你懂的 | 五月婷婷六月丁香 | av九九| 中文字幕视频在线播放 | 91视频在线| 亚洲最大色 | 精品91视频 | 午夜久久久久久久久久久 | 激情在线免费视频 | 日韩激情综合 | 国产高清视频色在线www | 九九九热视频 | 欧美国产日韩一区二区 | 91视频免费网站 | 玖玖精品视频 | 日本精品视频在线播放 | 美国三级黄色大片 | www久久99| 国产日韩高清在线 | 91在线永久| 国产精品嫩草影院99网站 | 婷婷丁香激情五月 | 日韩网站免费观看 | 国产最新视频在线观看 | 久久国语露脸国产精品电影 | 日韩欧美一区视频 | 亚洲成年人av | www欧美xxxx| 久久成人亚洲欧美电影 | 国产福利91精品 | 丁香在线视频 | 精品在线免费视频 | 久在线 | japanesexxxhd奶水 91在线精品一区二区 | 二区在线播放 | 日本中文字幕网 | 日韩一三区 | 在线观看精品一区 | 中文字幕一区二区三区乱码不卡 | 五月婷婷激情网 | 欧美日本日韩aⅴ在线视频 插插插色综合 | 亚洲片在线 | 涩涩网站在线看 | 欧美国产视频在线 | 最新精品视频在线 | 99久久精品国产一区 | 国产成人在线免费观看 | 日韩欧美xx | 久久国产精品一区二区三区 | 亚洲国产视频直播 | 国产一二区视频 | 在线观看午夜av | 91麻豆精品 | 亚洲码国产日韩欧美高潮在线播放 | 九九九国产 | 69精品人人人人 | a天堂一码二码专区 | 亚洲黄色av网址 | 亚洲美女在线国产 | 天天射天天射天天射 | 国产成人久久精品77777 | 欧美日韩高清一区 | 爱爱一区| 超碰在线97观看 | 人交video另类hd | 国产视频欧美视频 | 色资源二区在线视频 | 亚洲精品视频播放 | 久久天天躁 | 特黄色大片 | 欧美日韩视频在线播放 | 久久亚洲精品电影 | 国产在线精品福利 | 中文字幕av免费观看 | 亚洲国产欧美在线看片xxoo | 一区二区三区精品在线视频 | 中字幕视频在线永久在线观看免费 | 午夜成人免费影院 | 中文字幕一区二区三区在线播放 | 国产69久久精品成人看 | 成人午夜剧场在线观看 | 美女啪啪图片 | 成人一区影院 | 九九综合九九 | www.天天综合 | 国产资源精品在线观看 | 国产成人一区二 | 国产精品黄色在线观看 | 国产日韩欧美在线观看 | 久久国产精品区 | 日韩高清网站 | 日韩国产精品久久 | 国产免费观看av | 在线日韩中文字幕 | 国产精品专区在线 | 在线观看视频免费大全 | 偷拍久久久 | 四虎在线免费观看 | 色婷婷一| 亚洲手机天堂 | 97操碰 | 最近日韩免费视频 | 久久久久久福利 | 欧美日韩视频在线观看免费 | 激情网站五月天 | 国产美女永久免费 | 国产精品第二页 | 亚洲精品永久免费视频 | 国产91aaa | 中文字幕在线看视频国产中文版 | 日批在线看 | 久久久久久久看片 | 婷婷久久久 | 欧美大片aaa | 精品免费视频123区 午夜久久成人 | 亚洲精品一区二区三区新线路 | 精品字幕在线 | 97网| 99久久婷婷国产一区二区三区 | 夜夜夜草 | 天天曰天天曰 | 在线看小早川怜子av | 国产黄色大片免费看 | 精品视频免费在线 | 国产黄色视 | 国产精品嫩草影院9 | 久久躁日日躁aaaaxxxx | 亚洲精品黄网站 | 久免费视频 | 视频三区| 美女精品在线观看 | 九九热精品视频在线播放 | 国产一区欧美在线 | 国产最新视频在线观看 | 亚洲成人精品国产 | 91av在线播放视频 | 蜜臀av性久久久久蜜臀av | 欧美一区二区视频97 | 99久热在线精品视频成人一区 | 婷婷成人亚洲综合国产xv88 | 国产一区免费在线观看 | 日韩欧美高清免费 | 欧美精彩视频 | 在线看片日韩 | 波多野结衣一区二区三区中文字幕 | 国产片网站 | 日韩大片在线看 | 色干综合| 色99导航 | 黄色三级网站在线观看 | 有码中文字幕 | 69亚洲精品| 国内丰满少妇猛烈精品播放 | 精品国产资源 | 在线观看mv的中文字幕网站 | 亚洲精品777 | 欧美性做爰猛烈叫床潮 | 韩国av不卡| 手机av在线网站 | 国产男女爽爽爽免费视频 | 天天干天天玩天天操 | 日韩欧美视频 | 日韩欧美一区二区三区视频 | 国产小视频你懂的在线 | 成年人国产精品 | 91亚色视频在线观看 | 日韩精品高清不卡 | 98久9在线 | 免费 | 亚洲精品国产精品99久久 | 国产91精品一区二区麻豆亚洲 | 丰满少妇在线观看 | 在线观看亚洲国产精品 | 国产精品麻豆视频 | 国产福利专区 | 天天插天天干天天操 | 91视频黄色 | 亚洲精品视频网站在线观看 | 精品久久免费 | 中文字幕久久亚洲 | 在线视频观看你懂的 | 免费av网站在线看 | 美女黄网站视频免费 | 亚洲第一av在线播放 | 国产精品免费观看网站 | 国产精品国产毛片 | 日产乱码一二三区别在线 | 亚洲精品乱码久久久久久 | 久久九九国产精品 | 欧美精品xx | 中文字幕乱码在线播放 | 一级黄色片在线 | 久久精品高清视频 | 精品久久一区二区 |