MySQL(一)

来源:http://www.cnblogs.com/sun1994/archive/2017/12/11/8006848.html
-Advertisement-
Play Games

- 服務端軟體 - 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                   

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 1. 創建Java的類 如果說Java的一切都是對象,那麼類型就是決定了某一類對象的外觀與行為。可是類型的關鍵字不是type,而是class,創建一個新的類型要用下麵的代碼: 1 2 3 class AClassName{ //類型的主體 } 1 2 3 class AClassName{ //類型 ...
  • Description 輸入一個正整數n,求有幾對素數x,y,滿足n=x+y((3,2)和(2,3)視為相同的素數對)。 Input 有多組數據,每行輸入一個偶整數n(3<n<32768)。n等於0時,輸入結束。 Output 輸出相應的答案。 Sample Input 6 10 12 0 Samp ...
  •   在分析了hashCode方法和equals方法之後,我們對hashCode方法和equals方法的相關作用有了大致的瞭解。在通過查看HashMap類的相關源碼的時候,發現其中存在一個int hash(int h)的方法。在HashMap中該方法的源碼如下:  &em ...
  • 文章核心 其實,本不想把標題寫的那麼恐怖,只是發現很多人幹了幾年java以後,都自認為是一個不錯的java程式員了,可以拿著上萬的工資都處宣揚自己了,寫這篇文章的目的並不是嘲諷和我一樣做java的同行們,只是希望讀者看到此篇文章後,可以和我一樣,心平氣和的爭取做一個優秀的程式員。 講述方向 由於一直 ...
  • Properties類與.properties文件:   Properties類繼承自Hashtable類並且實現了Map介面,也是使用一種鍵值對的形式來保存屬性集的類,不過Properties有特殊的地方,就是它的鍵和值都是字元串類型。而.properties文件是由“鍵=值” ...
  • 使用過濾器改進應用程式 一、過濾器的目的 過濾器是可以攔截訪問資源的請求、資源的響應或者同時攔截兩者的應用組件。過濾器可以檢測和修改請求和響應,同時也可以拒絕、重定向或轉發請求。javax.servlet.Filter介面實現了過濾器技術,使用HttpServletRequest和HttpServl ...
  • String是最常使用的Java類之一,整理的了一些重要的String知識分享給大家。 作為一個Java新手程式員,對String進行更深入的瞭解很有必要。如果你是有幾年Java開發經驗,可以根據目錄選擇性的閱讀以下內容。 1、什麼是String,它是什麼數據類型? String是定義在 java. ...
  • 作為 Java 書呆子,比起實用技能,我們會對介紹 Java 和 JVM 的概念細節更感興趣。因此我想推薦 Lukas Eder 在 jooq.org 發表的原創作品給大家。 你是從很早開始就一直使用 Java 嗎?那你還記得它的過去嗎?那時,Java 還叫 Oak,OO 還是一個熱門話題,C++ ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...