Mysql的簡單學習摘要
數據庫概述:
層次模型:樹狀關系
網狀模型:網狀關系
關系模型:表格關系
CRUD:
C:Create
R:Retrieve
U:Update
D:Delete
數據庫語言分類:
DQL:數據查詢語言——R
DML:數據操作語言——CUD
關于數據庫的操作:
|——創建數據庫: create database 數據庫名;
|——查看所有數據庫: show databases;
|——使用某個數據庫: use 數據庫名;
|——刪除數據庫: drop database 數據庫名;
|——查看數據庫編碼:show variables like 'character%';
關于表的操作:
|——查看當前數據庫的所有表:show tables;
|——創建一個表:create table 表名(字段名1 字段類型,字段名2 字段類型,...,字段名n 字段類型);
|——查看表的創建語句:show create table 表名;
|——查看表結構:desc/describe 表名;
|——刪除這個表:drop table 表名;
|——修改表名:rename table 原表名 to 新表名;
|——修改表字符集:alter table 表名 character set 字符集;
|——對表中的列進行修改:alter table 表名 ————————————————
添加一列:|——add 字段名 字段類型;
修改某列的數據類型:|——modify 須修改的字段名 修改后的數據類型;
刪除某列:|——drop 字段名;
修改列名和類型:|——change 原字段名 新字段名 新字段的數據類型;
對于數據的操作:
|——C:增加一條數據: insert into 表名[(字段名1,字段名2,...,字段名n)] values(數據1,數據2,數據3,...,數據n);
| ##注意:當sql中不寫表名后面的字段名列表時,values中的值是根據table中的默認順序添加的。
|——D:刪除一條數據: delete from 表名 where 條件;
|##刪除表內容的兩種方式: delete from 表名;(一條條刪除) truncate table 表名;(刪除整個表,再建新表)
|
|——U:更新一條數據: update 表名 set 字段名=值,字段名=值 where 條件;
|
|
|——R:查詢一條數據: select 列名(*代表所有列) from 表名 [where 條件] [order by][group by];
|##查詢模糊數據時,一般使用where 字段名 like '_X%';其中_代表一個任意字符,%代表多個任意字符
|##查詢區間時,可以使用between, between A and B, 即[A,B]
|##在一個數字集合中查詢時,可以使用in(A,B,C);
一些數據庫的基本概念;
————數據完整性
我們要保證三種數據完整性:
元素完整性
域完整性
參照完整性
那么什么是數據完整性呢?實際上就是通過一些約束來保證數據的正常使用,叫做數據完整性。
那么如何保證元素的完整性呢?使用主鍵約束
那么如何保證域完整性的?使用特定的數據類型和約束,比如NOT NULL 和 unique
那么如何保證參照完整性的?使用外鍵約束,保證這個表的外鍵與另一個表的主鍵相連
如何創建主鍵:
在創建表的時候使用: 字段 字段的數據類型 primary key;
使用alter 對列的屬性進行修改時將主鍵添加上去
如何創建外鍵:
alter table 表名 add constraint FK_表名_外鍵名 foreign key(外鍵名) references 表名(字段名);
| | | |
約束 約束名規范 參照 對應主鍵
一些數據庫的基本概念
————數據庫三大范式
范式的目的是什么?是避免數據冗余
我們在開發過程中往往要遵循數據庫的三大范式。
但是有時候為了提高查詢速度,在設計數據庫時也會有反三范式的情況出現。
1.NF:確保表中的每列不可再分。
2.NF:確保每一行的數據都是唯一的。
3.NF:符合amstrong推理原則。