1. 簡介 資料庫,現代化的數據存儲存儲手段,是一種特殊的文件,其中存儲著需要的數據。 特點: 持久化存儲 讀寫速度極高 保證數據的有效性 對程式支持性非常好,容易擴展 2. Mysql (1)具有數據完整性: 一個資料庫就是一個完整的業務單元,可以包含多張表,數據被存儲在表中。在表中為了更加準確的 ...
1. 簡介
資料庫,現代化的數據存儲存儲手段,是一種特殊的文件,其中存儲著需要的數據。
特點:
- 持久化存儲
- 讀寫速度極高
- 保證數據的有效性
- 對程式支持性非常好,容易擴展
2. Mysql
(1)具有數據完整性:
一個資料庫就是一個完整的業務單元,可以包含多張表,數據被存儲在表中。在表中為了更加準確的存儲數據,保證數據的正確有效,可以在創建表的時候,為表添加一些強制性的驗證,包括數據欄位的類型、約束。
約束說明:
- 主鍵primary key:物理上存儲的順序;
- 非空not null:此欄位不允許填寫空值;
- 惟一unique:此欄位的值不允許重覆;
- 預設default:當不填寫此值時會使用預設值,如果填寫時以填寫為準;
- 外鍵foreign key:對關係欄位進行約束,當為關係欄位填寫值時,會到關聯的表中查詢此值是否存在,如果存在則填寫成功,如果不存在則填寫失敗並拋出異常;
- 說明:雖然外鍵約束可以保證數據的有效性,但是在進行數據的crud(增加、修改、刪除、查詢)時,都會降低資料庫的性能,所以不推薦使用,那麼數據的有效性怎麼保證呢?答:可以在邏輯層進行控制。
(2)Mysql-關係型資料庫,核心元素:
- 數據行(記錄)
- 數據列(欄位)
- 數據表(數據行的集合)
- 資料庫(數據表的集合)
(3)特點:
- 使用C和C++編寫,並使用了多種編譯器進行測試,保證源代碼的可移植性;
- 支持多種操作系統,如Linux、Windows、AIX、FreeBSD、HP-UX、MacOS、NovellNetware、OpenBSD、OS/2 Wrap、Solaris等;
- 為多種編程語言提供了API,如C、C++、Python、Java、Perl、PHP、Eiffel、Ruby等;
- 支持多線程,充分利用CPU資源;
- 優化的SQL查詢演算法,有效地提高查詢速度;
- 提供多語言支持,常見的編碼如GB2312、BIG5、UTF8;
- 提供TCP/IP、ODBC和JDBC等多種資料庫連接途徑;
- 提供用於管理、檢查、優化資料庫操作的管理工具;
- 大型的資料庫。可以處理擁有上千萬條記錄的大型資料庫;
- 支持多種存儲引擎;
- MySQL 軟體採用了雙授權政策,它分為社區版和商業版,由於其體積小、速度快、總體擁有成本低,尤其是開放源碼這一特點,一般中小型網站的開發都選擇MySQL作為網站資料庫;
- MySQL使用標準的SQL數據語言形式;
- Mysql是可以定製的,採用了GPL協議,你可以修改源碼來開發自己的Mysql系統;
- 線上DDL更改功能;
- 複製全局事務標識;
- 複製無崩潰從機;
- 複製多線程從機。
3.基礎操作-增刪改查
(1)sql語句主要分為:
DQL:數據查詢語言,用於對數據進行查詢,如select
DML:數據操作語言,對數據進行增加、修改、刪除,如insert、udpate、delete
TPL:事務處理語言,對事務進行處理,包括begin transaction、commit、rollback
DCL:數據控制語言,進行授權與許可權回收,如grant、revoke
DDL:數據定義語言,進行資料庫、表的管理等,如create、drop
CCL:指針控制語言,通過控制指針完成表的操作,如declare cursor
(2)增刪改查
① 查詢
- 查詢所有列
select * from 表名;
例:select * from classes;
- 查詢指定列
可以使用as為列或表指定別名,select 列1,列2,... from 表名;
例:select id,name from classes;
② 增加
格式:INSERT [INTO] tb_name [(col_name,...)] {VALUES | VALUE} ({expr | DEFAULT},...),(...),...
- 全列插入:值的順序與表中欄位的順序對應
insert into 表名 values(...)
例:insert into students values(0,’李燦‘,1,'西安','2019-1-6');
- 部分列插入:值的順序與給出的列順序對應
insert into 表名(列1,...) values(值1,...)
例:insert into students(name,hometown,birthday) values('王思','四川','2019-3-2');
上面的語句一次可以向表中插入一行數據,還可以一次性插入多行數據,這樣可以減少與資料庫的通信
- 全列多行插入:值的順序與給出的列順序對應
insert into 表名 values(...),(...)...;
例:insert into classes values(0,'day1'),(0,'day2');
insert into 表名(列1,...) values(值1,...),(值1,...)...;
例:insert into students(name) values('李思'),('王迪'),('鄧寬')
③ 修改
格式: UPDATE *tbname* SET col1={expr1|DEFAULT} [,col2={expr2|default}]...[where 條件判斷]
update 表名 set 列1=值1,列2=值2... where 條件
例:update students set gender=0,hometown='西安' where id=5;
④ 刪除
DELETE FROM tbname [where 條件判斷]
delete from 表名 where 條件
例:delete from students where id=5;
邏輯刪除,本質就是修改操作
update students set isdelete=1 where id=1;