數據庫概念
一款軟件,安裝在計算機 | 服務器上,php
只要告訴它:建立一個文件 | 新增一個數據 | 刪除一個數據,它就能幫咱們操做java
對應名稱關係:文件夾(庫)| 文件(表)| 表頭(字段)| 數據/記錄(表數據)python
MySQL:用於管理數據的一個軟件(兩個程序)mysql
只要是基於網絡通訊,底層都是socket!!!
服務端軟件:c++
socket服務端 web
本地文件操做redis
解析指令sql
客戶端軟件:mongodb
socket客戶端數據庫
發送指令
解析指令
客戶端能夠有不少個,python,java,php,c++均可以編程一個客戶端,用代碼指定ip port連接上服務端便可操做
服務端 - 多個客戶端:共同的語言 >>> 解析指令(sql語句)
DBA:
sql語句優化
RDBMS:數據庫管理系統
其餘相似軟件:
關係型數據庫:sqlite,db2,oracle,access,sql server,MySQl
彼此之間有約束或者有聯繫
一般以表格方式存儲,第一步須要建立表結構!
非關係型數據庫:mongodb,redis
存儲方式:k,v 鍵值對形式
數據間沒有關係
MySQL的安裝
終端最好以管理員身份運行
切換到mysql目錄下啓動mysqld服務端(阻塞,監聽地址,固定的ip和端口)
cd D:\mysql56 D:
新開cmd窗口啓動mysql客戶端
1、啓動
服務端
mysqld
客戶端
mysql -h 127.0.0.1 -P 3306 -uroot -p
(在本機登陸)也支持簡寫
mysql -uroot -p
讓你輸入密碼,不用管直接敲回車
sql語句第一條命令:
show databases; # 查看全部數據庫
注意:輸入sql語句的時候,必定要用英文分號結束
若是輸入的sql語句錯了不想執行的話能夠在後面跟上\c取消該命令的執行
退出客戶端:exit,quit
二、將mysql啓動文件路徑添加到環境變量
三、將mysqld製做成系統服務
1)必定要先將mysqld殺死
2)mysqld --install 將mysqld服務端製做成系統服務(開機自啓動)
# 查看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 "新密碼"
四、破解密碼
1.先關閉服務端
2.以跳過受權表的方式(用戶密碼認證模式)從新啓動服務端
mysqld --skip-grant-tables
3.以管理員登陸
4.修改mysql庫裏面的user表
update mysql.user set password=password(123) where user='root' and host='localhost';
flush privileges;
5.先關閉跳過驗證的服務端,以正常模式啓動服務端
6.輸入用戶名密碼正常登錄
五、解決編碼問題
mysql命令:"\s" 查看編碼
mysql不輸用戶名和密碼,默認以遊客模式登陸
1.在mysql根目錄下新建一個my.ini的配置文件,在裏面固定加上下面的配置便可設置編碼問題
[mysqld] character-set-server=utf8 collation-server=utf8_general_ci
[client] default-character-set=utf8
[mysql] default-character-set=utf8
2.從新啓動的你mysql服務端,配置纔會生效
![](http://static.javashuo.com/static/loading.gif)
六、基本sql語句操做
對數據的增刪改查
sql書寫錯誤,只要沒加分號,\c可以使前面的sql語句失效
1)文件夾(庫)
# 增 create database db1 charset utf8; # 查 show databases; show create database db1;
# 改
alter database db1 charset gbk; # 刪 drop database db1;
2)文件(表)
文件首先須要在文件夾下面,因此在操做文件以前,應該先肯定操做的是哪一個文件夾下面的文件
# 切換到指定的庫 user db1; select database(); # 查看當前所在的庫 # 增 create table t1(id int,name char); # 建立出來的多是多個文件,解耦管理 # 查 show tables; show create table t1; # 查看錶的詳細信息 describe t1; == desc t1; # 查看錶結構 # 改 alter table t1 modify name char(16); # 刪 drop table t1;
3)數據(表數據)
# 增 insert into db1.t1 values (1,'jon'),(2,'ken'),(3,'bob'); # into可加可不加,db1能夠不指定,默認就是在當前庫下 # 查 select id,name from db1.t1; # db1可不指定,默認當前庫下 select * from t1; # 改 update db1.t1 set name='DSB' where id > 1; update db1.t1 set name='DSB' where id = 2 or id = 3; # 刪 delete from db1.t1 where id >3; delete from db1.t1 where name='egon' # 這裏注意若是少了一個引號,後面不管敲什麼都沒有用了須要將引號補全
存儲引擎
不一樣的應用軟件處理不一樣類型的數據
mysql5.5版本及以上默認的存儲引擎是innodb
innodb:支持行鎖表鎖,外鍵,事物,安全性更高,較myisam數據更安全
myisam:僅僅支持表鎖不支持行鎖,查詢速度較innodb更快
memory:內存引擎,將全部的數據直接放在內存,一旦斷電數據所有消失
blackhole:一切存入其中的數據都會消失
create table t1(id int,name char(16))engine=innodb;