1. 程式人生 > 其它 >MySQL資料庫(一)

MySQL資料庫(一)

一.資料的演變史

# 1.單獨的文字檔案 
    沒有固定的存放位置和格式
        檔名:user.txt userinfo.txt data.txt
        資料格式:jason|123 tony~123 kevin$123
    """程式彼此之間無法相容"""
# 2.軟體開發目錄規範
    規定了檔名和儲存位置
    """檔案的查詢變得簡單了  並沒有解決核心問題"""
# 3.資料庫階段
    規定了檔案的儲存位置和資料格式
    """目前正在使用的階段  解決了核心問題"""

二.資料儲存發展史

# 1.單機遊戲階段
    資料各自儲存在各自的計算機上 無法實現共享

# 2.多機遊戲階段 資料統一儲存在某個固定的伺服器上(計算機) 實現資料共享 前提:必須有網路 '''為了資料的安全 還會採用叢集策略來分擔風險'''

三.資料庫的本質

# 本質也是一款cs架構的軟體
    既然資料庫本質是一款cs架構的軟體 也就意味著我們每個人都可以編寫一個數據庫軟體
    在目前地球上有很多牛逼的程式設計師 他們都具備編寫資料庫軟體的能力 並且目前市面上真的有很多款資料庫軟體
"""
資料庫在狹義層面上來說
    指的是處理資料的底層程式
資料庫在廣義層面上來說
    指的是操作這些底層程式的便捷應用軟體
其實學習資料庫很多時候學習的是配套的資料庫軟體
"""

四.資料庫的分類

# 市面上有很多資料庫軟體 但是大致就分為兩類
1.關係型資料庫
    MySQL、Oracle、PostgreSQL、MariaDB、sqlite、sql server、db2
        MySQL:開源免費 使用非常規範
        Oracle:收費 維護成本高 大型公司可能會使用
        PostgreSQL:支援二次開發
        MariaDB:MySQL的替代產品(並且有自己的特性)
        sqlite:小型資料庫(django框架自帶該資料庫)
        
            
2.非關係型資料庫
    Redis、mongoDB、memcache
        Redis:目前最火的快取資料庫 具有很多資料結構 功能強大
        mongoDB:文件型資料庫 可以用在大資料和爬蟲領域 
        memcache:已經被redis淘汰
       
""" 1.兩類資料庫的區別 關係型資料庫 擁有固定的表結構 並且表與表之間可以建立程式碼層面的關係 非關係型資料庫 沒有固定的表結構 資料儲存採用的是K:V鍵值對的形式 2.這麼多資料庫如何學習 兩大類資料庫操作邏輯基本一致 每一類學習一個基本就可以掌握所有 關係型學MySQL 非關係型學redis、mongodb """

五.SQL和NoSQL

資料庫的服務端為了能夠相容不同型別的客戶端實現資料互動
所以規定了統一的互動方式
    關係型資料庫>>>:SQL語句
     非關係型資料庫>>>:NoSQL語句
# NoSQL有時候也表示 非關係型資料庫

六.MySQL

1.主要版本
    5.6:使用頻率較高的版本
    5.7:目前正在過渡的版本
    8.0:目前最新的版本
"""不同的版本主要區別在於底層的邏輯 SQL語句幾乎是一模一樣的"""
# 學習階段可以使用5.6的版本(如果已經下載了其他版本也沒問題)

2.軟體下載
    mac:https://www.cnblogs.com/Dominic-Ji/articles/15402755.html
    linux:部落格置頂文章
    windows:瞪大眼睛看
        訪問官網:https://www.mysql.com/
        具體步驟:
            DOWNLOADS
                MySQL Community (GPL) Downloads
                    MySQL Community Server
                        Archives
                            選擇版本下載壓縮包(客服端 服務端)
                  
3.目錄介紹
    bin資料夾
        mysqld.exe        服務端
        mysql.exe        客服端
    data資料夾
        儲存使用過程中需要儲存的資料
    my-default.ini
        配置檔案
    redadme
        說明檔案
 
4.基本使用
    # 一定要先啟動服務端再啟動客戶端
       """前期在操作的時候最好使用管理員cmd操作"""
    1.環境變數的配置
    2.直接輸入mysqld啟動服務端(當前cmd視窗不要關閉)
    3.開設一個新的cmd視窗操作客戶端
        mysql    # 遊客模式登陸
        mysql -u使用者名稱 -p密碼  # 賬號登入(本地使用)
        mysql -hIP地址 -P埠號 -u使用者名稱 -p密碼  # 完整命令
        """第一次登入 root使用者沒有密碼 直接連續回車即可"""

七.系統服務

# 將MySQL的服務端製作成系統服務 開機自啟動 關機自關閉
1.先關閉之前的服務端
2.檢視當前計算機系統服務列表
    services.msc
3.以管理員身份執行cmd並製作系統服務
    mysqld --install  # 僅僅是新增到了系統服務 第一次需要手動啟動
4.啟動服務
    方式1:滑鼠右鍵選擇啟動即可
    方式2:命令列方式啟動
            net start mysql
"""
停止服務
    net stop mysql
移除系統服務
    mysqld --remove
"""

八.密碼相關

# 針對管理員使用者需要設定密碼
    方式1:直接在cmd視窗內使用mysqladmin命令
        mysqladmin -uroot -p原密碼 password 新密碼
            eg:
                mysqladmin -uroot -p password 123
                mysqladmin -uroot -p123 password 666
    方式2:直接在登入狀態下修改當前登入使用者的密碼
        set password=PASSWORD('密碼')
            
# 忘記密碼如何解決(瞭解)
    方式1:前期資料庫裡面也沒有資料 乾脆重來!!!
    方式2:稍作了解
        1.關閉服務端
        2.以跳過授權表的方式重新啟動服務端
            只需要提供使用者名稱就可以登入
            mysqld --skip-grant-tables
        3.以管理員身份登入
            mysql -uroot -p
        4.修改管理員使用者密碼
            update mysql.user set password=password(123) where user="root" and host="localhost"; 
        5.關閉服務端再正常啟動
            ctrl  + C
               net start mysql
         6.使用修改之後的密碼登入      

九.重要概念介紹

庫                資料夾

表                資料夾裡面的檔案

記錄                資料夾裡面的檔案裡面的一行行內容

十.基本SQL語句

"""SQL語句的結束必須使用分號"""
# 1.如何檢視所有的資料庫名稱
    show databases;  '''會有一個臨時產生在記憶體的庫:in...sc'''
# 2.如何檢視所有的表名稱
    use 庫名;  '''切換庫(類似於雙擊了資料夾)'''
    show tables;
# 3.如何檢視所有的記錄
    select * from 表名;
    如果內容較多展示補全出現錯亂的情況 可以在語句後面加\G

十一.針對庫的SQL語句

"""辛辛苦苦一個月 換來的就是一條SQL語句"""
#
    create database 資料庫名;
#
    show databases;  # 檢視所有的庫名
    show create database 資料庫名;  # 定向檢視某個庫
#
    alter database 資料庫名 charset='gbk';
#
    drop database 資料庫名;

十二.針對表的SQL語句

"""
要想操作表必須得先有庫
    1.先建立庫
        create database db1;
    2.檢視當前所在的庫名
        select database();
    3.切換庫
        use bd1;
"""
#
    create table 表名(欄位名1 欄位型別1,欄位2 欄位型別2);
#
    show tables;  # 檢視當前庫下面所有的表名
    show create table 表名;  # 檢視指定的表資訊
    describe 表名;  # 查看錶的具體資訊(常用)  簡寫 desc 表名;
#
    alter table t1 rename ttt;  # 修改表名
    alter table ttt change id nid int;  # 修改欄位名和型別
    alter table ttt modify nid char(4);  # 修改欄位型別
#
    drop table 表名;

十三.針對記錄操作

"""
肯定得先確定庫和表
"""
#
    insert into 表名 values(資料,資料,資料);  '''單條資料'''
    insert into 表名 values(),(),();  '''多條資料'''
#
    select * from 表名;  '''查詢表中所有的資料'''
#
    update 表名 set 欄位名='新資料' where 篩選條件;
#
    delete from 表名 where 篩選條件;

十四.字元編碼問題

# 檢視MySQL內部預設的編碼情況
    \s
 
"""MySQL預設的配置檔案>>>:mydefault.ini"""
1.拷貝預設的配置檔案並且重新命名為my.ini
2.拷貝固定的配置資訊
    [mysqld]
    character-set-server=utf8
    collation-server=utf8_general_ci
    [client]
    default-character-set=utf8
    [mysql]
    default-character-set=utf8
3.重啟MySQL服務端