初識MySQL

什麼是數據庫?

    數據庫(Database)是按照數據結構來組織、存儲和管理數據的倉庫,每個數據庫都有一個或多個不同的API用於創建,訪問,管理,搜索和複製所保存的數據。我們也可以將數據存儲在文件中,但是在文件中讀寫數據速度相對較慢。所以,現在我們使用關係型數據庫管理系統(RDBMS)來存儲和管理的大數據量。所謂的關係型數據庫,是建立在關係模型基礎上的數據庫,藉助於集合代數等數學概念和方法來處理數據庫中的數據。

    RDBMS即關係數據庫管理系統(Relational Database Management System)的特點:

  •   1.數據以表格的形式出現

  •   2.每行爲各種記錄名稱

  •   3.每列爲記錄名稱所對應的數據域

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

  •   5.若干的表單組成database

RDBMS (關係型數據庫)術語

  • 數據庫: 數據庫是一些關聯表的集合。.

  • 數據表: 表是數據的矩陣。在一個數據庫中的表看起來像一個簡單的電子表格。

  • 列: 一列(數據元素) 包含了相同的數據, 例如郵政編碼的數據。

  • 行:一行(=元組,或記錄)是一組相關的數據,例如一條用戶訂閱的數據。

  • 冗餘:存儲兩倍數據,冗餘降低了性能,但提高了數據的安全性。

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

  • 外鍵:外鍵用於關聯兩個表。

  • 複合鍵:複合鍵(組合鍵)將多個列作爲一個索引鍵,一般用於複合索引。

  • 索引:使用索引可快速訪問數據庫表中的特定信息。索引是對數據庫表中一列或多列的值進行排序的一種結構。類似於書籍的目錄。

  • 參照完整性: 參照的完整性要求關係中不允許引用不存在的實體。與實體完整性是關係模型必須滿足的完整性約束條件,目的是保證數據的一致性。

Mysql數據庫

MySQL是一個關係型數據庫管理系統,由瑞典MySQL AB公司開發,目前屬於Oracle公司。MySQL是一種關聯數據庫管理系統,關聯數據庫將數據保存在不同的表中,而不是將所有數據放在一個大倉庫內,這樣就增加了速度並提高了靈活性。

  • Mysql是開源的,不過賣身於Oracle後Mysql有閉源風險,所以centos7採用Mariadb。

  • MariaDB數據庫管理系統是MySQL的一個分支,主要由開源社區在維護,採用GPL授權許可
  • MariaDB的目的是完全兼容MySQL,包括API和命令行,使之能輕鬆成爲MySQL的代替品。
    在存儲引擎方面,10.0.9版起使用XtraDB(名稱代號爲Aria)來代替MySQL的InnoDB。
  • Mysql支持大型的數據庫。可以處理擁有上千萬條記錄的大型數據庫。

  • MySQL使用標準的SQL數據語言形式。

  • Mysql可以允許於多個系統上,並且支持多種語言。這些編程語言包括C、C++、Python、Java、Perl、PHP、Eiffel、Ruby和Tcl等。

  • Mysql對PHP有很好的支持,PHP是目前最流行的Web開發語言。

  • MySQL支持大型數據庫,支持5000萬條記錄的數據倉庫,32位系統表文件最大可支持4GB,64位系統支持最大的表文件爲8TB。

  • Mysql是可以定製的,採用了GPL協議,你可以修改源碼來開發自己的Mysql系統

MySQL 安裝

    在linux系統中安裝 mysql 可以直接用 yum 安裝 ,centos6及之前版本安裝 mysql, centos7安裝 mariadb, 不過需要值得注意的是要想正常使用 mysql 數據庫應當同時安裝有 mysql 客戶端和服務器端。

 以centos7 爲例: 

yum install mariadb-server mariadb  #安裝 mariadb 客戶端和服務器端
systemctl start mariadb  #啓動MariaDB    安裝完成後第一次啓動 mysql 服務,mysql 服務器首先會進行初始化的配置,需要時間較長。
systemctl stop mariadb  #停止MariaDB
systemctl restart mariadb  #重啓MariaDB
systemctl enable mariadb  #設置開機啓動

啓動 mysql 服務後就可以使用 mysql 客戶端執行一些數據庫操作


MySQL 管理

 MySQL 用戶設置

root@host# mysql -u root -p
Enter password:*******
mysql> 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.20 sec)mysql> FLUSH PRIVILEGES;Query OK, 1 row affected (0.01 sec)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() 函數來對密碼進行加密。 你可以在以上實例看到用戶密碼加密後爲: 6f8c114b58f2ce9e.

注意:在 MySQL5.7 中 user 表的 password 已換成了authentication_string

注意:在注意需要執行 FLUSH PRIVILEGES 語句。 這個命令執行後會重新載入授權表。

如果你不使用該命令,你就無法使用新創建的用戶來連接mysql服務器,除非你重啓mysql服務器。

你可以在創建用戶時,爲用戶指定權限,在對應的權限列中,在插入語句中設置爲 'Y' 即可,用戶權限列表如下:

  • 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 命令,建議使用這種命令,例如給指定數據庫TUTORIALS添加用戶 zara ,密碼爲 zara123 。

root@host# mysql -u root -p password;Enter password:*******mysql> use mysql;Database changed

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

以上命令會在mysql數據庫中的user表創建一條用戶信息記錄。

注意: MySQL 的SQL語句以分號 (;) 作爲結束標識。


管理MySQL的命令

以下列出了使用Mysql數據庫過程中常用的命令:

SHOW DATABASES: 
列出 MySQL 數據庫管理系統的數據庫列表

image.png

    USE 數據庫名 :
選擇要操作的Mysql數據庫,使用該命令後所有Mysql命令都只針對該數據庫。

   image.png

SHOW TABLES:
顯示指定數據庫的所有表,使用該命令前需要使用 use 命令來選擇要操作的數據庫。

image.png   

SHOW COLUMNS FROM 數據表:    類似於:  desc   TABLES;  命令
顯示數據表的屬性,屬性類型,主鍵信息 ,是否爲 NULL,默認值等其他信息。

image.png

























































發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章