數據庫操作
數據庫操作有以下四種:
- DDL(Data Definition Language):操作數據庫、表
- DQL(Data Query Language):查詢數據庫中的數據
- DML(Data Manipulation Language):增刪改表中的數據
- DCL(Data Control Language):對數據庫權限的操作
這裏主要講DML和DQL
1.DML(Data Manipulation Language)
- 添加數據
insert into 表名 values(字段);
- 刪除數據
delete * from 表名 where id = 1;
- 改數據
update 表名 set name = "張三" where id =1;
2.DQL(Data Query Language)
- 排序查詢
- 語法:order by 字段
- 排序方式 :ASC(升序) DESC(降序)
//mysql數據庫中默認的排序方式爲升序,即不屑排序方式時,默認按升序處理。
select * from student order by math asc;
- 聚合函數:將一列數據作爲一個整體,進行縱向的計算
- count:計算個數
- max:計算最大值
- min:計算最小值
- avg:計算平均值
- sum:計算和
select count(id) from student;
select max(math) from student; //查找數學成績最高爲多少
select min(math) from student;
select avg(math) from student;
select sum(math) from student;
注意:聚合函數的計算會排除null值,即如果計算平均成績的時候,有8個人一起計算,其中一個人數學成績爲null,則會用總成績/7,而不是總成績/8。
如果有一個值爲null,可以修改語句爲:
select count(IFNULL(english,0)) from student; //解決上述問題。
- 分組查詢:統計具有相同特徵的數據
- 語法:group by 字段
- 注意 :分組之後查詢的字段可以是分組字段,也可以是聚合函數
如:
select sex,AVG(math) from student group by sex;
- where 和 having的區別
* where在分組之前進行限定,如果不滿足條件,則不參與分組。having在分組之後進行限定,如果不滿足結果,則不會被查詢出來。
* where後不可以跟聚合函數 但是having可以。
- 分頁查詢
* 語法:limit 開始的所有,每頁查詢的條數
select * from student limit 0,3; //索引從0開始,查詢1,2,3條數據
select * from student limit 3,3;
由此,可以得出一個公式:開始的索引 = (當前的頁碼-1) * 每頁顯示的條數
約束:
- 概念:對錶中的數據進行限定,保證數據的正確性,有效性和完整性。
- 分類:
- 主鍵約束: primary key
- 非空約束: not null
- 唯一約束:unique
- 外鍵約束:foreign key
1.非空約束:not null
- 創建表時添加約束
create table stu(
id int,
name varchar(20) not null
);
- 創建完表後,添加非空約束
ALTER TABLE stu MODIFY NAME VARCHAR(20) NOT NULL;
- 刪除name的非空約束
ALTER TABLE stu MODIFY NAME VARCHAR(20);
2.唯一約束
- 創建表時添加約束
create table stu(
id int,
name varchar(20) UNIQUE
);
- 創建完表後,添加約束
ALTER TABLE stu MODIFY NAME VARCHAR(20) UNIQUE;
- 刪除name的唯一約束
ALTER TABLE stu DROP INDEX NAME;
3.主鍵約束
- 創建表時添加主鍵
create table stu(
id int primary key,
name varchar(20)
};
- 創建完表後,添加主鍵
ALTER TABLE stu add primary key(id);
- 刪除id的主鍵
ALTER TABLE stu DROP PRIMARY KEY;
4.自動增長
- 創建表時添加自動增長
create table stu(
id int primary auto_increment,
name varchar(20)
};
- 創建完表後,添加自動增長
alter table user modify id int auto_increment
- 刪除id的自動增長
ALTER TABLE stu MODIFY id int;
5.外鍵約束
- 創建表時添加外鍵約束
create table 表名(
...
外鍵列,
constraint 外鍵名稱 foreign key 外鍵列名稱 references 主表名稱(主表主鍵名稱)
);
- 創建完表後,添加自動增長
ALTER TABLE employe ADD constraint 外鍵名稱 foreign key 外鍵列名稱 references 主表名稱(主表主鍵名稱);
- 刪除id的自動增長
ALTER TABLE employe DROP FOREIGN KEY emp_dept_fk;
6.級聯
在使用數據庫的過程中,我們可能會遇到修改數據的情況,如果一個數據在另一個表中也有關聯,那我們修改的時候就需要設置級聯
級聯更新操作 :ON UPDATE CASCADE
級聯刪除操作 (ON DELETE CASCADE) : 在刪除掉外鍵對應的值後,主表中也會刪除對應外鍵的行
ALTER TABLE employe ADD constraint 外鍵名稱 foreign key 外鍵列名稱 references 主表名稱(主表主鍵名稱) ON UPDATE CASCADE ON DELETE CASCADE;