那Mysql能幹嗎呢?它就是一款軟件,安裝在任何一臺計算機或者服務器上的時候,只要我告訴它建立一個文件,新增一個數據,刪除一個數據它就能幫我去作想要的操做java
那咱們暫且能不能理解爲mysql就是用來幫咱們操做文件的!python
MySQL:用於管理文件的一個軟件(兩個程序)mysql
-服務端軟件c++
-socket服務端redis
-本地文件操做sql
-解析指令mongodb
-客戶端軟件數據庫
-socket客戶端編程
-發送指令
-解析指令
客戶端能夠有不少個,python,java,php,c++均可以編程一個客戶端,用代碼指定ip port連接上服務端便可操做
那麼問題來了,不一樣的客戶端練我一個服務端,語言不相同沒法實現交流。因此應該有共同的語言才行>>>解析指令(sql語句)
技能:
-安裝 服務端和客戶端
-連接
-學習sql語句規則,指定服務端作任何操做
mysql只是一種可以幫助咱們管理數據的軟件,還有其餘相似的軟件也是經過發送指令來幫你管理數據庫
其餘相似軟件:
關係型數據庫:sqlite,db2,oracle,access,sql server,MySQl(必需要表格存儲,須要創建表格(k能夠就是user, v就是能夠是多類型的,好比說是大列表,大字典,大字典中又大字典等))
非關係型數據庫:mongodb,redis (數據存儲方式k,v鍵值對的形式)
關係型:彼此之間有約束或者有聯繫
總結:mysql就是幫助咱們遠程在文件上作相應操做的
mysqld服務端
mysql客戶端
軟件目錄結構初識
終端最好以管理員身份運行
切換到mysql目錄下啓動mysqld服務端(阻塞,監聽地址,固定的ip和端口)
cd D:\mysql56 D:
新開cmd窗口啓動mysql客戶端
連接mysql:
mysql -h 127.0.0.1 -P 3306 -uroot -p 密碼不輸,直接回車
若是是在本機登錄mysqld服務端,能夠簡寫爲mysql -uroot -p
客戶端服務端請求流程分析
show databases詮釋文件夾和庫概念
環節變量配置
系統服務製做(製做以前必定要先把mysql關閉)
# 查看mysqld進程 tasklist |findstr mysqld # 殺死mysqld進程 taskkill /F /PID 'PID號'
將mysqld這款軟件作成系統服務軟件
mysqld --install
查看計算機當前運行程序數
services.msc
mysqladmin -uroot -p password "123" # 第一次修改完密碼之後,以後還修改密碼須要 mysqladmin -uroot -p123 password "123456" # 爲了後續調試方便,這裏把密碼設爲空值 mysqladmin -uroot -p123 password "新密碼"
先關閉mysqld服務端
以跳過受權表的方式在命令行中啓動mysqld服務端
mysqld --skip-grant-tables
客戶端直接以無密碼的方式登錄root用戶修改密碼
mysql -uroot -p
修改管理員密碼
update mysql.user set password=password("123") where user="root" and host="localhost"; flush privileges; # 刷新權限
命令行殺死mysqld服務
tasklist |findstr mysqld taskkill \F \PID 'PID'
服務管理正常啓動mysqld
mysql命令:"\s" 查看編碼
修改配置文件,執行時會自動查找my.ini文件
mysql不輸用戶名和密碼,會默認以遊客模式登錄,很差!
# my.ini配置文件特色 [mysql] #終端輸入mysql打頭的命令就會加載下面的配置 username='root' # 演示確實加載改文件,可是username叫user才正確 password = '123' [mysqld]
[mysqld] character-set-server=utf8 collation-server=utf8_general_ci [client] default-character-set=utf8 [mysql] default-character-set=utf8
mac系統
finder中切換到默認安裝路徑下/usr/local/mysql
下面就是一大堆文件目錄
配置文件是my.cnf,沒有int等windows上的配置文件
對數據的增刪改查
sql書寫錯誤,只要沒加分號,能夠加\c使前面的sql語句失效
針對文件夾的(庫)
# 增 create database db1 charset utf8; # 改 alter database db1 charset gbk; # 查 show databases; show create database db1; # 刪 drop database db1;
針對文件的(表)
文件首先須要在文件夾下面,因此在操做文件以前,應該先肯定操做的是哪一個文件夾下面的文件
# 切換文件夾 use db1; select database(); # 查看當前所在的庫 # 增 create table t1(id int,name char); # 建立出來的多是多個文件,解耦管理 # 改 alter table t1 modify name char(16); # 查 show tables; show create table t1; # 查看錶的詳細信息 describe t1; == desc t1; # 查看錶結構 select name from userinfo where name='egon' or id=3 # 刪 drop table t1;
針對(記錄)
# 增 insert into db1.t1 values (1,'egon'),(2,'kevin'),(3,'jason'); # into可加可不加,db1能夠不指定,默認就是在當前庫下 # 改 update db1.t1 set name='DSB' where id > 1; update db1.t1 set name='DSB' where id = 2 or id = 3; # 查 select id,name from db1.t1; # db1可不指定,默認當前庫下 select * from t1; select name from t1 # 刪 delete from db1.t1 where id >3; delete from db1.t1 where name='egon' # 這裏注意若是少了一個引號,後面不管敲什麼都沒有用了須要將引號補全
支持多個客戶端來連,不一樣的編程語言c++,java等,鏈接池就是減緩硬件壓力的,保證數據庫的安全,客戶端接口來了先到鏈接池等着,而後到sql接口,數據管理語言和數據定義語言,存儲過程,視圖,觸發器等,而後到解析器,查詢\事務對象優先級,而後到優化訪問數據順序,而後到緩存和緩衝池,全局和具體引擎的緩存和緩衝地。之前的默認的引擎是myisam,如今就是innodb,innodb數據更安全,支持行鎖表鎖,myisam 查詢數據比innodb快,可是不安全, show engines;查看引擎,結果中的memory就是根本不會刷入硬盤,都是隻存在內存,斷電就數據就沒了,還有backhole黑洞,往裏面丟什麼數據都沒有了,
文件格式有不少種,對應的軟件也有不少種txt,pdf等
針對不一樣類型的文件,須要對應有不一樣的軟件幫助咱們去操做
# 查看全部的存儲引擎 show engines; # 查看不一樣存儲引擎存儲表結構文件特色 create table t1(id int)engine=innodb; 會有兩個文件,一個是t1.frm表結構;t1.ibd就是存在的真實的數據 create table t2(id int)engine=myisam;會有三個文件,一個是t2.frm表結構;t2.MYD表示存儲數據,D就是數據的意思,t2.MYI這個I表示index索引,查詢數據根據索引來查 create table t3(id int)engine=blackhole;只有一個表結構,t3.frm create table t4(id int)engine=memory;只有一個表結構 insert into t1 values(1); insert into t2 values(1); insert into t3 values(1);查看數據的時候沒有了 insert into t4 values(1);重啓服務端,查詢數據的時候也沒了