• 21天打卡挑战学习MySQL——《MySQL表管理》第二周 第五篇



    活动地址:CSDN21天学习挑战赛

    一、常用的数据类型

    数据类型解释
    int整型
    float单精度浮点 4字节32位
    double双精度浮点 8字节64位
    varchar可变长度的字符类型
    text文本
    decimal (5,2)5个有效长度数字,小数点后面有2位
    image图片
    char固定长度的字符类型

    二、查看数据库结构

    1.查看当前服务器中的数据库

    SHOW DATABASES;		#大小写不区分,分号“;”表示结束
    
    • 1

    2.查看数据库中包含的表

    USE 数据库名;
    SHOW TABLES;
    
    • 1
    • 2

    3.查看表的结构(字段)

    USE 数据库名;
    DESCRIBE 数据库名.表名;
    可缩写成: DESC 表名;
    
    • 1
    • 2
    • 3

    三、SQL语句

    SQL语言解释
    DDL数据定义语言,用于创建数据库对象,如库、表、索引等
    DQL数据查询语言,用于从数据表中查找符合条件的数据记录
    DCL数据控制语言,用于设置或者更改数据库用户或角色权限
    DML数据操纵语言,用于对表中的数据进行管理

    四、创建及删除数据库和表

    1.创建表(订单表)

    create table orders(order_id varchar(32),cust_name varchar(64))
    default charset=utf8;
    
    • 1
    • 2

    建表完成后,使用 show tables 查看表
    desc orders :查看表结构
    show create table orders :查看建表语句
    删除表:drop table orders;

    **插入记录:**
    	 INSERT INTO orders VALUES
      (....),(....),(....)....;
    
    • 1
    • 2
    • 3
    查询所有:select * from orders;
    带条件查询部分字段: select 字段1,字段2... from orders where[查询条件]
    
    • 1
    • 2
    **修改记录:**
    	   UPDATE 表名
       SET 字段1 =1,
           字段2 =2,
    	   ...
       WHERE 条件表达式;
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    limit子句
    作用:限制显示的笔数
    格式
       limit n     只显示前面n笔
       limit m,n   从第m开始,总共显示n笔
    示例
       -- 查询所有订单,显示前2笔
       SELECT * FROM orders limit 2;
       -- 查询所有订单,显示金额最大的2笔
       SELECT * FROM orders 
       ORDER BY amt DESC limit 2;
       
       -- 利用limit分页:每页3笔数据
       --1页
       SELECT * FROM customer limit 0,3;
       --2页
       SELECT * FROM customer limit 3,3;
       --3页
       SELECT * FROM customer limit 6,3;
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    示例
      - 修改某个订单的状态
      update orders set status = 2
      where order_id = '201801010001';
    
    • 1
    • 2
    • 3
    • 4
    **删除记录:**
    	  delete from  表名 where 条件表达式;
    	   示例
      -- 删除201801010002订单的信息
      delete from orders where order_id='201801010002';
    
    • 1
    • 2
    • 3
    • 4
    • 5
    **模糊查询**
    格式:where 字段 LIKE "通配字符"
    通配符匹配
       下划线(_): 匹配单个字符
       百分号(%): 匹配任意个字符
       
       例: -- 查询所有名字以D开头的客户
        SELECT * FROM customer 
    	WHERE cust_name LIKE 'D%';
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    空值、非空判断
    语法
       判断空值:字段 IS NULL
       判断非空:字段 IS NOT NULL
    示例:查询电话号码为空值的客户信息
      SELECT * FROM customer
      WHERE tel_no IS null;
      -- where tel_no is not null; -- 电话非空
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    查询子句
    ORDER BY: 排序
    格式:order BY 字段 [ASC/DESC]
       ASC-升序    DESC-降序
    示例:查询所有订单,按照金额降序排列
      SELECT order_id, amt 
      FROM orders
      ORDER BY amt desc;  -- asc或不写,升序
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    distinct子句
    作用:去除重复数据
    语法格式
        SELECT DISTINCT(要去重的字段)
    	FROM 表名
    示例:查询客户表中一共有几个不重复的名字
        SELECT DISTINCT(cust_name)
    	FROM customer;
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    聚合函数
    什么是聚合:不是直接查询表中的数据,
       而是对数据进行总结,返回结果
    聚合函数有:
       max     求最大值
       MIN     求最小值
       AVG     求平均值
       SUM     求和
       COUNT   统计笔数
    示例
       SELECT MAX(amt) "最大金额",
              MIN(amt) "最小金额",
    		  AVG(amt) "平均金额",
    		  SUM(amt) "订单总金额"
       FROM orders;
    
       -- 统计订单笔数
       SELECT COUNT(*) FROM orders;
    
       -- 统计电话号码以135开头的客户数量
       -- 查customer表
       SELECT COUNT(*) FROM customer
       WHERE tel_no LIKE '135%';
    
       说明:对某个字段调用聚合函数时,如果
             字段的值为空,不会参与聚合操作
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    分组:group BY
    =作用:对查询结果进行分组,通常和聚合函数
       搭配使用
    语法格式:group BY 字段
    示例
       -- 统计客户数量,按照客户名称分组
       SELECT cust_name, COUNT(*)
       FROM customer GROUP BY cust_name;
    
       -- 从orders表,统计每种状态订单的总金额
       SELECT status, SUM(amt) 
       FROM orders GROUP BY status; 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    Having:对分组结果进行过滤
    作用:对分组结果进行过滤,需要和group BY
       语句配合使用
    语法格式
       GROUP BY 分组字段 HAVING 过滤条件
    示例
       -- 按照订单状态统计总金额
       -- 查询结果中只保留总金额大于500SELECT status, SUM(amt) 
       FROM orders 
       GROUP BY status
       HAVING SUM(amt) > 500;
    
       说明:group by分组聚合的结果,只能用
             having,不能用where,where只能
    		 用户表中有的字段作为条件时候
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    表结构调整
     添加字段
    语法
      - 添加到表的最后一个字段
       ALTER table 表名 ADD 字段名 类型(长度) 
      - 添加到表的第一个字段
       ALTER table 表名 ADD 字段名 类型(长度) first
      - 指定添加到某个字段后面
       ALTER table 表名 ADD 字段名 类型(长度) 
       after 字段名称
    示例
      CREATE TABLE student(
        stu_no VARCHAR(32),
    	stu_name VARCHAR(128)
      );
      添加字段
      -- 在最后添加年龄字段
      ALTER TABLE student ADD age int;
      -- 将id字段添加到第一个字段
      ALTER TABLE student ADD id INT first;
      -- 将tel_no添加到stu_name后面
      ALTER TABLE student ADD tel_no VARCHAR(32)
      after stu_name;
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
     修改字段
    修改字段类型
      ALTER TABLE 表名 modify 字段 类型(长度)
    修改字段名称
      ALTER TABLE 表名 
      change 旧字段名 新字段名 类型(长度)
    示例
      -- 修改student表stu_name字段长度为64
      ALTER TABLE student 
      modify stu_name VARCHAR(64);
    
      -- 将student表age字段改为stu_age
      ALTER TABLE student
      change age stu_age int;
    
    删除字段
    语法:ALTER TABLE 表名 DROP 字段名
    示例:删除student表id字段
      ALTER TABLE student DROP id;
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
  • 相关阅读:
    C++设计模式_09_Abstract Factory 抽象工厂
    Linux屏幕控制(1)
    Android 开源一个USB读写demo,从多个USB设备中选择一个实现外设控制的通信
    Kubernetes 内部原理:架构
    conda配置国内源(已验证速度)
    天软特色因子看板 (2023.09 第05期)
    java毕业生设计忆居民宿管理计算机源码+系统+mysql+调试部署+lw
    Jenkins+maven+testng+htmlreport单元自动化测试
    Linux 5种网络模型
    【人工智能】企业如何使用 AI与人工智能的定义、研究价值、发展阶段的深刻讨论
  • 原文地址:https://blog.csdn.net/m0_55400356/article/details/126258955