• SQL简介与入门


    SQL简介

    • Structured Query Language 结构化查询语言
    • 定义操作所有关系型数据库的统一标准
    • 对于同一个需求, 每一种数据库操作的方式可能会存在一些不一样的地方, 我们称为“方言”

    SQL分类

    类别说明功能
    DDL(Data Definition Language)数据定义语言用来定义数据库对象:数据库,表,列等
    DML(Data Manipulation Language)数据操作语言用来对数据库中表的数据进行增删改
    DQL(Data Query Language)数据查询语言用来查询数据库中表的记录(数据)
    DCL(Data Control Language)数据控制语言来定义数据库的访问权限和安全级别,及创建用户

    在这里插入图片描述


    DDL 操作数据库

    1. 查询
    	SHOW DATABASES;
    2. 创建数据库
    	CREATE DATABASE 数据库名称;
    3. 创建数据库(判断,如果不存在则创建)
    	CREATE DATABASE IF NOT EXISTS 数据库名称;
    4. 删除数据库
    	DROP DATABASE 数据库名称;
    5. 删除数据库(判断,如果存在则删除)
    	DROP DATABASE IF EXISTS 数据库名称;
    6. 使用数据库
    	USE 数据库名称;
    7. 查看当前使用的数据库
    	SELECT DATABASE();
    

    DDL 操作表

    • MySQL中的数据类型

    在这里插入图片描述

    1. 查询当前数据库下所有表名称
    	SHOW TABLES;
    2. 查询表结构
    	DESC 表名称;
    3. 创建表
    	CREATE TABLE 表名 (
    		字段名1  数据类型1,
    		字段名2  数据类型2,
    		…
    		字段名n  数据类型n
    	);
    4. 删除表
    	DROP TABLE 表名;
    5. 删除表时判断表是否存在
    	DROP TABLE IF EXISTS 表名;
    6. 修改表名
    	ALTER TABLE 表名 RENAME TO 新的表名;
    7. 添加一列
    	ALTER TABLE 表名 ADD 列名 数据类型;
    8. 修改数据类型
    	ALTER TABLE 表名 MODIFY 列名 新数据类型;
    9. 修改列名和数据类型
    	ALTER TABLE 表名 CHANGE 列名 新列名 新数据类型;
    10. 删除列
    	ALTER TABLE 表名 DROP 列名;
    

    DML 操作表中数据

    1. 给指定列添加数据
    	INSERT INTO 表名(列名1,列名2,) VALUES(1,2,);
    2. 给全部列添加数据
    	INSERT INTO 表名 VALUES(1,2,);
    3. 批量添加数据
    	INSERT INTO 表名(列名1,列名2,) VALUES(1,2,),(1,2,),(1,2,);
    	INSERT INTO 表名 VALUES(1,2,),(1,2,),(1,2,);
    4. 修改表数据
    	UPDATE 表名 SET 列名1=1,列名2=2,[WHERE 条件];
    5. 删除数据
    	DELETE FROM 表名 [WHERE 条件];
    6. truncate删除表记录 属于DDL
    	TRUNCATE TABLE 表名;
    
    • truncate和delete的区别:
      • delete是将表中的数据一条一条删除
      • truncate是将整个表摧毁, 重新创建一个新的表, 新的表结构和原来表结构一模一样

    DQL 数据查询 数字代表执行顺序

    SELECT 5
        字段列表 
    FROM 1
        表名列表 
    WHERE 2
        条件列表
    GROUP BY 3
        分组字段
    HAVING 4
        分组后条件
    ORDER BY 6
        排序字段
    LIMIT 7
        分页限定
    
    • 基础查询
    -- 基础查询
    SELECT 字段列表 FROM 表名;
    SELECT * FROM 表名; -- 查询所有数据
    
    -- 去除重复记录
    SELECT DISTINCT 字段名,字段名,.. FROM 表名;
    
    -- 查询时给列、表指定别名需要使用AS关键字
    SELECT 字段名1 AS 别名, 字段名2 AS 别名... FROM 表名;
    SELECT 字段名1 AS 别名, 字段名2 AS 别名... FROM 表名 AS 表别名;
    AS: AS 也可以省略 
    
    • 条件查询
    比较运算符
    >		大于 
    <		小于
    <=		小于等于
    >=		大于等于
    =		等于
    <>、!=	不等于
    
    逻辑运算符
    and(&&) 	多个条件同时满足 一假即假
    or(||)	 	多个条件其中一个满足 一真即真
    not(!) 		不满足 取反
    
    in关键字
    SELECT * FROM 表名 WHERE 字段 in (值1, 值2, 值3);
    in里面的每个数据都会作为一次条件,只要满足条件的就会显示
    
    范围
    BETWEEN 值1 AND 值2 -- 表示从值1到值2范围,包头又包尾
    比如:age BETWEEN 80 AND 100
    相当于: age>=80 && age<=100
    
    模糊查询like
    SELECT * FROM 表名 WHERE 字段名 LIKE '通配符字符串';
    	%:  表示零个一个多个字符(任意多个字符)
    	_:  表示一个字符
    
    • 排序
    SELECT 字段 FROM 表名 ORDER BY 排序的字段 [ASC|DESC];
    ASC: 升序排序 默认 可省略
    DESC: 降序排序
    
    • 组合排序
    组合排序就是先按第一个字段进行排序,如果第一个字段相同,才按第二个字段进行排序,依次类推。
    SELECT 字段名 FROM 表名 WHERE 字段=值 ORDER BY 字段名1 [ASC|DESC], 字段名2 [ASC|DESC];
    
    • 聚合函数
    count:在根据指定的列统计的时候,如果这一列中有null的行,该行 不会被统计在其中。按照列去统计有多少行数据。
    sum: 计算指定列的数值和,如果不是数值类型,那么计算结果为0
    max: 计算指定列的最大值
    min: 计算指定列的最小值
    avg: 计算指定列的平均值
    
    • 分组
    按照某一列或者某几列 把相同的数据, 进行合并输出
    
    在sql语句中,如果分组之后,还需要一些条件,
     可以使用having条件,表示分组之后的条件,在having后面可以书写聚合函数
     
    having必须和group by一起使用,having和where的用法一模一样,where怎么使用having就怎么使用,
    where不能使用的,having也可以使用,比如说where后面不可以使用聚合函数,
    但是在having后面是可以使用聚合函数的。
    
    • ifnull函数
    ifnull(列名, 默认值)函数表示判断该列是否为null,如果为null,返回默认值,如果不为null,返回实际的值
    
    ifnull(english,2) == english列的值是null,返回值是 2
    
  • 相关阅读:
    编码自动化:使用MybatisX初体验,太爽了!
    腾讯会议如何在Linux下的安装与使用
    【Hack The Box】Linux练习-- Frolic
    ♥ 七夕七夕 ♥ - 怎么给女朋友送礼物攻略
    LeetCode:2216. 美化数组的最少删除数(C++)
    linux安装mongodb及springboot增删查实现
    MyBatis的各种查询功能
    计算机竞赛 基于深度学习的人脸专注度检测计算系统 - opencv python cnn
    Elasticsearch 安装与配置
    Redis7学习笔记01
  • 原文地址:https://blog.csdn.net/XiaoBoYes/article/details/127086088