數據庫操作的分類以及約束

數據庫操作

數據庫操作有以下四種:

  • 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;
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章