MySQL初識

20190829--day40

數據(Data)

描述事務的符號記錄,描述事物的符號既能夠是數字,也能夠是文字、圖片,圖像、聲音、語言等,數據由多種表現形式,它們均可以通過數字化後存入計算機

在計算機中描述一個事物,就須要抽取這一事物的典型特徵,組成一條記錄,就至關於文件裏的一行內容,如:前端

1  haiyan  female 20 甘肅  計算機系

單純的一條記錄並無任何意義,若是咱們按逗號做爲分隔,依次定義各個字段的意思python

id   name    sex     age   adderess   major   #字段
1   haiyan  female  20      甘肅     計算機系   #記錄

若是這樣表示的話就瞭解了一我的的信息了,讓人一看就清楚了mysql

數據庫(DB)

# 什麼是數據庫?
數據庫,就是存放數據的倉庫;
數據庫中的數據按必定的數據模型組織、描述和儲存,具備較小的冗餘度、較高的數據獨立性和易擴展性,並可爲各類 用戶共享。

數據庫管理系統(DBMS)

Database Management System
自己也是一個C/S架構的軟件
# 定義:

數據庫管理系統是數據庫系統的核心組成部分,主要完成對數據庫的操縱與管理功能,實現數據庫對象的建立、數據庫存儲數據的查詢、添加、修改與刪除操做和數據庫的用戶管理、權限管理等。

通俗解釋--> 這個工具負責來和硬盤打交道(固然中間還隔着操做系統),高效的管理數據,而且還支持對外通訊,網絡通訊都是基於的socket,也就是說它還至關於一個socket服務端,那麼想來到這個存數據的機器上來操做數據的人或者項目均可以鏈接到這個工具,並經過這個工具來管理數據

如MySQL、Oracle、SQLite、Access、MS SQL Server

mysql主要用於大型門戶,例如搜狗、新浪等,它主要的優點就是開放源代碼,由於開放源代碼這個數據庫是免費的,他如今是甲骨文公司的產品。
oracle主要用於銀行、鐵路、飛機場等。該數據庫功能強大,軟件費用高。也是甲骨文公司的產品。
sql server是微軟公司的產品,主要應用於大中型企業,如聯想、方正等。
數據庫說白了就是文件夾
數據庫管理系統就是一個軟件
數據庫服務器:就是對外專門提供數據的一個機器

數據庫服務器,數據庫管理系統,表與記錄的關係(重點理解)

*表:student,scholl,class_list(即文件)*

*數據庫:lzsh_info(即文件夾)*

*數據庫管理系統:如mysql(是一個軟件)*

*數據庫服務器:一臺計算機(對內存要求比較高)*

# 總結:

 數據庫服務器---運行--->數據庫管理軟件

 數據庫管理軟件--->管理--->數據庫

 數據庫---組織--->表,即文件夾---組織--->文件

 表---存放--->多條記錄,即文件---存放--->多行內容

數據庫管理系統解決了redis

①操做文件的效率和便捷問題
②解決了多個服務同時使用數據的一致性問題
③解決了安全的問題
④解決了併發問題sql

數據庫的分類

# 數據庫有兩大類:關係型數據庫 和 非關係型數據庫

關係型數據庫(RDBMS) : mysql,oracle,sqlserver,sqllite(輕量級),accessmongodb

非關係型數據庫 : redis,mongodb,memcache(內存級別)數據庫

關係型數據庫
# 定義:關係型數據庫模型就是把複雜的數據結構歸結爲簡單的二元關係

以下圖:
macos

非關係數據庫
# 定義:非關係型數據庫也被成爲NoSQL數據庫,NOSQL的本意是「Not Olnly SQL」,NoSQL的產生並非要完全地否認關係型數據庫,而是做爲傳統關係型數據庫的一個有效補充
# 高性能、高併發、對數據一致性要求不高

NOSQL非關係型數據庫
一、NOSQL不是否認關係數據庫,而是做爲關係數據庫的一個重要補充
二、NOSQL爲了高性能、高併發而生,忽略影響高性能,高併發的功能
三、NOSQL典型產品memcached (純內存),redis(持久化緩存),mongodb(文檔的數據庫)編程

SQL

結構化查詢語句

其中最後一句挺重要的:不一樣數據庫系統之間的SQL不能徹底相互通用 

結構化查詢語言(Structured Query Language)簡稱SQL(發音:/ˈes kjuː ˈel/ "S-Q-L"),是一種特殊目的的編程語言,是一種數據庫查詢和程序設計語言,用於存取數據以及查詢、更新和管理關係數據庫系統;同時也是數據庫腳本文件的擴展名。
結構化查詢語言是高級的非過程化編程語言,容許用戶在高層數據結構上工做。它不要求用戶指定對數據的存放方法,也不須要用戶瞭解具體的數據存放方式,因此具備徹底不一樣底層結構的不一樣數據庫系統, 可使用相同的結構化查詢語言做爲數據輸入與管理的接口。結構化查詢語言語句能夠嵌套,這使它具備極大的靈活性和強大的功能。
1986年10月,美國國家標準協會對SQL進行規範後,以此做爲關係式數據庫管理系統的標準語言(ANSI X3. 135-1986),1987年獲得國際標準組織的支持下成爲國際標準。不過各類通行的數據庫系統在其實踐過程當中都對SQL規範做了某些編改和擴充。因此,實際上不一樣數據庫系統之間的SQL不能徹底相互通用

後期真實的項目架構

  • 前端(瀏覽器)進行搜索(發送網絡請求,至關於一個socket信息)
  • 後臺(python代碼)收到請求(後端至關於socket服務器)
  • 在系統裏面本地打開一個html的文件(文件裏面會加上從數據庫搜索到的數據)
  • 從文件裏面調出來的數據,咱們會經過python語言寫一個socket客戶端
  • socket客戶端會鏈接DBMS服務端,這個時候客戶端會給服務端發送一個socket,服務端根據socket,返回前端須要的數據到htm
  • 把html給到瀏覽器,瀏覽器檢測到是html文件,就渲染出用戶想要的結果
查看字符集編碼
mysql> show variables like '%char%';
+--------------------------+-----------------------------------------------------------+
| Variable_name            | Value                                                     |
+--------------------------+-----------------------------------------------------------+
| character_set_client     | utf8mb4                                                   |
| character_set_connection | utf8mb4                                                   |
| character_set_database   | utf8mb4                                                   |
| character_set_filesystem | binary                                                    |
| character_set_results    | utf8mb4                                                   |
| character_set_server     | utf8mb4                                                   |
| character_set_system     | utf8                                                      |
| character_sets_dir       | /usr/local/mysql-8.0.17-macos10.14-x86_64/share/charsets/ |
+--------------------------+-----------------------------------------------------------+
8 rows in set (0.03 sec)

啓動mysql

方法一

MySQL客戶端鏈接服務端時的完整指令

mysql -h 127.0.0.1 -P 3306 -u root -p
方法二
mysql -uroot -p

退出mysql

exit
Windows 適用

在mysql安裝目錄下建立一個my.ini(my.cnf)文件,寫入下面的配置,而後重啓服務端

[client]
#設置mysql客戶端默認字符集
default-character-set=utf8 

[mysql]
# 設置mysql客戶端默認字符集
default-character-set=utf8 
user = 'root'
password = '123'

[mysqld]
#設置3306端口
port = 3306 
# 設置mysql的安裝目錄
basedir=E:\mysql-5.6.45-winx64 
# 設置mysql數據庫的數據的存放目錄
datadir=E:\mysql-5.6.45-winx64\data 
# 容許最大鏈接數
max_connections=200
# 服務端使用的字符集默認爲8比特編碼的latin1字符集
character-set-server=utf8
# 建立新表時將使用的默認存儲引擎
default-storage-engine=INNODB

若是密碼忘記了怎麼辦?

1 停掉MySQL服務端(net stop mysql)
2 切換到MySQL安裝目錄下的bin目錄下,而後手動指定啓動程序來啓動mysql服務端,指令: mysqld.exe --skip-grant-tables
3 從新啓動一個窗口,鏈接mysql服務端,
4 修改mysql庫裏面的user表裏面的root用戶記錄的密碼:
    update user set password = password('666') where user='root';
5 關掉mysqld服務端,指令:
    tasklist|findstr mysqld
    taskkill /F /PID 進程號
6 正常啓動服務端(net start mysql)

修改密碼的三種方式

# 方法1: 用SET PASSWORD命令 
    首先登陸MySQL,使用mysql自帶的那個客戶端鏈接上mysql。 
    格式:mysql> set password for 用戶名@localhost = password('新密碼'); 
    例子:mysql> set password for root@localhost = password('123'); 
    
# 方法2:用mysqladmin  (由於咱們將bin已經添加到環境變量了,這個mysqladmin也在bin目錄下,因此能夠直接使用這個mysqladmin功能,使用它來修改密碼)

    關於mysqladmin的介紹:是一個執行管理操做的客戶端程序。它能夠用來檢查服務器的配置和當前狀態、建立和刪除數據庫、修改用戶密碼等等的功能,雖然mysqladmin的不少功能經過使用MySQL自帶的mysql客戶端能夠搞定,可是有時候使用mysqladmin操做會比較簡單。
    格式:mysqladmin -u用戶名 -p舊密碼 password 新密碼 
    例子:mysqladmin -uroot -p123456 password 123  
    
# 方法3:用UPDATE直接編輯那個自動的mysql庫中的user表 
    首先登陸MySQL,鏈接上mysql服務端。 
    mysql> use mysql;   use mysql的意思是切換到mysql這個庫,這個庫是全部的用戶表和權限相關的表都在這個庫裏面,咱們進入到這個庫才能修改這個庫裏面的表。
    mysql> update user set password=password('123') where user='root' and host='localhost';   其中password=password('123') 前面的password是變量,後面的password是mysql提供的給密碼加密用的,咱們最好不要明文的存密碼,對吧,其中user是一個表,存着全部的mysql用戶的信息。

    mysql> flush privileges;  刷新權限,讓其生效,不然不生效,修改不成功。

存儲引擎

默認存儲引擎 Innodb
查看存儲引擎 show engines;
相關文章
相關標籤/搜索