MySQL基礎
這一章內(nèi)容,重點講解數(shù)據(jù)庫的方方面面荚斯。數(shù)據(jù)庫(Database)是按照數(shù)據(jù)結(jié)構(gòu)來組織埠居、存儲和管理數(shù)據(jù)的倉庫查牌,我們主要從入門的視角來學習這部分事期。
數(shù)據(jù)庫的定義
A database is an organized collection of data. It is the collection of schemas, tables, queries, reports, views and other objects. The data are typically organized to model aspects of reality in a way that supports processes requiring information, such as modelling the availability of rooms in hotels in a way that supports finding a hotel with vacancies.
數(shù)據(jù)庫是數(shù)據(jù)有組織的集合。這是一個對象模式纸颜、表兽泣、查詢、報表胁孙、視圖和其他對象的集合唠倦。該數(shù)據(jù)通常被組織到現(xiàn)實的方面進行建模称鳞,支持需要的信息流程,如模擬酒店房間的可用性的方式稠鼻,支持查找可用酒店的方式冈止。
什么是數(shù)據(jù)庫
數(shù)據(jù)庫的應用場景:
企業(yè)信息:
- 銷售:用于存儲客戶、產(chǎn)品和購買信息等
- 會計:用于存儲付款候齿、收據(jù)熙暴、賬戶余額、資產(chǎn)和其他會計信息
- 人力資源:用于存儲雇員慌盯、工資周霉、所得稅和津貼的信息,以及產(chǎn)生工資單等
銀行和金融
- 銀行業(yè):用于存儲客戶信息亚皂、賬戶俱箱、貸款以及銀行的交易記錄
- 信用卡交易:用于記錄信用卡消費的情況和產(chǎn)生每月清單
數(shù)據(jù)庫是有組織地存儲模型數(shù)據(jù)的空間,存儲各種類型的信息(數(shù)據(jù))灭必。每個數(shù)據(jù)庫狞谱,除了無模式型的,都有一個模型厂财,提供數(shù)據(jù)的結(jié)構(gòu)描述芋簿。
數(shù)據(jù)庫管理系統(tǒng)是管理數(shù)據(jù)庫結(jié)構(gòu)、大小和排序的應用(或軟件)璃饱。
數(shù)據(jù)庫邏輯結(jié)構(gòu)體系
數(shù)據(jù)庫:Database与斤,簡稱為DB。是長期存儲在計算機內(nèi)荚恶,有組織的撩穿,統(tǒng)一管理的相關(guān)數(shù)據(jù)的集合。
數(shù)據(jù)庫管理系統(tǒng):Database Management System谒撼,簡稱為DBMS食寡。由相互關(guān)聯(lián)的數(shù)據(jù)集合以及一組用于訪問這些數(shù)據(jù)的程序組成。
數(shù)據(jù)庫管理系統(tǒng)是位于用戶與操作系統(tǒng)之間的一層數(shù)據(jù)庫管理軟件廓潜。為用戶程序提供訪問數(shù)據(jù)庫的方法抵皱,包括建立數(shù)據(jù)庫、查詢辩蛋、更新以及各種數(shù)據(jù)庫控制等操作呻畸。
DBMS的工作模式如下:
- 接受應用程序的數(shù)據(jù)請求和處理請求
- 將用戶的數(shù)據(jù)請求轉(zhuǎn)換為復雜的機器代碼
- 實現(xiàn)對數(shù)據(jù)庫的操作
- 從對數(shù)據(jù)庫的操作中接受查詢結(jié)果
- 對查詢結(jié)果進行處理和格式轉(zhuǎn)換
- 將處理結(jié)果返回給用戶
DBMS的主要功能
-
數(shù)據(jù)庫的定義功能
表格 房子、教室
創(chuàng)建表格:定義表格的列
修改表格:修改表格的列(增加列悼院,修改列伤为,刪除列)
刪除表格:去掉表格 -
數(shù)據(jù)庫的操縱功能
數(shù)據(jù),記錄据途,學員绞愚、講師
增加記錄
刪除記錄
修改記錄
查詢記錄 數(shù)據(jù)庫的保護功能
數(shù)據(jù)庫的維護功能
數(shù)據(jù)庫系統(tǒng):Database System叙甸,簡稱為DBS。是實現(xiàn)有組織的位衩、動態(tài)的存儲大量關(guān)聯(lián)數(shù)據(jù)裆蒸、方便多用戶訪問的計算機硬件、軟件和數(shù)據(jù)資源組成的系統(tǒng)糖驴。
數(shù)據(jù)庫系統(tǒng)是一種采用數(shù)據(jù)庫技術(shù)的計算機系統(tǒng)光戈。
DBS的組成
- 數(shù)據(jù)庫:包括兩類,一類是應用數(shù)據(jù)的集合遂赠,物理數(shù)據(jù)庫久妆,數(shù)據(jù)庫的主體;另一類是各級數(shù)據(jù)結(jié)構(gòu)的描述跷睦,描述數(shù)據(jù)庫筷弦。
- 硬件:包括計算機、服務器等硬件設備抑诸。
- 軟件:包括數(shù)據(jù)庫管理系統(tǒng)(DBMS, database management system)烂琴、操作系統(tǒng)、各種主語言
- 數(shù)據(jù)庫管理員(DBA)
數(shù)據(jù)庫發(fā)展歷史
人工管理階段
文件系統(tǒng)階段
數(shù)據(jù)庫階段
- 1950年到1960年蜕乡,磁帶用于數(shù)據(jù)存儲奸绷。
- 1968年,美國IBM公司推出層次模型的IMS(Information Management System)系統(tǒng)层玲,硬盤使用系統(tǒng)号醉。
- 1969年,美國CODASYL(Conference On Data System Language)組織發(fā)布了DBTG(Data Base Task Group)報告辛块,總結(jié)了當時各式各樣的數(shù)據(jù)庫畔派,提出網(wǎng)狀模型。
- 1970年润绵,美國IBM公司的Edgar F.Codd博士連續(xù)發(fā)表論文线椰,提出關(guān)系模型,奠定了關(guān)系型數(shù)據(jù)庫的理論基礎尘盼。Codd也獲得了聲望很高的ACM圖靈獎憨愉。
- 1990年以后,數(shù)據(jù)庫進入了高級應用階段卿捎。面向?qū)ο蟮臄?shù)據(jù)庫技術(shù)配紫、開放數(shù)據(jù)庫互聯(lián)技術(shù)、數(shù)據(jù)倉庫(大數(shù)據(jù))和數(shù)據(jù)挖掘技術(shù)的應用日益廣泛娇澎。
數(shù)據(jù)庫學習重點
Mysql數(shù)據(jù)庫的連接與命令行操作
SQL的數(shù)據(jù)基本查詢和復雜查詢操作
-
SQL的表對象的創(chuàng)建笨蚁、刪除和修改操作
?
數(shù)據(jù)庫管理系統(tǒng)
A database management system (DBMS) is a computer software application that interacts with the user, other applications, and the database itself to capture and analyze data. A general-purpose DBMS is designed to allow the definition, creation, querying, update, and administration of databases.
數(shù)據(jù)庫管理系統(tǒng)(DBMS)是與用戶睹晒,其他應用程序和數(shù)據(jù)庫本身來捕獲和分析數(shù)據(jù)進行交互的計算機軟件應用程序趟庄。
一般用途的數(shù)據(jù)庫管理系統(tǒng)旨在允許定義括细,創(chuàng)建,查詢戚啥,更新和管理數(shù)據(jù)庫奋单。
數(shù)據(jù)庫管理系統(tǒng)分類
關(guān)系型數(shù)據(jù)庫
關(guān)系型數(shù)據(jù)庫系統(tǒng)實現(xiàn)了關(guān)系模型,并用它來處理數(shù)據(jù)猫十。關(guān)系模型在表中將信息與字段關(guān)聯(lián)起來(也就是schemas)览濒,從而存儲數(shù)據(jù)。
這種數(shù)據(jù)庫管理系統(tǒng)需要結(jié)構(gòu)(例如表)在存儲數(shù)據(jù)之前被定義出來拖云。有了表贷笛,每一列(字段)都存儲一個不同類型(數(shù)據(jù)類型)的信息。數(shù)據(jù)庫中的每個記錄宙项,都有自己唯一的key乏苦,作為屬于某一表的一行,行中的每一個信息都對應了表中的一列——所有的關(guān)系一起尤筐,構(gòu)成了關(guān)系模型汇荐。
非關(guān)系型(NoSQL)數(shù)據(jù)庫
- 文檔型存儲
- 列存儲
- 緩存存儲
主流數(shù)據(jù)庫介紹
數(shù)據(jù)庫 | 描述 | 優(yōu)點 | 不足 |
---|---|---|---|
Oracle | 甲骨文公司推出的使用最廣泛的關(guān)系型數(shù)據(jù)庫管理系統(tǒng) | 高穩(wěn)定性、可靠性盆繁、優(yōu)秀的安全機制掀淘、優(yōu)秀的安全機制、采用標準的SQL結(jié)構(gòu)化查詢語言油昂、支持大型數(shù)據(jù)庫革娄,數(shù)據(jù)類型支持數(shù)字、字符冕碟、大至2GB的二進制數(shù)據(jù)稠腊,為數(shù)據(jù)庫的面向?qū)ο蟠鎯μ峁?shù)據(jù)支持。www.oracle.com | 貴鸣哀、對硬件要求很高架忌、對數(shù)據(jù)庫管理員的經(jīng)驗要求較高 |
Microsoft SQL Server | 微軟公司的關(guān)系型數(shù)據(jù)庫管理系統(tǒng) | 真正的客戶機/服務器體系結(jié)構(gòu),圖形化的用戶界面我衬,使系統(tǒng)管理和數(shù)據(jù)庫管理更加直觀叹放、簡單、豐富的編程接口工具挠羔,為用戶進行程序設計提供了更大的選擇余地井仰,與WinNT完全集成,提供數(shù)據(jù)倉庫功能和商業(yè)智能分析等功能破加,https://msdn.microsoft.com/library/mt590198.aspx | 價格也高俱恶,而且不支持跨平臺,安全性也相對不高 |
MySQL | 開源的關(guān)系型數(shù)據(jù)庫管理系統(tǒng) | 開源軟件,版本更新較快合是、開源軟件了罪,版本更新較快、性能很出色聪全、價格便宜泊藕,官方網(wǎng)站:www.mysql.com | 缺乏一些存儲程序的功能,技術(shù)更新目前進入幾乎停滯狀態(tài) |
IBM DB2 | IBM公司的大型關(guān)系型數(shù)據(jù)庫管理系統(tǒng) | DB2主要應用于大型應用系統(tǒng)难礼,具有較好的可伸縮性娃圆,可支持從大型機到單用戶環(huán)境,應用于所有常見的服務器操作系統(tǒng)平臺下蛾茉。 DB2提供了高層次的數(shù)據(jù)利用性讼呢、完整性、安全性谦炬、可恢復性吝岭,以及小規(guī)模到大規(guī)模應用程序的執(zhí)行能力,具有與平臺無關(guān)的基本功能和SQL命令 | 管理工具比較簡陋吧寺、價格貴窜管。 |
MongoDB | 開源流行的文檔型NoSQL數(shù)據(jù)庫 | 關(guān)系數(shù)據(jù)庫和非關(guān)系數(shù)據(jù)庫之間的產(chǎn)物,其功能豐富稚机,能夠支持復雜的數(shù)據(jù)類型幕帆,但仍然保留著關(guān)系數(shù)據(jù)庫的一些屬性(查詢、索引) | 在國內(nèi)流行度不是很高赖条、相關(guān)技術(shù)資料比較缺乏 |
PostgreSQL | 最先進SQL型開源objective-RDBMS | PostgreSQL 的穩(wěn)定性極強失乾, Innodb 等引擎在崩潰、斷電之類的災難場景下抗打擊能力有了長足進步纬乍,比MySQL的性能和負載能力更強和穩(wěn)定碱茁,在 GIS 領域處于優(yōu)勢地位 | 普及度不夠高 |
Cassandra | 開源流行的列存儲NoSQL數(shù)據(jù)庫 | 它是混合型的非關(guān)系數(shù)據(jù)庫,在網(wǎng)絡社交云計算方面應用較理想仿贬,讀操作比寫操作快很多纽竣,較適用于銀行、金融茧泪、數(shù)據(jù)分析等領域蜓氨。 | 技術(shù)推廣難度 |
SQLite | 嵌入式使用的關(guān)系型數(shù)據(jù)庫管理系統(tǒng) | 基于文件、很容易遷移队伟,支持標準化遷移穴吹,簡潔 | 沒有用戶管理功能,不支持額外的性能優(yōu)化 |
Redis | 開源的內(nèi)存鍵值對型NoSQL數(shù)據(jù)庫 | 有各種豐富的數(shù)據(jù)結(jié)構(gòu)嗜侮,支持數(shù)據(jù)持久化 | 內(nèi)存優(yōu)化有待進一步提升 |
數(shù)據(jù)庫的評價排名平臺:http://db-engines.com/en/ranking_trend
MySQL的介紹
MySQL目前是屬于Oracle Corporation(甲骨文公司)推出的的關(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 應用方面MySQL是最好的 RDBMS (Relational Database Management System,關(guān)系數(shù)據(jù)庫管理系統(tǒng)) 應用軟件之一泼返。
MySQL是一種關(guān)聯(lián)數(shù)據(jù)庫管理系統(tǒng),關(guān)聯(lián)數(shù)據(jù)庫將數(shù)據(jù)保存在不同的表中姨拥,而不是將所有數(shù)據(jù)放在一個大倉庫內(nèi)绅喉,這樣就增加了速度并提高了靈活性。
MySQL所使用的 SQL 語言是用于訪問數(shù)據(jù)庫的最常用標準化語言叫乌。MySQL 軟件采用了雙授權(quán)政策柴罐,它分為社區(qū)版和商業(yè)版,由于其體積小憨奸、速度快革屠、總體擁有成本低,尤其是開放源碼這一特點排宰,一般中小型網(wǎng)站的開發(fā)都選擇 MySQL 作為網(wǎng)站數(shù)據(jù)庫似芝。
由于其社區(qū)版的性能卓越,搭配 PHP 和 Apache 可組成良好的開發(fā)環(huán)境板甘。
甲骨文公司党瓮,全稱甲骨文股份有限公司(甲骨文軟件系統(tǒng)有限公司),是全球最大的企業(yè)級軟件公司盐类,總部位于美國加利福尼亞州的紅木灘讯沈。1989年正式進入中國市場全景。2013年,甲骨文已超越 IBM ,成為繼 Microsoft 后全球第二大軟件公司笼恰。
MySQL數(shù)據(jù)庫產(chǎn)品內(nèi)容豐富,功能強大喧务。組要特性有:
- MySQL是開源的仰税,所以你不需要支付額外的費用。
- MySQL支持大型的數(shù)據(jù)庫割坠÷哂疲可以處理擁有上千萬條記錄的大型數(shù)據(jù)庫。
- MySQL使用標準的SQL數(shù)據(jù)語言形式韭脊。
- MySQL可以允許于多個系統(tǒng)上童谒,并且支持多種語言。這些編程語言包括C沪羔、C++饥伊、Python象浑、Java、Perl琅豆、PHP愉豺、Eiffel、Ruby和Tcl等茫因。
- MySQL對PHP有很好的支持蚪拦,PHP是目前最流行的Web開發(fā)語言。
- MySQL支持大型數(shù)據(jù)庫冻押,支持5000萬條記錄的數(shù)據(jù)倉庫驰贷,32位系統(tǒng)表文件最大可支持4GB,64位系統(tǒng)支持最大的表文件為8TB洛巢。
- MySQL是可以定制的括袒,采用了GPL協(xié)議,你可以修改源碼來開發(fā)自己的MySQL系統(tǒng)稿茉。
MySQL的安裝
MySQL的官網(wǎng):http://www.mysql.com
-
下載 windows installer 安裝包直接安裝
-
MySQL Community Server : MySQL 數(shù)據(jù)庫的服務端锹锰,只支持命令行操作
# windows cd "c:\program file\mysql\mysql server 5.7\bin" mysql -u root -p ####################### ### 具體示例 ### c:\Program Files\MySQL\MySQL Server 5.7\bin>mysql -u root -p Enter password: ************* Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 3 Server version: 5.7.16-log MySQL Community Server (GPL) Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql>
MySQL Workbench:MySQL 客戶端(官方),比較卡
-
MySQL on Windows (Installer & Tools) :包括所有的 MySQL工具
Snap8.jpgSnap5.jpgSnap6.jpg
-
-
使用 XAMPP 中的MySQL
在新版本的 XAMPP 中的MySQL漓库,實際上是 MariaDB恃慧。
- MySQL 與 MariaDB
MySQL之父Widenius先生離開了Sun之后,覺得依靠Sun/Oracle來發(fā)展MySQL渺蒿,實在很不靠譜糕伐,于是決定另開分支,這個分支的名字叫做MariaDB蘸嘶。
MariaDB跟MySQL在絕大多數(shù)方面是兼容的良瞧,對于開發(fā)者來說,幾乎感覺不到任何不同训唱。目前MariaDB是發(fā)展最快的MySQL分支版本褥蚯,新版本發(fā)布速度已經(jīng)超過了Oracle官方的MySQL版本。
MariaDB 是一個采用Aria存儲引擎的MySQL分支版本况增,是由原來 MySQL 的作者Michael Widenius創(chuàng)辦的公司MariaDB Corporation Ab
所開發(fā)的免費開源的數(shù)據(jù)庫服務器赞庶。
這個項目的更多的代碼都改編于 MySQL 6.0,例如 “pool of threads”功能提供解決多數(shù)據(jù)連接問題澳骤。MariaDB 5.1.41 RC可以到這里下載歧强,32位和64位已編譯Linux版本,還包括源代碼包为肮。MariaDB基于GPL 2.0發(fā)布摊册。
所以對于大部分的MySQL用戶來說,從現(xiàn)在主流的MySQL轉(zhuǎn)到MariaDB應該是沒有什么難度的颊艳。
# 進入 mysql所在的目錄
cd c:\xampp\mysql\bin
##################################
### 具體示例 ####
c:\xampp\mysql\bin>mysql -u root -p
Enter password:
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 2
Server version: 10.1.9-MariaDB mariadb.org binary distribution
Copyright (c) 2000, 2015, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]>
?
MySQL的主流數(shù)據(jù)庫連接工具
數(shù)據(jù)庫的連接工具茅特,有非常多種忘分,目的一樣,就是執(zhí)行 SQL 腳本白修,進行表的查詢妒峦,把查詢結(jié)果作為數(shù)據(jù)顯示出來
包含的內(nèi)容:
數(shù)據(jù)庫的對象的樹形(一般在左側(cè),主要看表 TABLE)
數(shù)據(jù)庫的腳本編輯框(輸入 腳本的地方)
-
數(shù)據(jù)的的查詢結(jié)果
Snap12.jpg
-
SQLyog:一個輕量的 MySQL 連接工具(付費)
Snap9.jpg MySQL Workbench(官方)
Navcate(付費)兵睛,支持多種主流DBMS:Oracle肯骇,MySQL,SQL Server祖很,PostgreSQL笛丙。。
-
DBeaver(免費):支持所有的數(shù)據(jù)庫突琳。外企若债,需要操作多種數(shù)據(jù)庫的符相。
Beaver:海貍
Snap10.jpg
SQLyog工具的使用
-
選擇安裝版本拆融,考慮32位還是64操作。
-
查看操作系統(tǒng)的版本是32位還是64位:
-
我的電腦 → 右鍵 → 屬性
Snap13.jpg Windows XP 一般是32位
Windows 7 以及以上的版本啊终,需要注意镜豹。
-
32位,選擇 x86(i686蓝牲,i386趟脂,i586。例衍。昔期。(x32不標準寫法)),代表32位
64位佛玄,選擇 x64(amd64)硼一,代表64位軟件。
-
-
安裝選定的版本梦抢。輸入 序列號般贼。
一般會自動彈出來,填寫序列號的窗口奥吩。
Snap14.jpg姓名隨意填寫哼蛆,序列號填寫文件里的。
-
連接 MySQL霞赫。確保被連接的 MySQL已經(jīng)啟動了腮介。(比如 XAMPP的 MySQL,或者是 Linux 的MySQL端衰,或者 安裝好的 官方的 MySQL Community Server)
- 新建連接
Snap15.jpg-
填寫 主機地址萤厅,用戶名橄抹,密碼,勾選
保存密碼
惕味,然后點擊測試連接
對當前的輸入進行測試連接楼誓。如果顯示連接成功,就代表已經(jīng)連接名挥。Snap16.jpg
點擊連接疟羹,訪問數(shù)據(jù)庫。