MySQL表管理

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 RDS MySQL,高可用系列 2核4GB
简介: | int | 整型 || float| 单精度浮点 4字节32位|| double| 双精度浮点 8字节64位|| varchar| 可变长度的字符类型|| text| 文本|| decimal (5,2)| 5个有效长度数字,小数点后面有2位|| image| 图片|| char| 固定长度的字符类型|

一、常用的数据类型

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

二、查看数据库结构

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

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

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

USE 数据库名;
SHOW TABLES;

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

USE 数据库名;
DESCRIBE 数据库名.表名;
可缩写成: DESC 表名;

三、SQL语句

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

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

1.创建表(订单表)

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

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

**插入记录:**
     INSERT INTO orders VALUES
  (....),(....),(....)....;
查询所有:select * from orders;
带条件查询部分字段: select 字段1,字段2... from orders where[查询条件]
**修改记录:**
       UPDATE 表名
   SET 字段1 = 值1,
       字段2 = 值2,
       ...
   WHERE 条件表达式;
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;
示例
  - 修改某个订单的状态
  update orders set status = 2
  where order_id = '201801010001';
**删除记录:**
      delete from  表名 where 条件表达式;
       示例
  -- 删除201801010002订单的信息
  delete from orders where order_id='201801010002';
**模糊查询**
格式:where 字段 LIKE "通配字符"
通配符匹配
   下划线(_): 匹配单个字符
   百分号(%): 匹配任意个字符
   
   例: -- 查询所有名字以D开头的客户
    SELECT * FROM customer 
    WHERE cust_name LIKE 'D%';
空值、非空判断
语法
   判断空值:字段 IS NULL
   判断非空:字段 IS NOT NULL
示例:查询电话号码为空值的客户信息
  SELECT * FROM customer
  WHERE tel_no IS null;
  -- where tel_no is not null; -- 电话非空
查询子句
ORDER BY: 排序
格式:order BY 字段 [ASC/DESC]
   ASC-升序    DESC-降序
示例:查询所有订单,按照金额降序排列
  SELECT order_id, amt 
  FROM orders
  ORDER BY amt desc;  -- asc或不写,升序
distinct子句
作用:去除重复数据
语法格式
    SELECT DISTINCT(要去重的字段)
    FROM 表名
示例:查询客户表中一共有几个不重复的名字
    SELECT DISTINCT(cust_name)
    FROM customer;
聚合函数
什么是聚合:不是直接查询表中的数据,
   而是对数据进行总结,返回结果
聚合函数有:
   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%';

   说明:对某个字段调用聚合函数时,如果
         字段的值为空,不会参与聚合操作
分组:group BY
=作用:对查询结果进行分组,通常和聚合函数
   搭配使用
语法格式:group BY 字段
示例
   -- 统计客户数量,按照客户名称分组
   SELECT cust_name, COUNT(*)
   FROM customer GROUP BY cust_name;

   -- 从orders表,统计每种状态订单的总金额
   SELECT status, SUM(amt) 
   FROM orders GROUP BY status; 
Having:对分组结果进行过滤
作用:对分组结果进行过滤,需要和group BY
   语句配合使用
语法格式
   GROUP BY 分组字段 HAVING 过滤条件
示例
   -- 按照订单状态统计总金额
   -- 查询结果中只保留总金额大于500的
   SELECT status, SUM(amt) 
   FROM orders 
   GROUP BY status
   HAVING SUM(amt) > 500;

   说明:group by分组聚合的结果,只能用
         having,不能用where,where只能
         用户表中有的字段作为条件时候
表结构调整
 添加字段
语法
  - 添加到表的最后一个字段
   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;
 修改字段
修改字段类型
  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;
相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
5月前
|
关系型数据库 MySQL 数据库
数据迁移脚本优化过程:从 MySQL 到 Django 模型表
在大规模的数据迁移过程中,性能问题往往是开发者面临的主要挑战之一。本文将分析一个数据迁移脚本的优化过程,展示如何从 MySQL 数据库迁移数据到 Django 模型表,并探讨优化前后的性能差异。
|
5月前
|
SQL 关系型数据库 MySQL
mysql sql语句删除一个库下的所有表
mysql sql语句删除一个库下的所有表
39 1
|
5月前
|
分布式计算 DataWorks MaxCompute
DataWorks产品使用合集之需要将mysql 表(有longtext类型字段) 迁移到odps,但odps好像没有对应的类型支持,该怎么办
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
|
4月前
|
存储 关系型数据库 MySQL
MySQL数据库开发进阶:精通数据库表的创建与管理22
【7月更文挑战第22天】数据库的创建与删除,数据表的创建与管理
48 1
|
4月前
|
存储 SQL 关系型数据库
MySQL设计规约问题之在数据库设计中,为什么要适当考虑反范式的表设计
MySQL设计规约问题之在数据库设计中,为什么要适当考虑反范式的表设计
|
4月前
|
SQL 存储 数据库
MySQL设计规约问题之如何处理日志类型的表
MySQL设计规约问题之如何处理日志类型的表
|
4月前
|
运维 关系型数据库 MySQL
实时计算 Flink版产品使用问题之在处理MySQL表新增数据记录时,没有正确触发变更事件,该如何解决
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
5月前
|
关系型数据库 MySQL
蓝易云 - 如何修复MySQL中损坏的表
最后,为了防止数据丢失,定期备份数据是非常重要的。
151 3
|
5月前
|
SQL 关系型数据库 MySQL
MySQL数据库——SQL(4)-DCL(管理用户、权限控制)
MySQL数据库——SQL(4)-DCL(管理用户、权限控制)
40 1
|
5月前
|
SQL 存储 关系型数据库
MySQL数据库——SQL(1)-SQL通用语法、SQL分类、DDL(数据库操作、表操作)
MySQL数据库——SQL(1)-SQL通用语法、SQL分类、DDL(数据库操作、表操作)
45 1