MySQL基本sql語句總結

bleso發表於2021-07-05

約束

  • 主鍵約束

    • primary key
    • primary key(欄位名...)
  • 外來鍵約束

    constraint fk_table1_table2 foreign key(欄位) references table2(欄位)
    
  • 其它約束

    • unique
    • not null
    • default
    • auto_increment
    CREATE TABLE t_emp(
        id INT PRIMARY KEY auto_increment,
        name VARCHAR(22) not null unique,
        sex VARCHAR(2) DEFAULT '男'
    ) DEFAULT CHARSET=utf8;
    

表操作

檢視錶結構與修改表名

  • 檢視資料表基本結構

    desc 表名
    
  • 檢視資料表詳細結構

    show create table 表名 \G
    

    不僅可以返回給我們建表時所寫的詳細語句,而且還可以檢視儲存引擎和字元編碼

  • 修改表名

    ALTER TABLE 舊錶名 RENAME 新表名;
    

修改欄位名與欄位資料型別

  • 修改欄位名

    ALTER TABLE 表名 CHANGE 舊欄位名 新欄位名 新資料型別;
    
  • 修改欄位資料型別

    ALTER TABLE 表名 MODIFY 欄位名 資料型別;
    

新增與刪除欄位

  • first 在表的第一列新增欄位
  • after 在表的指定列後新增欄位
  • drop 刪除欄位

修改欄位的排列位置

  • ALTER TABLE 表名 MODIFY 欄位1 資料型別 FIRST|AFTER 欄位2;
    

刪除表的外來鍵約束

  • ALTER TABLE 表名 DROP FOREIGN KEY 外來鍵約束名; 
    

增刪改

插入資料

INSERT INTO 表名 (欄位名) VALUES (內容), (內容), (內容)...;

更新資料

UPDATE 表名 SET 欄位名1 = 內容1, 欄位名2 = 內容2, 欄位名3 = 內容3 WHERE 過濾條件; 

刪除資料

  •  DELETE FROM 表名 WHERE 條件語句;
    
  • 清空表

    TRUNCATE 表名
    

查詢

單表查詢

  • SELECT 欄位名 FROM 表名;
    
  • 帶in關鍵字的查詢

     SELECT 欄位名 FROM 表名 WHERE 欄位名 (not) IN (n1,n2,n3,...);
    
    • 範圍查詢

       SELECT 欄位名 FROM 表名 WHERE 欄位名 (not) BETWEEN n1 AND n2;
      
    • 帶like的字元匹配查詢

      1. 使用萬用字元%模糊匹配資料內容(百分號萬用字元%可以匹配任意長度的字元,甚至包括零字元。)
      SELECT 欄位名 FROM 表名 WHERE 欄位名 LIKE '字元%';
      
      1. 使用萬用字元_模糊匹配資料內容(下劃線萬用字元_只能模糊匹配1個字元。)
      SELECT 欄位名 FROM 表名 WHERE 欄位名 LIKE '字元_';
      
    • 查詢空值與去除重複結果

      1. int (not) null
        
      2. 去重

        SELECT DISTINCT 欄位名 FROM 表名; 
        
    • 帶 AND 與 OR 的多條件查詢

      SELECT 欄位名 FROM 表名 WHERE 表示式1 AND / OR 表示式2;
      
  • 對查詢結果進行排序

    SELECT 欄位名 FROM 表名 ORDER BY 欄位名 [ASC[DESC]];
    
  • 分組查詢

    SELECT 欄位名 FROM 表名 GROUP BY 欄位名;
    
  • 限制查詢

    SELECT 欄位名 FROM 表名 LIMIT [OFFSET,] 記錄數;
    
    1. 第一個引數,OFFSET,可選引數,表示偏移量

    2. 第二個引數,記錄數,表示返回查詢結果的條數

連線查詢

  • 內連線查詢

    表1 [inner] join 表2 on 表1.欄位=表2.欄位
    
  • 外連線查詢

    表1 left/right [outer]  join 表2 on 表1.欄位=表2.欄位
    

子查詢

  • 帶比較運算子的子查詢

    eg:
    select name, age from tb_emp where age > (select avg(age) from tb_emp);
    
  • 關鍵字子查詢

    tb_salary

    id position salary
    1 Java 8000
    2 Java 8400
    3 Java 9000
    4 Python 6500
    5 Python 10000
    #1.使用 ALL 關鍵字進行查詢
    select position, salary from tb_salary where salary > all (select salary from tb_salary where position = 'Java'); 
    #2.使用 ANY 關鍵字進行查詢
    select position, salary from tb_salary where salary > any (select salary from tb_salary where position = 'Java'); 
    #3.使用 IN 關鍵字進行查詢
    select position, salary from tb_salary where position in ('Java'); 
    

檢視

  • 建立檢視

    CREATE [OR REPLACE] [ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE}]
        VIEW view_name [(column_list)]
        AS select_statement
       [WITH [CASCADED | LOCAL] CHECK OPTION]
    
  • 刪除檢視

    DROP VIEW view_name;
    

相關文章