约束

  • 主键约束

    • 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;
    

版权声明:本文为bleso原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/bleso/p/14973682.html