python数据库有什么特点_python进阶十——mysql初识
1.MySQL是什么
1.1:MYSQL簡介
MySQL 是最流行的數(shù)據(jù)庫之一,是一個免費開源的關(guān)系型數(shù)據(jù)庫管理系統(tǒng),但也不意味著該數(shù)據(jù)庫是完全免費的。MySQL 由瑞典 MySQL AB 公司開發(fā),目前屬于 Oracle 公司。MySQL 適合中小型軟件,被個人用戶以及中小企業(yè)青睞。
針對不同的用戶,MySQL 分為兩個版本:
MySQL Community Server(社區(qū)版):該版本是自由下載且完全免費的,但是官方不提供技術(shù)支持。
MySQL Enterprise Server(企業(yè)版):該版本是收費的,而且不能下載,但是該版本擁有完善的技術(shù)支持(官方提供電話技術(shù)支持)。
注意:MySQL Cluster 主要用于架設(shè)群服務(wù)器,需要在社區(qū)服務(wù)或企業(yè)版的基礎(chǔ)上使用。
MySQL 的命名機制由 3 個數(shù)字和 1 個后綴組成,例如 mysql-5.7.20:
第 1 個數(shù)字“5”是主版本號,用于描述文件的格式,所有版本 5 的發(fā)行版都有相同的文件夾格式。
第 2 個數(shù)字“7”是發(fā)行級別,主版本號和發(fā)行級別組合在一起便構(gòu)成了發(fā)行序列號。
第 3 個數(shù)字“20”是在此發(fā)行系列的版本號,隨每次新發(fā)行的版本遞增。通常選擇已經(jīng)發(fā)行的最新版本。
1.2:MySQL的特點、優(yōu)勢
MySQL 數(shù)據(jù)庫管理系統(tǒng)具有很多的優(yōu)勢,下面總結(jié)了其中幾種。
1)MySQL 是開放源代碼的數(shù)據(jù)庫
MySQL 是開放源代碼的數(shù)據(jù)庫,任何人都可以獲取該數(shù)據(jù)庫的源代碼。這就使得任何人都可以修正 MySQL 的缺陷,并且任何人都能以任何目的來使用該數(shù)據(jù)庫。MySQL 是一款可以自由使用的數(shù)據(jù)庫。
2)MySQL 的跨平臺性
MySQL 不僅可以在 Windows 系列的操作系統(tǒng)上運行,還可以在 UNIX、Linux 和 Mac OS
等操作系統(tǒng)上運行。因為很多網(wǎng)站都選擇 UNIX、Linux 作為網(wǎng)站的服務(wù)器,所以 MySQL 的跨平臺性保證了其在 Web
應(yīng)用方面的優(yōu)勢。雖然微軟公司的 SQL Server 數(shù)據(jù)庫是一款很優(yōu)秀的商業(yè)數(shù)據(jù)庫,但是其只能在 Windows
系列的操作系統(tǒng)上運行。因此,MySQL 數(shù)據(jù)庫的跨平臺性是一個很大的優(yōu)勢。
3)價格優(yōu)勢
MySQL 數(shù)據(jù)庫是一個自由軟件,任何人都可以從 MySQL 的官方網(wǎng)站上下載該軟件,這些社區(qū)版本的 MySQL
都是免費試用的,即使是需要付費的附加功能,其價格也是很便宜的。相對于 Oracle、DB2 和 SQL Server
這些價格昂貴的商業(yè)軟件,MySQL 具有絕對的價格優(yōu)勢。
1.3:RDBMS 術(shù)語
學(xué)習(xí)一下RDBMS的一些術(shù)語:
數(shù)據(jù)庫: 數(shù)據(jù)庫是一些關(guān)聯(lián)表的集合。
數(shù)據(jù)表: 表是數(shù)據(jù)的矩陣。在一個數(shù)據(jù)庫中的表看起來像一個簡單的電子表格。
列: 一列(數(shù)據(jù)元素) 包含了相同類型的數(shù)據(jù), 例如郵政編碼的數(shù)據(jù)。
行:一行(=元組,或記錄)是一組相關(guān)的數(shù)據(jù),例如一條用戶訂閱的數(shù)據(jù)。
冗余:存儲兩倍數(shù)據(jù),冗余降低了性能,但提高了數(shù)據(jù)的安全性。
主鍵:主鍵是唯一的。一個數(shù)據(jù)表中只能包含一個主鍵。你可以使用主鍵來查詢數(shù)據(jù)。
外鍵:外鍵用于關(guān)聯(lián)兩個表。
復(fù)合鍵:復(fù)合鍵(組合鍵)將多個列作為一個索引鍵,一般用于復(fù)合索引。
索引:使用索引可快速訪問數(shù)據(jù)庫表中的特定信息。索引是對數(shù)據(jù)庫表中一列或多列的值進行排序的一種結(jié)構(gòu)。類似于書籍的目錄。
參照完整性: 參照的完整性要求關(guān)系中不允許引用不存在的實體。與實體完整性是關(guān)系模型必須滿足的完整性約束條件,目的是保證數(shù)據(jù)的一致性。
MySQL 為關(guān)系型數(shù)據(jù)庫(Relational Database Management System), 這種所謂的"關(guān)系型"可以理解為"表格"的概念, 一個關(guān)系型數(shù)據(jù)庫由一個或數(shù)個表格組成。
表頭(header): 每一列的名稱;
列(col): 具有相同數(shù)據(jù)類型的數(shù)據(jù)的集合;
行(row): 每一行用來描述某條記錄的具體信息;
值(value): 行的具體信息, 每個值必須與該列的數(shù)據(jù)類型相同;
鍵(key): 鍵的值在當(dāng)前列中具有唯一性。
2.MySQL 安裝
2.1:Linux/UNIX 上安裝 MySQL
Linux平臺上推薦使用RPM包來安裝Mysql,MySQL AB提供了以下RPM包的下載地址:
MySQL -MySQL服務(wù)器。你需要該選項,除非你只想連接運行在另一臺機器上的MySQL服務(wù)器。
MySQL-client -MySQL 客戶端程序,用于連接并操作Mysql服務(wù)器。
MySQL-devel -庫和包含文件,如果你想要編譯其它MySQL客戶端,例如Perl模塊,則需要安裝該RPM包。
MySQL-shared - 該軟件包包含某些語言和應(yīng)用程序需要動態(tài)裝載的共享庫(libmysqlclient.so*),使用MySQL。
MySQL-bench - MySQL數(shù)據(jù)庫服務(wù)器的基準和性能測試工具。
安裝前,我們可以檢測系統(tǒng)是否自帶安裝 MySQL:
rpm -qa | grep mysql
如果你系統(tǒng)有安裝,那可以選擇進行卸載:
rpm -e mysql //普通刪除模式
rpm -e --nodeps mysql //強力刪除模式,如果使用上面命令刪除時,提示有依賴的其它文件,則用該命令可以對其進行強力刪除
安裝 MySQL:
接下來我們在 Centos7 系統(tǒng)下使用 yum 命令安裝 MySQL,需要注意的是 CentOS 7 版本中 MySQL數(shù)據(jù)庫已從默認的程序列表中移除,所以在安裝前我們需要先去官網(wǎng)下載 Yum 資源包,下載地址為:https://dev.mysql.com/downloads/repo/yum/
wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm
rpm -ivh mysql-community-release-el7-5.noarch.rpm
yum update
yum install mysql-server
權(quán)限設(shè)置:
chown mysql:mysql -R /var/lib/mysql
初始化 MySQL:
mysqld --initialize
啟動 MySQL:
systemctl start mysqld
查看 MySQL 運行狀態(tài):
systemctl status mysqld
注意:如果我們是第一次啟動 mysql 服務(wù),mysql 服務(wù)器首先會進行初始化的配置
此外,你也可以使用 MariaDB 代替,MariaDB 數(shù)據(jù)庫管理系統(tǒng)是 MySQL 的一個分支,主要由開源社區(qū)在維護,采用 GPL 授權(quán)許可。開發(fā)這個分支的原因之一是:甲骨文公司收購了 MySQL 后,有將 MySQL 閉源的潛在風(fēng)險,因此社區(qū)采用分支的方式來避開這個風(fēng)險。
MariaDB的目的是完全兼容MySQL,包括API和命令行,使之能輕松成為MySQL的代替品
yum install mariadb-server mariadb
mariadb數(shù)據(jù)庫的相關(guān)命令是:
systemctl start mariadb #啟動MariaDB
systemctl stop mariadb #停止MariaDB
systemctl restart mariadb #重啟MariaDB
systemctl enable mariadb #設(shè)置開機啟動
2.2:驗證 MySQL 安裝
在成功安裝 MySQL 后,一些基礎(chǔ)表會表初始化,在服務(wù)器啟動后,你可以通過簡單的測試來驗證 MySQL 是否工作正常。
使用 mysqladmin 工具來獲取服務(wù)器狀態(tài):
使用 mysqladmin 命令來檢查服務(wù)器的版本, 在 linux 上該二進制文件位于 /usr/bin 目錄,在 Windows 上該二進制文件位于C:\mysql\bin
[root@host]# mysqladmin --version
linux上該命令將輸出以下結(jié)果,該結(jié)果基于你的系統(tǒng)信息:
mysqladmin Ver 8.23 Distrib 5.0.9-0, for redhat-linux-gnu on i386
如果以上命令執(zhí)行后未輸出任何信息,說明你的Mysql未安裝成功
2.3:使用 MySQL Client(Mysql客戶端) 執(zhí)行簡單的SQL命令
你可以在 MySQL Client(Mysql客戶端) 使用 mysql 命令連接到 MySQL 服務(wù)器上,默認情況下 MySQL 服務(wù)器的登錄密碼為空,所以本實例不需要輸入密碼。
命令如下:
[root@host]# mysql
以上命令執(zhí)行后會輸出 mysql>提示符,這說明你已經(jīng)成功連接到Mysql服務(wù)器上,你可以在 mysql> 提示符執(zhí)行SQL命令:
mysql>SHOW DATABASES;+----------+
| Database |
+----------+
| mysql |
| test |
+----------+
2 rows in set (0.13 sec)
2.4:Mysql安裝后需要做的
Mysql安裝成功后,默認的root用戶密碼為空,你可以使用以下命令來創(chuàng)建root用戶的密碼:
[root@host]# mysqladmin -u root password "new_password";
現(xiàn)在你可以通過以下命令來連接到Mysql服務(wù)器:
[root@host]# mysql -u root -p
Enter password:123456
注意:在輸入密碼時,密碼是不會顯示了,你正確輸入即可
2.5:MySQL 用戶設(shè)置
如果你需要添加 MySQL 用戶,你只需要在 mysql 數(shù)據(jù)庫中的 user 表添加新用戶即可。
以下為添加用戶的的實例,用戶名為guest,密碼為guest123,并授權(quán)用戶可進行 SELECT, INSERT 和 UPDATE操作權(quán)限:
root@host# mysql -u root -p
Enter password:123456mysql>use mysql;
Database changed
mysql>INSERT INTO user
(host, user, password,
select_priv, insert_priv, update_priv)
VALUES ('localhost', 'guest',
PASSWORD('guest123'), 'Y', 'Y', 'Y');
Query OK,1 row affected (0.20sec)
mysql>FLUSH PRIVILEGES;
Query OK,1 row affected (0.01sec)
mysql> SELECT host, user, password FROM user WHERE user = 'guest';+-----------+---------+------------------+
| host | user | password |
+-----------+---------+------------------+
| localhost | guest | 6f8c114b58f2ce9e |
+-----------+---------+------------------+
1 row in set (0.00 sec)
在添加用戶時,請注意使用MySQL提供的 PASSWORD() 函數(shù)來對密碼進行加密。 你可以在以上實例看到用戶密碼加密后為: 6f8c114b58f2ce9e.
注意:在 MySQL5.7 中 user 表的 password 已換成了authentication_string。
注意:password() 加密函數(shù)已經(jīng)在 8.0.11 中移除了,可以使用 MD5() 函數(shù)代替。
注意:在注意需要執(zhí)行 FLUSH PRIVILEGES 語句。 這個命令執(zhí)行后會重新載入授權(quán)表。
如果你不使用該命令,你就無法使用新創(chuàng)建的用戶來連接mysql服務(wù)器,除非你重啟mysql服務(wù)器。
你可以在創(chuàng)建用戶時,為用戶指定權(quán)限,在對應(yīng)的權(quán)限列中,在插入語句中設(shè)置為 'Y' 即可,用戶權(quán)限列表如下:
Select_priv
Insert_priv
Update_priv
Delete_priv
Create_priv
Drop_priv
Reload_priv
Shutdown_priv
Process_priv
File_priv
Grant_priv
References_priv
Index_priv
Alter_priv
另外一種添加用戶的方法為通過SQL的 GRANT 命令,以下命令會給指定數(shù)據(jù)庫TUTORIALS添加用戶 yhh ,密碼為 123456
root@host# mysql -u root -p
Enter password:*******mysql>use mysql;
Database changed
mysql>GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP-> ON TUTORIALS.*
-> TO 'yhh'@'localhost'
-> IDENTIFIED BY '123456';
以上命令會在mysql數(shù)據(jù)庫中的user表創(chuàng)建一條用戶信息記錄。
注意: MySQL 的SQL語句以分號 (;) 作為結(jié)束標(biāo)識。
2.6:/etc/my.cnf 文件配置
一般情況下,你不需要修改該配置文件,該文件默認配置如下:
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
[mysql.server]
user=mysql
basedir=/var/lib
[safe_mysqld]
err-log=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
在配置文件中,你可以指定不同的錯誤日志文件存放的目錄,一般你不需要改動這些配置
2.7:數(shù)據(jù)庫命令行操作
1.查看所有數(shù)據(jù)庫
show databases;2.切換數(shù)據(jù)庫
use [數(shù)據(jù)庫名];3.創(chuàng)建數(shù)據(jù)庫
create database [數(shù)據(jù)庫名] ;4.刪除數(shù)據(jù)庫
drop database [數(shù)據(jù)庫名];5.對表的操作
查看所有表
show tables;6.創(chuàng)建表
create table [表名](字段1 類型1 約束1,字段2 類型2 約束2);7.刪除表
drop table [表名]8.修改表名字
rename table [表名] to [新名]
2.8:對字段的操作
9.查詢字段(表結(jié)構(gòu))
desc [表名]10.增加表的字段
alter table [表明]add [字段名 類型 約束]11.刪除字段
alter table [表名]drop[字段名]12.修改字段
alter table [表名] change [字段名] [新字段名 類型 約束]
① 、alter table students change id idint;
②、alter table students drop primary key;
2.9:對數(shù)據(jù)的操作
13.增加數(shù)據(jù)
插入一個全字段
insert into students values(0,’xxx’,31,1)
插入多個全字段
insert into students values(0,’liudehua’,24,0),(0,’yangmi’,31,0)
插入一個部分字段
insert into students(id,name) values(0,’zhaoliying’)
插入多個部分字段
insert into students(id,name) values(0,’liushishi’),(0,’linzhiling’)14.刪除某一條
deletefrom students where id=1;15.清空
deletefromstudents;16.修改數(shù)據(jù)
update studentset name=’xxx’ where name=’liudehua’17.查找所有數(shù)據(jù)select * fromstudents18.數(shù)據(jù)庫備份和恢復(fù)
備份: sudo mysqldump –u數(shù)據(jù)庫名 –p數(shù)據(jù)庫密碼 備份文件夾名> ~/Desktop/文件夾名back.sql
恢復(fù):進入mysql先要創(chuàng)建一個新的數(shù)據(jù)庫,注意字符集
然后退出mysql
sudo mysql –u數(shù)據(jù)庫名 –p數(shù)據(jù)庫密碼< ~/Desktop/備份文件夾名back.sql
總結(jié)
以上是生活随笔為你收集整理的python数据库有什么特点_python进阶十——mysql初识的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 奇瑞瑞虎8+pro的玻璃水多久需要加?
- 下一篇: python做mysql数据迁移_Pyt