1. 程式人生 > >mysql筆記二之資料增刪改查

mysql筆記二之資料增刪改查

-- 資料增刪改查(curd)

   1. -- 增加 insert 
        -- 全列插入  值和表的欄位的順序一一對應
        -- insert [into] 表名 values(...)
        -- [] 在sql語法中表示可有可無和
        -- 和表的建立的欄位的順序 一一對應  一個都不能夠少
        -- 主鍵欄位需要通過一些特殊的值來佔位(0, NULL, Default)
        -- 列舉: 列舉值從1開始(1,2,3,4) 和原始值(男)
        +--------+-------------------------------------+------+-----+---------+----------------+
        | Field  | Type                                | Null | Key | Default | Extra          |
        +--------+-------------------------------------+------+-----+---------+----------------+
        | id     | int(10) unsigned                    | NO   | PRI | NULL    | auto_increment |
        | name   | varchar(10)                         | NO   |     | NULL    |                |
        | age    | tinyint(3) unsigned                 | YES  |     | 0       |                |
        | high   | decimal(5,2)                        | YES  |     | 0.00    |                |
        | gender | enum('男','女','中性','保密')          | YES  |     | NULL    |                |
        | cls_id | int(10) unsigned                    | YES  |     | 0       |                |
        +--------+-------------------------------------+------+-----+---------+----------------+
        insert into students values (0,"小喬",40,180,1,1);
        insert into students values (NULL,"曹操",40,180,1,2);
        insert into students values (NULL,"劉備",35,180,"男",2);
        # 錯誤insert into students values (NULL,"張飛",35,180,"不知道",2);
        # 錯誤insert into students values (NULL,"張飛",35,180, 6,2);


        -- 指定列插入
        -- insert into 表名(列1,...) values(值1,...)
        -- values 也可以是 value
        insert into students (name, gender, cls_id) values ("周瑜", 1, 1);
        

        -- 多行插入  批量插入
        -- insert into 表名(列1,...) values (值1,...),(值1,...),...
        insert into students (name, gender, cls_id) values ("劉備", 1, 2), ("諸葛亮", 1, 2),("張飛", 1, 2);

   2. -- 修改
      -- where 可以不加 但是此時是全表更新
      -- update 表名 set 列1=值1,列2=值2... where 條件
      update students set gender = 1;

      update students set gender = 1 where id = 4;


    

   3. -- 刪除
        python : if id == 4       sql 表示是否相等 通過一個 =
        -- 物理刪除
        -- DELETE FROM tbname [where 條件判斷]
        delete from students;  -- 整表刪除 mysql 
        delete from students where id = 4;

 

        -- 邏輯刪除  給每一條資料新增一個標記, 標記是否被刪除  0 表示沒有被刪除  1 表示被刪除
        1. 修改表結構  新增一個標記 欄位
        alter table students add is_delete bit default 0;
        2. 更新需要邏輯刪除的資料

 


   4. -- 查詢基本使用
        -- 查詢所有列
        -- select * from 表名;
        -- 查詢classes 表中所有的資料
        select * from classes;

        -- 指定欄位查詢

        -- sql 中表示相等 使用 = 而不是 ==

        -- 指定條件查詢

        -- 查詢指定列

        -- 欄位的順序

        -- 可以使用as為列或表指定別名

-- 查詢
    -- 查詢所有欄位
    -- select * from 表名;
    select * from students;

    -- 源生的寫法
    select students.* from students;
    select python_test_1.students.* from students;

    -- 如果一個sql語句中只有一個數據表的時候 此時表名可以省略,如果有多個數據表就不建議省略
    -- 正在使用某一個數據庫 並且該資料庫中存在對應的資料表 就可以將資料庫名省略掉


    -- 查詢指定欄位
    -- select 列1,列2,... from 表名;
    select name,age,gender from students;
    select age,name,gender from students;


    -- 使用 as 給欄位起別名
    -- select 欄位 as 名字.... from 表名;
    select name as 名字,age as 年齡,gender as 性別 from students;
    select name as '名字',age as '年齡',gender as '性別' from students;
    -- select 表名.欄位 .... from 表名;
    select students.age,students.name,students.gender from students;
    -- 在當前sql語句中students 叫做s
    # 錯誤select students.age,students.name,students.gender from students as s;

    
    -- 可以通過 as 給表起別名
    -- select 別名.欄位 .... from 表名 as 別名;
    select s.age,s.name,s.gender from students as s;

    -- 消除重複行
    -- distinct 欄位
    -- 查詢班級學生的性別
    select gender from students;
    -- 查詢班級有多少種性別
    select distinct gender from students;

    -- id 和 gender 看做一個整體來去重
    select distinct id,gender from students;