SQL基础语句

DDL(数据定义语言)

  • 查询

    • 查询所有数据库:show databases;
    • 查询当前数据库:select database();
    • 查询当前数据库所有表:show tables;
    • 查询表结构:desc 表名;
    • 查询建表语句:show create table 表名;
  • 使用

    • 使用数据库:use 数据库名;
  • 创建

    • 创建数据库:create database [if not exists] 数据库名;

    • 创建表操作

      create table 表名(
      	字段1 字段类型 [约束] [comment 字段1注释],
          ...
          字段n 字段类型 [约束] [comment 字段2注释]
      )[ comment 表注释];
      
    • 约束

      • 概念:约束是作用域表中字段上的规则,用于限制存储在表中的数据。

      • 目的:保证数据库中数据的正确性、有效性和完成性

        约束描述关键字
        非空约束限制该字段值不能nullnot null
        唯一约束保证字段的所有数据都是唯一、不重复的unique
        主键约束主键是一行数据的唯一标识,要求非空且唯一primary key
        (自动增长)前提:必须是主键,自动增长auto_increment
        默认约束保存数据时,如果未指定该字段值,采用默认值default
        外键约束让两张表的数据建立连接,保证数据的一致性和完整性foreign key
    • 数据类型

  • 删除

    • 删除数据库:dorp database [if exists] 数据库名;
    • 删除表:drop table [if exists] 表名;
  • 修改

    • 添加字段:alter table 表名 add 字段名 类型(长度) [comment 注释] [约束];
    • 修改字段类型:alter table 表名 modify 字段名 新数据类型(长度)
    • 修改字段名或字段类型:alter table 表名 change 旧字段名 新字段名 类型(长度) [comment 注释] [约束];
    • 删除字段:alter table 表名 drop column 字段名;
    • 修改表名:rename table 表名 to 新表名;

注意事项:上述语句中的database,也可以替换成schema。如:create schema db01;(databases不可以这样)

DML(数据操作语言)

  • insert语法

    • 指定字段添加数据:insert into 表名 (字段名1,字段名2) values (值1, 值2);
    • 全部字段添加数据:insert into 表名 values (值1, 值2, ...);
    • 批量添加数据(指定字段):insert into 表名 (字段名1, 字段名2) values (值1, 值2), (值1, 值2);
    • 批量添加数据(全部字段):insert into 表名 values (值1, 值2, ...), (值1, 值2, ...);

    注意事项:

    1. 插入数据时,指定的字段顺序需要与值的顺序是一一对应的。
    2. 字符串和日期型数据应该包含在引号中。
    3. 插入的数据大小,应该在字段规定的范围内。
  • update语法

    • 修改数据:update 表名 set 字段名1 = 值1, 字段名2 = 值2, ... [where 条件];

    注意事项:修改语句的条件可以有,也可以没有,如果没有条件,则会修改整张表的所有数据。

  • delete语法

    • 删除数据:delete from 表名 [where 条件];

    注意事项:

    1. DELETE语句的条件可以有,也可以没有,如果没有条件,则会删除整张表的所有数据。
    2. DELETE语句不能删除某一个字段的值(如果要操作,可以使用UPDATE,将该字段的值置为NULL)。

DQL(数据查询语言)

  • 基本查询

    • 查询多个字段:select 字段1, 字段2, 字段3 from 表名;
    • 查询所有字段(通配符):select * from 表名;
    • 设置别名:select 字段1 [as 别名1], 字段2 [as 别名2] from表名;(as关键字可以省略)
    • 去除重复记录:select distinct 字段列表 from 表名;
  • 条件查询(where)

    • 语法:select 字段列表 from 表名 where 条件列表;

    • 比较运算符

      比较运算符功能
      >大于
      >=大于等于
      <小于
      <=小于等于
      =等于
      <> 或 !=不等于
      between … and …在某个范围之内(含最小、最大值)
      in( … )在in之后的列表中的值,多选一
      like 占位符模糊匹配(_匹配单个字符,%匹配任意个字符)
      is null是null
    • 逻辑运算符

      逻辑运算符功能
      and 或者 &&并且(多个条件同时成立)
      or 或者 ||或者(多个条件任意一个成立)
      not 或 !非,不是
  • 分组查询(group by)

    • 聚合函数

      • 介绍:将一列数据作为一个整数,进行纵向计算。

      • 语法:select 聚合函数(字段列表) from 表名;

        函数功能
        count统计数量
        max最大值
        min最小值
        avg平均值
        sum求和
        • 注意事项
          • null值不参与所有聚合函数运算。
          • 统计数量可以使用:count(*) count(字段) count(常量),推荐使用count(*)
    • 分组查询

      • 语法:select 字段列表 from 表名 [where 条件] group by 分组字段名 [having 分组后过滤的条件];
      • where与having区别
        1. 执行时机不同:where是分组之前进行过滤,不满足where条件,不满足where条件,不参与分组;而having是分组之后对结果进行过滤。
        2. 判断条件不同:where不能对聚合函数进行判断,而having可以。
      • 注意事项
        • 分组之后,查询的字段一般为聚合函数和分组字段,查询其他字段无任何意义。
        • 执行顺序:where > 聚合函数 > having
  • 排序查询(order by)

    • 条件查询:select 字段列表 from 表名 [where 条件列表] [group by 分组字段] order by 字段1 排序方式, 字段2 排序方式;

    • 排序方式:

      • ASC:升序(默认值)
      • DESC:降序
    • 注意事项

      如果是多个字段排序,当第一个字段值相同时,才会根据第二个字段进行排序。

  • 分页查询(limit)

    • 语法:select 字段列表 from 表名 limit 起始索引,查询记录数;
    • 注意事项
      • 其实索引从0开始, 起始索引 = ( 页码 − 1 ) ∗ 每页展示记录数 起始索引 = (页码 - 1) * 每页展示记录数 起始索引=(页码1)每页展示记录数
      • 分页查询是数据库的方言,不同的数据库有不同的实现,MySQL中是LIMIT。
      • 如果查询的是第一页数据,起始索引可以省略,直接简写为limit n。
  • 案例设计

    • 根据需求,完成员工性别信息的统计

      select if(gender = '1' ,'男性员工', '女性员工') as 性别, count(*) from tb_emp group by gender;

    • 根据需求,完成员工职位信息的统计

      select (case job when 1 then '班主任' when 2 then '讲师' when 3 then '学工主管' when 4 then '教研主管' else '未分配职位' end) as 职位, count(*) from tb_emp group by jog;

    • 流程控制函数

      • if(表达式,tvalue,fvalue):当表达式为true时,取值tvalue;当表达式为false时,取值fvalue
      • case expr when value1 then result1 [when value2 then value2 ...] [else result] end
  • 12
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值