冬季实战营第三期:MySQL数据库进阶实战之MySQL数据库DDL、DML详解

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: MySQL数据库DDL、DML详解

一、MySQL数据库数据类型

<1> MySQL数据库中支持多种数据类型

  • 数值型
  • 字符型
  • 日期型

<2> 常用的数据类型

  • 整型

    • int:整型,存储整数
    • int(M): M表示预期值,与存储大小和数值的范围无关

      • id int                    1
      • id int(3) zerofill 001
      • zerofill 零填充 会在左侧补0
    • tinyint         1        -128~127
    • smallint       2        32767/65535
    • int               4        21亿
    • bigint           8        兆
    • mediumint    3        八百多万/一千六百多万
  • 浮点型

    • float[(M,D)]: 浮点型,存储小数

      • salary float(6,2): 表示最多6位,小数占2位,最大存储数值为:9999.99
    • double: 浮点型,小数
  • 字符型

    • char(M): 固定长度的字符串类型          name char(5)      '1     '
    • varchar(M): 可变长度的字符串类型 (推荐)   name varchar(5) '1'
    • text: 大的字符串类型,4G字符串
    • blob:字节类型
  • 日期

    • date: 日期类型,年月日 YYYY-MM-DD 日期格式
    • time: 时间类型,时分秒 HH:mm:ss 时间格式
    • year: 年份,年               YYYY格式的年份值
    • timestamp: 年月日 时分秒,时间戳 1970年1月1日0时0分0秒 - 2037年的某一个时刻   YYYYMMDDhhmmss
    • datetime: 年月日 时分秒  YY-MM-DD hh:mm:ss
  • 注意:选择合适的数据类型,是数据库优化的一部分,short it better 原则

二、MySQL数据库中的数据的使用

如何操作:编程语言

<1> SQL概述

  • 结构化查询语言,可以用于查询和修改关系数据库的语言
  • SQL语言,是数据库的核心语言,被ISO采纳为数据库语言国际标准,几乎所有的数据库都支持SQL

<2> 组成

  • 数据定义语言(Data Definition Language, DDL): 用于管理和定义数据对象,包括数据库,数据表等

    • create: 创建数据库和表
    • drop: 删除表对象
    • alter: 修改表结构
  • 数据操作语言(Data Manipulation Language, DML): 用于操作数据库对象中所包含的数据

    • insert: 添加数据
    • delete: 删除数据
    • update: 修改数据
  • 数据查询语言(Data Query Language, DQL): 用于查询数据库对象中所包含的数据

    • select: 查询数据
  • 事务控制语言(Transaction Control Language, TCL): 包括提交事务、事务回滚

    • commit: 提交事务
    • rollback: 事务回滚
    • savepoint: 事务节点
  • 数据控制语言(Data Control Language, DCL): 用来管理数据库,包括管理权限以及数据更改

    • grant: 授权
    • revoke: 收回权限

1. 数据定义语言(DDL)

数据库的操作

<1> 创建数据库
  • 语法格式: creat database [if not exists] 数据库名称 [character set [=] 编码名称];     // '[]'表示可有可无

    • 例如:
    • create database ruochen;
    • create database if not exists ruochen; // 忽视错误,显示警告
<2> 查看数据库
  • 语法格式

    • show databases; // 查看所有的数据库
    • show create database 数据库名称; // 查看某一个已经创建的数据库
    • show warnings; // 查看警告
    • create database db character set gbk; // 指定创建的数据库的字符集
<3> 修改数据库
  • 语法格式: alter database [if not exists] 数据库名称 [character set 新的编码名称]

    • 例如:
    • alter database db character set = utf8;
<4> 删除数据库
  • 语法格式:drop database 数据库名称;

    • 例如:
    • drop database ruochen; // 删除数据库
数据表的操作

<1> 创建数据表
  • 使用一个数据库: use 数据库名称
  • select database(); // 查看当前正在使用的数据库
  • 创建数据表语法:

    • create table 表名(

           字段名  字段类型  约束,
           字段名  字段类型  约束,
           ......
    )

    • 例如:创建用户表

      • ceeate table user(

           uid int,
           username varchar(32),
           password varchar(32),
           birthday date,
           sex enum('男', '女')

    )
    
<2> 查询数据表
  • show tables; // 显示当前数据库中所有的数据表
  • show columns from 表名; // 查询某张表表结构
  • desc 表名; // 查询某张表的表结构
<3> 修改数据表
  • 修改表名

    • 方式一: alter table 表名 rename [as|to] 新表名

      • 例如:alter table user rename us;
    • 方式二:rename table 旧表名 to 新表名 [,旧表名 to 新表名, ....];

      • 例如:rename table user to us;
  • 添加列

    • 语法格式:

      • alter table 表名 add [column] 列名 列定义 [first|after 列名];
    • 例如:

      • alter table user add sal double after password; // 在指定的列后面添加新的列
      • alter table user add phone varcher(32); // 默认在列的最后添加新的列
      • alter table user add hobby varchar(32) first; // 在列的最前面添加新的列
  • 修改列定义

    • 语法格式:

      • alter table 表名 modify 列名 列定义 [first|after 列名];
    • 例如:

      • alter table user modify sex varchar(32) first;
  • 修改列名

    • 语法格式:

      • alter table 表名 change 列的列名 新的列名 新的列定义 [first|after 列名];
    • 例如:

      • alter table user change hobby address varchar(20) after sal;
  • 删除列

    • 语法格式:

      • alter table 表名 drop [column] 列名;
    • 例如:

      • alter table user drop phone;
<4> 删除数据表
  • 语法格式:

    • drop table 表名;
  • 例如:

    • drop table user;

2. 数据操作语言(DML)


<1> 插入操作

  • 语法格式:

    • insert [into] 表名 [(列名1,列名2,....)] values|value (数值1|表达式,数值2|表达式,....);
  • 例如:

    • insert into teacher (id, name) values ('1', 'xian zheng ta yi ge yi');
    • insert into teacher value(2, '
    • wangjianlin', 'xian zheng ta yi ge yi'); // 如果前面不指定字段,默认采用所有字段,按照列的顺序添加

<2> 删除操作

  • 语法格式:

    • delete from 表名 where 条件;
  • 例如:

    • delete from teacher where id=1; // 指定条件删除记录
    • delete from teacher; // 不带条件删除,删除所有记录
  • 扩充:truncate table 表名; // 清空表,会清空表中所有数据

    • 例如
    • truncate table teacher;
  • 面试题:

    • delete删除与truncate 有什么区别?

      • 删除方式

        • delete:一条一条的删除,不清空 auto_increment 记录数
        • truncate:直接将表中的数据进行清空, auto_increment 自增将被重置,从新开始

<3> 修改操作

  • 语法格式:

    • update 表名 set 列名1=数值,列名2=数值,.... where 条件;
    • 例如:

      • update teacher set name='xiaosan',note='ming nian zai zhao yi ge' where id=1; // 带条件修改,修改指定记录
      • update teacher set name='xiaosi'; // 不带条件,修改表中所有数据

MySQL 数据查询语言(DQL)& 事务控制语言(TCL)详解

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
1月前
|
缓存 关系型数据库 MySQL
MySQL索引策略与查询性能调优实战
在实际应用中,需要根据具体的业务需求和查询模式,综合运用索引策略和查询性能调优方法,不断地测试和优化,以提高MySQL数据库的查询性能。
169 66
|
1月前
|
监控 关系型数据库 MySQL
数据库优化:MySQL索引策略与查询性能调优实战
【10月更文挑战第27天】本文深入探讨了MySQL的索引策略和查询性能调优技巧。通过介绍B-Tree索引、哈希索引和全文索引等不同类型,以及如何创建和维护索引,结合实战案例分析查询执行计划,帮助读者掌握提升查询性能的方法。定期优化索引和调整查询语句是提高数据库性能的关键。
271 1
|
1月前
|
关系型数据库 MySQL Linux
在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,包括准备工作、下载源码、编译安装、配置 MySQL 服务、登录设置等。
本文介绍了在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,包括准备工作、下载源码、编译安装、配置 MySQL 服务、登录设置等。同时,文章还对比了编译源码安装与使用 RPM 包安装的优缺点,帮助读者根据需求选择最合适的方法。通过具体案例,展示了编译源码安装的灵活性和定制性。
153 2
|
1月前
|
SQL 关系型数据库 MySQL
|
2月前
|
NoSQL 关系型数据库 MySQL
MySQL与Redis协同作战:优化百万数据查询的实战经验
【10月更文挑战第13天】 在处理大规模数据集时,传统的关系型数据库如MySQL可能会遇到性能瓶颈。为了提升数据处理的效率,我们可以结合使用MySQL和Redis,利用两者的优势来优化数据查询。本文将分享一次实战经验,探讨如何通过MySQL与Redis的协同工作来优化百万级数据统计。
94 5
|
1月前
|
监控 关系型数据库 MySQL
数据库优化:MySQL索引策略与查询性能调优实战
【10月更文挑战第26天】数据库作为现代应用系统的核心组件,其性能优化至关重要。本文主要探讨MySQL的索引策略与查询性能调优。通过合理创建索引(如B-Tree、复合索引)和优化查询语句(如使用EXPLAIN、优化分页查询),可以显著提升数据库的响应速度和稳定性。实践中还需定期审查慢查询日志,持续优化性能。
123 0
|
2天前
|
存储 Oracle 关系型数据库
数据库传奇:MySQL创世之父的两千金My、Maria
《数据库传奇:MySQL创世之父的两千金My、Maria》介绍了MySQL的发展历程及其分支MariaDB。MySQL由Michael Widenius等人于1994年创建,现归Oracle所有,广泛应用于阿里巴巴、腾讯等企业。2009年,Widenius因担心Oracle收购影响MySQL的开源性,创建了MariaDB,提供额外功能和改进。维基百科、Google等已逐步替换为MariaDB,以确保更好的性能和社区支持。掌握MariaDB作为备用方案,对未来发展至关重要。
10 3
|
2天前
|
安全 关系型数据库 MySQL
MySQL崩溃保险箱:探秘Redo/Undo日志确保数据库安全无忧!
《MySQL崩溃保险箱:探秘Redo/Undo日志确保数据库安全无忧!》介绍了MySQL中的三种关键日志:二进制日志(Binary Log)、重做日志(Redo Log)和撤销日志(Undo Log)。这些日志确保了数据库的ACID特性,即原子性、一致性、隔离性和持久性。Redo Log记录数据页的物理修改,保证事务持久性;Undo Log记录事务的逆操作,支持回滚和多版本并发控制(MVCC)。文章还详细对比了InnoDB和MyISAM存储引擎在事务支持、锁定机制、并发性等方面的差异,强调了InnoDB在高并发和事务处理中的优势。通过这些机制,MySQL能够在事务执行、崩溃和恢复过程中保持
13 3
|
2天前
|
SQL 关系型数据库 MySQL
数据库灾难应对:MySQL误删除数据的救赎之道,技巧get起来!之binlog
《数据库灾难应对:MySQL误删除数据的救赎之道,技巧get起来!之binlog》介绍了如何利用MySQL的二进制日志(Binlog)恢复误删除的数据。主要内容包括: 1. **启用二进制日志**:在`my.cnf`中配置`log-bin`并重启MySQL服务。 2. **查看二进制日志文件**:使用`SHOW VARIABLES LIKE &#39;log_%&#39;;`和`SHOW MASTER STATUS;`命令获取当前日志文件及位置。 3. **创建数据备份**:确保在恢复前已有备份,以防意外。 4. **导出二进制日志为SQL语句**:使用`mysqlbinlog`
17 2
|
15天前
|
关系型数据库 MySQL 数据库
Python处理数据库:MySQL与SQLite详解 | python小知识
本文详细介绍了如何使用Python操作MySQL和SQLite数据库,包括安装必要的库、连接数据库、执行增删改查等基本操作,适合初学者快速上手。
100 15

推荐镜像

更多