1. 程式人生 > >【MySQL】表的約束以及增刪改操作!!

【MySQL】表的約束以及增刪改操作!!

表的約束

  • 空屬性
    • null:如果不設定,預設為null
    • not null:設定當前欄位不為空,再插入資料的時候當前欄位不可以為空
create table tt1(
    id int not null,
    name varchar(20)
);

這裡寫圖片描述

  • 預設值default

    • create table tt2(
      id int not null,
      name varchar(20),
      sex char(1) default '男'
      );

      這裡寫圖片描述

      - 如果在插入資料的時候沒有定義設定了預設資料的欄位,那麼自動填充預設的值,但是setenum不能設定預設。
      - 通常配合not null
      使用
  • 列描述
  • 使用comment,沒有實際含義,用來描述欄位


    • create table tt3(
      id int not null comment "使用者id,不能為空",
      name varchar(20) comment "使用者姓名,可以為空"
      );

      這裡寫圖片描述
      如果需要檢視comment描述,可以使用show create table tt3;這裡寫圖片描述
  • zerofill

    • create table tt3(
      id int not null zerofill comment "使用者id,不能為空",
      name varchar(20) comment "使用者姓名,可以為空"
      );

      這裡寫圖片描述
  • 主鍵

    • 使用primary key,主鍵用來約束該欄位裡面的資料、不能重複、不能為空、主鍵所在的列型別為整形。
    • 一個表裡面最多有一個主鍵

    • create table tt4(
      id int primary key comment "描述學號,次列為主鍵",
      name varchar(20) not null
      );

      這裡寫圖片描述
      注:在建立主鍵的時候可以在建立的時候使用primary key來建立,也可以在所有欄位之後使用primary key(主鍵段列表),當主鍵段只有一個時候為單主鍵,當含有多個的時候為複合主鍵。
    • 如果在建立表後需要加入主鍵,可以使用:alter table 表名 add primary key(主鍵列表);
    • 刪除主鍵:alter table 表名 drop primary key;
  • 自增長

    • 使用auto_increment:當對應欄位沒有沒有給值得時候系統自動觸發(預設1開始),通常搭配主鍵使用,作為邏輯主鍵。
    • 特點:
      - 任何一個欄位想要設定成自增長,該欄位本身必須是索引
      - 自增長欄位必須是整數、
      - 一張表最多有一個自增長
      -
      create table tt5(
      id int auto_increment primary key,
      name varchar(20) comment "描述姓名"
      );

      這裡寫圖片描述
  • 唯一鍵
    • 使用unique:在需要使資料不能重複的時候使用唯一鍵,可以避免只有一個主鍵的問題。

    • create table tt6(
      id int unique comment "描述學號,不能夠重複",
      name varchar(20)
      );

      這裡寫圖片描述
      :唯一鍵可以為空,當欄位為空的時候null不作比較。

表的增刪改

  • 增加
  • insert into table_name[(column[,column...])] values (value [,value...]);
  • eg:
  • `create table tt6(
    id int unique comment “描述學號,不能夠重複”,
    name varchar(20)
    這裡寫圖片描述


- 當插入的資料和主鍵的資料衝突的時候可以使用duplicate key來進行修改。
- insert into tt7 values(2,"xiaoming") on duplicate key update id=4;

  • 替換

    • replace into 表名(包含欄位) values(值列表);

    這裡寫圖片描述

  • 修改

    • update tbl_name set col_name1=expr1, [, col_name2=expr2 ...] [where conditon]
    • eg:update tt7 set id=5 where id=2;
    • 這裡寫圖片描述
      注:如果沒有使用where來過濾那麼將會將全部的值進行修改。如果需要制定修改的資料個數,可以使用limit numnum為需要修改的個數。
  • 刪除

    • delete from tbl_name [where condition]
    • 刪除一個表的時候只刪除表的資料不改變表的結構
    • eg:delete from tt7 where id=2;
    • 這裡寫圖片描述

    注:如果需要刪除整個表,可以使用truncatetruncate是將真個檔案直接截斷為0。
    使用效果和delete,但是刪除的速度要比delete快。