- 服務端軟體 - socket服務端 - 本地文件操作 - 解析指令【SQL語句】 - 客戶端軟體(各種各樣) - socket客戶端 - 發送指令 - 解析指令【SQL語句】 上述提到MySQL等軟體可以接受命令,並做出相應的操作,由於命令中可以包含刪除文件、獲取文件內容等眾多操作,對於編寫的命 ...
一、概述
1、什麼是資料庫?
答:定義1 資料庫(Database)是按照數據結構來組織、存儲和管理數據的建立在電腦存儲設備上的倉庫。 簡單來說是本身可視為電子化的文件櫃——存儲電子文件的處所,用戶可以對文件中的數據進行新增、截取、更新、刪除等操作。 在經濟管理的日常工作中,常常需要把某些相關的數據放進這樣的“倉庫”,並根據管理的需要進行相應的處理。 例如,企業或事業單位的人事部門常常要把本單位職工的基本情況(職工號、姓名、年齡、性別、籍貫、工資、簡歷等)存放在表中,
這張表就可以看成是一個資料庫。有了這個"數據倉庫"我們就可以根據需要隨時查詢某職工的基本情況,也可以查詢工資
在某個範圍內的職工人數等等。這些工作如果都能在電腦上自動進行,那我們的人事管理就可以達到極高的水平。
此外,在財務管理、倉庫管理、生產管理中也需要建立眾多的這種"資料庫",使其可以利用電腦實現財務、倉庫、生產的自動化管理。 定義2 嚴格來說,資料庫是長期儲存在電腦內、有組織的、可共用的數據集合。資料庫中的數據指的是以一定的數據模型組織、
描述和儲存在一起、具有儘可能小的冗餘度、較高的數據獨立性和易擴展性的特點並可在一定範圍內為多個用戶共用。 這種數據集合具有如下特點:儘可能不重覆,以最優方式為某個特定組織的多種應用服務,其數據結構獨立於使用它的應用程式,
對數據的增、刪、改、查由統一軟體進行管理和控制。從發展的歷史看,資料庫是數據管理的高級階段,它是由文件管理系統發展起來的。 2、什麼是 MySQL、Oracle、SQLite、Access、MS SQL Server等 ? 答:他們均是一個軟體,都有兩個主要的功能: a. 將數據保存到文件或記憶體 b. 接收特定的命令,然後對文件進行相應的操作 PS:如果有了以上軟體,無須自己再去創建文件和文件夾,而是直接傳遞 命令 給上述軟體,讓其來進行文件操作,
他們統稱為資料庫管理系統(DBMS,Database Management System) 3、什麼是SQL ?
答:MySQL:是用於管理文件的一個軟體
- 服務端軟體
- socket服務端
- 本地文件操作
- 解析指令【SQL語句】
- 客戶端軟體(各種各樣)
- socket客戶端
- 發送指令
- 解析指令【SQL語句】
上述提到MySQL等軟體可以接受命令,並做出相應的操作,由於命令中可以包含刪除文件、獲取文件內容等眾多操作,對於編寫的命令就是SQL語句。
SQL是結構化語言(Structured Query Language)的縮寫,SQL是一種專門用來與資料庫通信的語言。
其他類似軟體:
關係型資料庫:sqllite,db2,oracle,access,sql server MySQL
非關係型資料庫:MongoDB,redis
二、下載安裝
MySQL是一個關係型資料庫管理系統,由瑞典MySQL AB 公司開發,目前屬於 Oracle 旗下公司。MySQL 最流行的關係型資料庫管理系統,
在WEB應用方面MySQL是最好的 RDBMS (Relational Database Management System,關係資料庫管理系統) 應用軟體之一。
想要使用MySQL來存儲並操作數據,則需要做幾件事情:
a. 安裝MySQL服務端
b. 安裝MySQL客戶端
b. 【客戶端】連接【服務端】
c. 【客戶端】發送命令給【服務端MySQL】服務的接受命令並執行相應操作(增刪改查等)
1 下載 2 http://dev.mysql.com/downloads/mysql/ 3 安裝 4 windows: 5 直接點 6 Linux: 7 yum install mysql-server 8 Mac: 9 直接點
Window版本
1、下載
1 MySQL Community Server 5.7.16 2 3 http://dev.mysql.com/downloads/mysql/
2、解壓
如果想要讓MySQL安裝在指定目錄,那麼就將解壓後的文件夾移動到指定目錄,如:C:\mysql-5.7.16-winx64。
3、初始化
MySQL解壓後的 bin 目錄下有一大堆的可執行文件,執行如下命令初始化數據:
1 cd c:\mysql-5.7.16-winx64\bin 2 3 mysqld --initialize-insecure
4、啟動MySQL服務
執行命令從而啟動MySQL服務
1 # 進入可執行文件目錄 2 cd c:\mysql-5.7.16-winx64\bin 3 4 # 啟動MySQL服務 5 mysqld
5、啟動MySQL客戶端並連接MySQL服務
由於初始化時使用的【mysqld --initialize-insecure】命令,其預設未給root賬戶設置密碼
1 # 進入可執行文件目錄 2 cd c:\mysql-5.7.16-winx64\bin 3 4 # 連接MySQL伺服器 5 mysql -u root -p 6 7 # 提示請輸入密碼,直接回車
輸入回車,見下圖表示安裝成功:
到此為止,MySQL服務端已經安裝成功並且客戶端已經可以連接上,以後再操作MySQL時,只需要重覆上述4、5步驟即可。
但是,在4、5步驟中重覆的進入可執行文件目錄比較繁瑣,如想日後操作簡便,可以做如下操作。
a. 添加環境變數
將MySQL可執行文件添加到環境變數中,從而執行執行命令即可
1 【右鍵電腦】--》【屬性】--》【高級系統設置】--》【高級】--》【環境變數】--》【在第二個內容框中找到 變數名為Path 的一行,雙擊】 --> 【將MySQL的bin目錄路徑追加到變值值中,用 ; 分割】 2 3 如: 4 C:\Program Files (x86)\Parallels\Parallels Tools\Applications;%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;%SYSTEMROOT%\System32\WindowsPowerShell\v1.0\;C:\Python27;C:\Python35;C:\mysql-5.7.16-winx64\bin
如此一來,以後再啟動服務並連接時,僅需:
1 # 啟動MySQL服務,在終端輸入 2 mysqld 3 4 # 連接MySQL服務,在終端輸入: 5 mysql -u root -p
b. 將MySQL服務製作成windows服務
上一步解決了一些問題,但不夠徹底,因為在執行【mysqd】啟動MySQL伺服器時,當前終端會被hang住,那麼做一下設置即可解決此問題:
1 # 製作MySQL的Windows服務,在終端執行此命令: 2 "c:\mysql-5.7.16-winx64\bin\mysqld" --install 3 4 # 移除MySQL的Windows服務,在終端執行此命令: 5 "c:\mysql-5.7.16-winx64\bin\mysqld" --remove
註冊成服務之後,以後再啟動和關閉MySQL服務時,僅需執行如下命令:
1 # 啟動MySQL服務 2 net start mysql 3 4 # 關閉MySQL服務 5 net stop mysql
Linux版本
安裝:
1 yum install mysql-server
服務端啟動
1 mysql.server start
客戶端連接
1 連接: 2 mysql -h host -u user -p 3 4 常見錯誤: 5 ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2), it means that the MySQL server daemon (Unix) or service (Windows) is not running. 6 退出: 7 QUIT 或者 Control+D
三、資料庫操作
1、顯示資料庫
1 show databases;
預設資料庫:
mysql - 用戶許可權相關數據
test - 用於用戶測試數據
information_schema - MySQL本身架構相關數據
information_schema資料庫表說明:
SCHEMATA表:提供了當前mysql實例中所有資料庫的信息。是show databases的結果取之此表。
TABLES表:提供了關於資料庫中的表的信息(包括視圖)。詳細表述了某個表屬於哪個schema,表類型,表引擎,創建時間等信息。
是show tables from schemaname的結果取之此表。
COLUMNS表:提供了表中的列信息。詳細表述了某張表的所有列以及每個列的信息。是show columns from schemaname.tablename的結果取之此表。
STATISTICS表:提供了關於表索引的信息。是show index from schemaname.tablename的結果取之此表。
USER_PRIVILEGES(用戶許可權)表:給出了關於全程許可權的信息。該信息源自mysql.user授權表。是非標準表。
SCHEMA_PRIVILEGES(方案許可權)表:給出了關於方案(資料庫)許可權的信息。該信息來自mysql.db授權表。是非標準表。
TABLE_PRIVILEGES(表許可權)表:給出了關於表許可權的信息。該信息源自mysql.tables_priv授權表。是非標準表。
COLUMN_PRIVILEGES(列許可權)表:給出了關於列許可權的信息。該信息源自mysql.columns_priv授權表。是非標準表。
CHARACTER_SETS(字元集)表:提供了mysql實例可用字元集的信息。是SHOW CHARACTER SET結果集取之此表。
COLLATIONS表:提供了關於各字元集的對照信息。
COLLATION_CHARACTER_SET_APPLICABILITY表:指明瞭可用於校對的字元集。這些列等效於SHOW COLLATION的前兩個顯示欄位。
TABLE_CONSTRAINTS表:描述了存在約束的表。以及表的約束類型。
KEY_COLUMN_USAGE表:描述了具有約束的鍵列。
ROUTINES表:提供了關於存儲子程式(存儲程式和函數)的信息。此時,ROUTINES表不包含自定義函數(UDF)。名為“mysql.proc name”的列指明瞭對應於 INFORMATION_SCHEMA.ROUTINES表的mysql.proc表列。
VIEWS表:給出了關於資料庫中的視圖的信息。需要有show views許可權,否則無法查看視圖信息。
TRIGGERS表:提供了關於觸發程式的信息。必須有super許可權才能查看該表。
2、創建資料庫
1 # utf-8 2 create database 資料庫名稱 default charset utf8 collate utf8_general_ci; 3 4 # gbk 5 create database 資料庫名稱 default character set gbk collate gbk_chinese_ci;
3、使用資料庫
1 use db_name;
顯示當前使用的資料庫中所有表:show tables;
4、刪除資料庫
1 drop database db_name;
5、用戶管理
1 創建用戶 2 create user '用戶名'@'IP地址' identified by '密碼'; 3 create user 'xyp'@'192.168.1.1' identified by '123'; #賬戶名xyp,ip地址192.168.1.1,密碼123可以使用該用戶 4 create user 'xyp'@'192.168.1.%' identified by '123'; # %代表任意 5 create user 'xyp'@'%' identified by '123'; 6 刪除用戶 7 drop user '用戶名'@'IP地址'; 8 修改用戶 9 rename user '用戶名'@'IP地址'; to '新用戶名'@'IP地址';; 10 修改密碼 11 set password for '用戶名'@'IP地址' = Password('新密碼') 12 13 PS:用戶許可權相關數據保存在mysql資料庫的user表中,所以也可以直接對其進行操作(不建議)
6、授權管理
1 show grants for '用戶'@'IP地址' -- 查看許可權 2 grant 許可權 on 資料庫.表 to '用戶'@'IP地址' -- 授權 3 revoke 許可權 on 資料庫.表 from '用戶'@'IP地址' -- 取消許可權
1 all privileges 除grant外的所有許可權 2 select 僅查許可權 3 select,insert 查和插入許可權 4 ... 5 usage 無訪問許可權 6 alter 使用alter table 7 alter routine 使用alter procedure和drop procedure 8 create 使用create table 9 create routine 使用create procedure 10 create temporary tables 使用create temporary tables 11 create user 使用create user、drop user、rename user和revoke all privileges 12 create view 使用create view 13 delete 使用delete 14 drop 使用drop table 15 execute 使用call和存儲過程 16 file 使用select into outfile 和 load data infile 17 grant option 使用grant 和 revoke 18 index 使用index 19 insert 使用insert 20 lock tables 使用lock table 21 process 使用show full processlist 22 select 使用select 23 show databases 使用show databases 24 show view 使用show view 25 update 使用update 26 reload 使用flush 27 shutdown 使用mysqladmin shutdown(關閉MySQL) 28 super