資料庫什麼是資料庫就是存儲數據的倉庫(容器)存儲數據的方式1.變數 無法永久存儲2.文件處理 ,可以永久存儲文件處理存在的弊端: 1.文件處理速度慢 2.文件只能在自己的電腦上讀寫 無法被共用(區域網除外)單台電腦的性能終歸是有限的1.升級你的硬體設備 提升幅度有限 垂直擴展2.伺服器集群 分佈 ...
資料庫
什麼是資料庫
就是存儲數據的倉庫(容器)
存儲數據的方式
1.變數 無法永久存儲
2.文件處理 ,可以永久存儲
文件處理存在的弊端:
1.文件處理速度慢
2.文件只能在自己的電腦上讀寫 無法被共用(區域網除外)
單台電腦的性能終歸是有限的
1.升級你的硬體設備 提升幅度有限 垂直擴展
2.伺服器集群 分散式 橫向擴展
一旦把伺服器拆分開後,數據就必須能夠被不同電腦共用
必須通過網路,也就是socket
資料庫軟體的本質 也就是一個 基於socket(TCP)的C/S結構的程式
如果自己實現一個數據軟體 需要解決的幾個問題
1.一旦數據共用 就存在競爭問題,需要處理鎖
2.不是所有的TCP連接請求都要接受,得加上安全驗證
3.文件處理帶來的效率問題, 需要想辦法來提高處理速度 (索引)
有很多現成資料庫軟體可以直接使用,又分為兩大類
1.關係型資料庫
該類型的數據 提供某種機制 可以幫你維護 數據與數據之間的關係
例如 學員數據 和 班級數據 可以通過其中一方 找到另外一方
一般都是基於文件實現的
優點:容量大 可以永久存儲
mysql 免費開源,開源支持中小型企業併發
oracle 商用收費,學習免費,功能比mysql強大,用戶管理和集群
SQLServer 屬於微軟生態圈,只能運行於 windows上
mariaDB mysql創始人:韋德紐斯 擔心 mysql的前程 於是基於mysql開發了mariaDB 用起來是一模一樣
DB2 IBM 360
sqllite 非常輕量級的資料庫
共同特征都支持SQL
結構化 查詢語言
學習資料庫的重點也就是SQL語句
2.非關係型資料庫
數據與數據之間是獨立 不存在任何關聯關係
以key:value的形式來存儲數據
一般基於記憶體
優點:速度快
問題:斷電丟失
MongoDB
redis
memcache
該使用哪一類資料庫?
應該搭配使用,把數據量大的 存到關係型中 把經常訪問的放到非關係型中
提高訪問速度
資料庫相關的概念
數據 本質上一堆帶有含義的符號
name = jack
數據記錄
多個數據組成了一條完整記錄
name,age,sex
jack,38,man
rose,20,woman
表 本質就是一個文件
裡面存儲一堆數據記錄
庫 本質就是一個文件夾
裡面放一堆表文件
DBMS
data base manager system
資料庫管理系統 (TCP的伺服器)
負責管理一堆文件夾(即資料庫)
資料庫伺服器
指的是運行有TCP伺服器的程式 的電腦
DBMS和伺服器 一般運維管
到公司之後會分給你一個賬號密碼 以及伺服器地址
mysqld 是伺服器主程式
mysqld 警告說:創建文件失敗 由於許可權不足 用管理員許可權運行即可
mysql 是無界面的客戶端 需要在CMD運行
mysql連接伺服器 需要指定以下參數
-h 主機地址(ip)
-P 埠號
-u 用戶名
-p 密碼
伺服器和客戶端在同一臺電腦 可以省略主機地址 埠號預設3306 可以省略
如果不指定用戶名和密碼 以游客模式登陸 什麼都看不到
mysql 的安裝:
1.帶界面 一路next
2.壓縮包 直接解壓
2.1 添加環境變數
2.2 註冊系統服務
修改管理員密碼
1.如果知道原始密碼 mysqladmin -uroot -p password 123
2.不知道原密碼 可以在啟動伺服器時 跳過 授權表
mysqld --skip-grant-tables
無密碼登錄伺服器 執行修改密碼的指令
update mysql.user set password = password("新密碼") where user = "root" and host = "localhost";
關於庫的 語句
創建庫
create database 庫名稱
刪除庫
drop database 庫名稱
修改庫的屬性
alter database 庫名稱 charset = "新的編碼"
查看創建庫詳細信息
show create database mydb;
查看所有資料庫
show databases
選擇一個資料庫
use 庫名稱
關於表
增
create table 表名稱(name char,age int);
create table 庫.表名(name char,age int);
查看所有表
show tables;
查看表的詳細信息
show create table t1;
查看表結構 (欄位)
desc t1;
改
alter table t1 charset = "gbk"; 改編碼
alter table t1 add sex char; 添加欄位
alter table t1 drop sex; 刪除欄位
alter table t1 modify age char; 修改欄位的類型
alter table t1 change age ages int; 修改欄位的名字和類型
rename table t1 to table1; 修改表的名稱
刪除
drop table table1;
數據記錄相關操作是重點學習對象
# 一次性插入多條記錄
insert into table_name values("陳麻子",20);
# 一次性插入多條記錄
insert into table_name values(值1,值2),(值2,值2),...;
上述語法 值的個數必須與欄位的個數相同
# 指定要插入數據的欄位
insert into t2(name) values("我只有姓名啊")
查看數據
select * from t2; * 表示查看所有欄位 多個欄位用逗號隔開
修改
update t2 set age = 100; 沒有條件則全部修改
update t2 set age = 100 where name = "陳";
update t2 set age = 100,name = "劉鐵柱" where name = "陳" ;
刪除數據
delete from t2 where name = "劉鐵柱";