一、增加(create add insert )1,create操作庫 create database 庫名 新建庫 create database 庫名 character set 編碼表 2,create 操作表結構 新建表: create table 表名( id int primary ke ...
一、增加(create add insert )
1,create操作庫
create database 庫名 新建庫
create database 庫名 character set 編碼表
2,create 操作表結構
新建表:
create table 表名(
id int primary key auto_increment,
name varchar(20),
………….
);
primary key 主鍵約束(該列唯一值)
auto_increment 主鍵表自動增長
add 添加欄位 alter table 表名 add 列名 數據類型 約束
3,insert 操作表數據內容
insert into 表名(列名1,列名2,列名3)values(值1,值2,值3)
insert into 表名 (列名) values (值)
insert into 表名 values (全列值)
insert into 表名 (列名1,列名,列名) values (值1,值2,值3),(值1,值2,值3)
二、刪除(drop delete truncate)
1,操作庫
drop database 資料庫名
2,操作表結構
drop table 表名 (刪除的是整個表)
alter table 表名 drop 列名 刪除列
3,操作表數據
delete from 表名 where 條件
delete from 表名 (沒有where條件,刪的是表中所有記錄,逐行刪除)
truncate table 表名 (先刪除表,再創建表,等於刪除整個表)
start transaction 開啟事務 執行delete刪除,rollback 事務回滾可找回
start transaction 開啟事務 執行truncate刪除,rollback 事務回滾不可找回
三、修改 (alter modify change rename update)
1,操作庫
use 庫名:更改庫
2,alter 修改表的結構
modify 修改約束類型 alter table 表名 modify tel varchar(50)
change 修改列名 alter table 表名 change 舊列名 新列名 數據類型 約束
rename 修改表名 alter table 舊表名 to 新表名
alter database 資料庫名稱 character set 編碼表
3,update 操作表格數據
update 表名 set 列1 = 值1, 列2 = 值2 where 條件
where 條件:
id=6
id<>6 id 不等於6
id<=6
&& || ! and、or、not
id in(1,3,4,5)
is null為空,is not null 不為空
ifnull(值1,0);若為空,設置值為0;
四、查詢(select show )
1,操作庫
show databases
show create database 庫名: 查看庫編碼表
select database(); 查看正在使用的庫
2,操作表結構
show tables; 查詢表
desc 表名; 查看表結構
show create table 表名; 查看表的編碼
3,操作表數據
select 列名1,列名2 from 表名 查詢指定列的數據
select * from 表名 查詢所有列的數據
關鍵字:
as:重命名
like: 模糊查詢 like%、%like%、like__
格式:
select 列名 as 別名 ,列名 as 別名… from 表名 where 條件1 group by 列名 having 條件2 order by 排序
說明: 條件1 會先執行過濾 -> 進行分組 -> 條件2 進行過濾
順序說明:select …要顯示的內容.. from …表名.. where 條件…. group by …分組的列 …having …分組後的條件… order by …排序?
select …5… from …1.. where …2.. group by ..3…having ..4… order by ...6.
查詢排重:
select distinct 列名 from 表名 where 條件
五、聚合函數:
count 統計個數、sum 求和、 avg 平均值、max、 min
分組處理:group by
排序: order by 列名 asc|desc
六、多表設計
1、一對多
比如 一個部門有多個人,一個人只有一個部門
外鍵約束格式:
alter table 從表名稱 add foreign key (外鍵列的名稱) references 主表名稱(主鍵)
創建表時候,直接創建主鍵約束
dept_id int,
foreign key (dept_id) references dept(id)
2、多對多
比如:一個項目被多個程式員寫,一個程式員寫多個項目
3、一對一
比如 一個人只有一份個人檔案,一個檔案對應一個人
七、數據備份及恢復:
1,備份
mysqldump -u 用戶名 -p 資料庫名 > 磁碟SQL文件路徑
mysqldump uroot -p zhangwu> G:\mybases2.sql
Enter password:123
2,恢復
方式一:創建資料庫,導入數據
create database db1:
use db1;
source G://mybases2.sql
方式二:創建資料庫,命令行中輸入
create database db2:
退出資料庫,在dos下輸入
mysql -uroot -p db2 < G://mybases2.sql
Enter password:123
八、範式:
第一範式:1NF:資料庫表的每一列都是不可分割的原子數據項
第一範式每一列不可再拆分,稱為原子性。
第二範式:2NF:第二範式就是在第一範式的基礎上所有列完全依賴於主鍵列
第二範式的特點:
1) 一張表只描述一件事情。
2) 表中的每一列都完全依賴於主鍵
第三範式:3NF:所有列不依賴於其它非主鍵列,也就是在滿足2NF的基礎上,任何非主鍵列不得傳遞依賴於主鍵。
所謂傳遞依賴,指的是如果存在"A → B → C"的決定關係,則C傳遞依賴於A。因此,滿足第三範式的資料庫表應該不存在如下依賴關係:主鍵列 → 非主鍵列x → 非主鍵列y。
示例:學生信息表
學號 姓名 年齡 所在學院 學院地點
滿足第二範式,不滿足第三範式
存在傳遞的決定關係:
學號?所在學院 ? 學院地點
拆分成兩張表
學號 姓名 年齡 所在學院的編號(外鍵)
學院編號 所在學院 學院地點
三大範式小結:
範式 特點
1NF 原子性:表中每列不可再拆分。
2NF 不產生局部依賴,一張表只描述一件事情。白哦中的每一列是完全依賴於主鍵的。
3NF 不產生傳遞依賴,表中每一列都直接依賴於主鍵。而不是通過其它列間接依賴於主鍵。