MySQL数据库,基础初学者必备知识

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS PostgreSQL,高可用系列 2核4GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: 本文讲解:MySQL数据库基础初学者必备知识

 image.gif编辑

image.gif编辑

目录

1.数据库的基本操作

1.1显示所有数据库

1.2创建数据库

1.3删除数据库

2.数据库的类型

2.1数值类型

2.2字符串类型

2.3日期类型

3.表的简单操作

3.1创建一个表

3.2显示表的结构

3.3显示数据库中的所有表

3.4删除指定表

4.实战练习

image.gif编辑

1.数据库的基本操作

数据库的基本操作为:显示数据库,创建数据库,删除数据库,以及显示表结构、创建表、删除表。本期内容主要带大家了解数据库中的类型,以及如何操作数据库的一些基本方法。


1.1显示所有数据库

我们使用show databases命令来显示。

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| mytest             |
| performance_schema |
| student_m          |
| sys                |
| test               |
+--------------------+
7 rows in set (0.00 sec)

image.gif

image.gif编辑

上方代码中的最后一行 7 rows in set (0.00 sec) 意为:有7行在列表里面花了0秒。


1.2创建数据库

我们使用create database 数据名 来创建,如创建一个名为fristcreate的数据库。

mysql> create database fristcreate;
Query OK, 1 row affected (0.00 sec)

image.gif

image.gif编辑

上述代码最后一行,显示 Query OK, 1 row affected (0.00 sec) 意味着我们的数据库已经创建成功。我们可以使用显示所有数据库来查看该数据库是否创建成功。

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| fristcreate        |
| mysql              |
| mytest             |
| performance_schema |
| student_m          |
| sys                |
| test               |
+--------------------+
8 rows in set (0.00 sec)

image.gif

我们可以看到,在上述结构中的第二行多出了我们刚刚创建的fristcreate数据库。

当然我们在创建数据库的时候可以加上一条语句:if not exits 来确认创建数据库时该数据库是否存在如果有则创建不了,语法格式为:create database if not exits 数据库名;


1.3删除数据库

删除数据库我们使用drop database 数据库名; 语句来实现删除,也可以加上if exists 来确认该数据库是否存在:drop database if exists 数据库名;删除刚刚创建的fristcreate数据库:

mysql> drop database fristcreate;
Query OK, 0 rows affected (0.00 sec)

image.gif

image.gif编辑

当出现以上信息,代表着数据库删除成功。我们来显示所有数据库就能看到,该数据库已被删除:

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| mytest             |
| performance_schema |
| student_m          |
| sys                |
| test               |
+--------------------+
7 rows in set (0.00 sec)

image.gif


2.数据库的类型

2.1数值类型

数据类型 大小 说明 对应Java类型
BIT[(M)] M可指定大小,默认为1 二进制数,M范围从1到64,
存储数值范围从0到2^M-1
Boolean,在数据库中默认为0,可设置为1
TINYINT 1字节 Byte
SMALLINT 2字节 Short
INT 4字节 Integer
BIGINT 8字节 Long
FLOAT(M,D) 4字节 单精度,M指定长度,D指定
小数位数。会发生精度丢失,不稳定。
Float
DOUBLE(M,D) 8字节 Double
DECIMAL(M,D) M/D最大值+2 双精度,M指定长度,D指定
小数位数。不会发生精度丢失,稳定。
BigDecimal
NUMERIC(M,D) M/D最大值+2 双精度,M指定长度,D指定
小数位数。不会发生精度丢失,稳定。
BigDecimal

2.2字符串类型

数据类型 大小 说明 对应java类型
VARCHAR (SIZE) 0-65,535字节 可变长度字符串 String
TEXT 0-65,535字节 长文本数据 String
MEDIUMTEXT 0-16 777 215字节 中等长度文本数据 String
BLOB 0-65,535字节 二进制形式的长文本数据 byte[]

2.3日期类型

数据类型 大小 说明 对应的Java类型
DATETIME 8字节 1000~9999年,不会进行时区检索和转换 java.util.Date、
java.sql.Timestamp
TIMESTAMP 4字节 1970~2038年,自动进行检索时区并进行转换 java.util.Date、
java.sql.Timestamp

3.表的简单操作

一个表的结构如下:

image.gif编辑


3.1创建一个表

创建一个表我们按照以下语法来创建:

mysql> create tablename(
    -> 字段1 类型
    -> 字段2 类型
    -> 字段3 类型
    -> );

image.gif

如创建一个学生表:

mysql> use mytest;
Database changed
mysql> create table student(
    -> id int,
    -> name varchar(10),
    -> grade int
    -> );
Query OK, 0 rows affected (0.02 sec)

image.gif

image.gif编辑

当下方出现上图所提示语句,就代表着该表已完成创建。注意,在创建一个表的时候,得先使用数据库。


3.2显示表的结构

显示表的结构我们使用desc 表名; 来显示。

mysql> desc student;
+-------+-------------+------+-----+---------+-------+
| Field | Type        | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| id    | int(11)     | YES  |     | NULL    |       |
| name  | varchar(10) | YES  |     | NULL    |       |
| grade | int(11)     | YES  |     | NULL    |       |
+-------+-------------+------+-----+---------+-------+
3 rows in set (0.00 sec)

image.gif


3.3显示数据库中的所有表

我们使用 show tables from 数据库名;来查看该数据库中的所有表

mysql> show tables from mytest;
+------------------+
| Tables_in_mytest |
+------------------+
| student          |
+------------------+
1 row in set (0.00 sec)

image.gif

我们可以看到显示了,刚刚创建的student表。


3.4删除指定表

删除指定表我们使用 drop table 表名;这个sql语句来删除,如删除上方的student表。

mysql> drop table student;
Query OK, 0 rows affected (0.00 sec)

image.gif

删除成功后,我们来显示mytest数据库中的表:

mysql> show tables from mytest;
Empty set (0.00 sec)

image.gif

image.gif编辑

显示为空,代表mytest数据库中没有任何的表,因此我们删除student表成功了。


4.实战练习

有一商店的数据,记录客户及购物情况,有以下三个表组成:

    • 商品goods(商品编号goods_id,商品名goods_name, 单价unitprice, 商品类别category, 供应商provider)
    • 客户customer(客户号customer_id,姓名name,住址address,邮箱email,性别sex,身份证card_id)
    • 购买purchase(购买订单号order_id,客户号customer_id,商品号goods_id,购买数量nums)

    实现目标:在同一个数据库下,创建这个三个表并展示表解构。下面为解题步骤,大家可以先根据上述知识点来自行编写,如有不会可参考下方代码。

    首先,我们要先创建一个数据库

    mysql> create database mytest;
    Query OK, 1 row affected (0.00 sec)
    mysql> use mytest;
    Database changed

    image.gif

    创建一个名为mytest的数据库,并且使用该数据库。


    其次,根据题目要求,创建相应的参数与类型的表。

    创建goods

    mysql> create table if not exists goods(
        -> goods_id int,
        -> goods_name varchar(15),
        -> unitprice int,
        -> category varchar(20),
        -> provider varchar(30)
        -> );
    Query OK, 0 rows affected (0.03 sec)

    image.gif

    创建customer表

    mysql> create table if not exists customer(
        -> customer_id int,
        -> name varchar(15),
        -> address varchar(30),
        -> email int,
        -> sex varchar(5),
        -> card_id int
        -> );
    Query OK, 0 rows affected (0.03 sec)

    image.gif

    创建purchase表

    mysql> create table if not exists purchase(
        -> order_id int,
        -> customer_id int,
        -> goods_id int,
        -> nums int
        -> );
    Query OK, 0 rows affected (0.03 sec)

    image.gif


    显示数据库里面的所有表

    mysql> show tables from mytest;
    +------------------+
    | Tables_in_mytest |
    +------------------+
    | customer         |
    | goods            |
    | purchase         |
    +------------------+
    3 rows in set (0.00 sec)

    image.gif

    显示数据库中的表,我们使用show tables from 表名这个sql语句来进行显示。


    显示表的结构,拿customer表来举例:

    mysql> desc customer;
    +-------------+-------------+------+-----+---------+-------+
    | Field       | Type        | Null | Key | Default | Extra |
    +-------------+-------------+------+-----+---------+-------+
    | customer_id | int(11)     | YES  |     | NULL    |       |
    | name        | varchar(15) | YES  |     | NULL    |       |
    | address     | varchar(30) | YES  |     | NULL    |       |
    | email       | int(11)     | YES  |     | NULL    |       |
    | sex         | varchar(5)  | YES  |     | NULL    |       |
    | card_id     | int(11)     | YES  |     | NULL    |       |
    +-------------+-------------+------+-----+---------+-------+
    6 rows in set (0.00 sec)

    image.gif

    显示表结构就比较简单,之间使用desc 表名即可。

    总结:通过这篇博文,我们可以知道当我们创建成功数据库以及表的时候都会显示出Query Ok ...这段语句,那么这段语句就代表着我们操作正常。在我们显示数据库结构或表结构时候,下方会出现* rows in set (.. sec)这段语句,这段语句就代表着我们数据的行数。


    本期博客到这里就结束了,内容非常的简单,感谢您的阅读。

    相关实践学习
    每个IT人都想学的“Web应用上云经典架构”实战
    本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
    MySQL数据库入门学习
    本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
    相关文章
    |
    API Python Windows
    python2.7 win32com 避坑指南
    python2.7 win32com 避坑指南
    961 0
    |
    计算机视觉 索引
    OpenCV(三十五):凸包检测
    OpenCV(三十五):凸包检测
    238 0
    |
    JavaScript 前端开发 Java
    FFmpeg开发笔记(四十七)寒冬下安卓程序员的几个技术转型发展方向
    IT寒冬使APP开发门槛提升,安卓程序员需转型。选项包括:深化Android开发,跟进Google新技术如Kotlin、Jetpack、Flutter及Compose;研究Android底层框架,掌握AOSP;转型Java后端开发,学习Spring Boot等框架;拓展大前端技能,掌握JavaScript、Node.js、Vue.js及特定框架如微信小程序、HarmonyOS;或转向C/C++底层开发,通过音视频项目如FFmpeg积累经验。每条路径都有相应的书籍和技术栈推荐,助你顺利过渡。
    267 3
    FFmpeg开发笔记(四十七)寒冬下安卓程序员的几个技术转型发展方向
    |
    9月前
    |
    JSON 自然语言处理 Serverless
    基于阿里云通义千问开发智能写作助手
    现代办公中,撰写邮件、会议记录、报告等任务耗费大量时间。一个智能写作助手能显著提升效率,帮助用户快速生成高质量的文本内容。阿里云通义千问作为阿里巴巴推出的强大大语言模型(LLM),具备出色的自然语言理解与生成能力,非常适合用于开发智能写作工具。本博客将介绍如何基于通义千问构建一个智能写作助手,实现高效的内容生成和编辑功能。
    511 2
    |
    11月前
    |
    机器学习/深度学习 人工智能 算法
    小白教程-阿里云快速搭建Stable-Diffusion WebUI环境+免费试用
    Stable-Diffusion 是目前热门的AIGC图像生成方案,通过开源与社区共享模型的方式,成为AI艺术与创意产业的重要工具。本文介绍通过阿里云快速搭建SD WebUI的服务,并有免费试用权益,适合新手入门。通过详细步骤指导,帮助读者轻松上手,享受创作乐趣。
    1981 0
    |
    12月前
    |
    存储 Cloud Native 关系型数据库
    Ganos实时热力聚合查询能力解析与最佳实践
    Ganos是由阿里云数据库产品事业部与飞天实验室共同研发的新一代云原生位置智能引擎,集成于PolarDB-PG、Lindorm、AnalyticDB-PG和RDS-PG等核心产品中。Ganos拥有十大核心引擎,涵盖几何、栅格、轨迹等多种数据处理能力,实现了多模多态数据的一体化存储、查询与分析。本文重点介绍了Ganos的热力瓦片(HMT)技术,通过实时热力聚合查询与动态输出热力瓦片,无需预处理即可实现大规模数据秒级聚合与渲染,适用于交通、城市管理、共享出行等多个领域。HMT相比传统网格聚合技术具有高效、易用的优势,并已在多个真实场景中验证其卓越性能。
    219 0
    |
    机器学习/深度学习 数据采集 运维
    基于机器学习的智能运维:提升系统稳定性与效率
    在数字化时代,随着企业对信息技术系统的依赖日益加深,传统的运维模式已难以满足现代业务需求。本文探讨了如何通过机器学习技术优化运维流程,实现故障预测、自动化处理和性能优化,从而提升系统的稳定性和效率。文章首先概述了智能运维的概念及其重要性,随后深入分析了机器学习在故障检测、自动化运维和性能优化方面的应用案例,并讨论了实施智能运维时面临的挑战及应对策略。最后,通过数据支持的分析,展示了智能运维带来的效益,为运维领域的专业人士提供了一种前沿的技术视角和实践指南。
    379 27
    Elasticsearch 查看磁盘占用 查看指定索引磁盘占用
    【7月更文挑战第2天】Elasticsearch 查看磁盘占用 查看指定索引磁盘占用
    |
    存储 关系型数据库 MySQL
    MySQL数据库的表中 NULL 和 空值 到底有什么区别呢?
    一篇短文让你明白MySQL数据库的表中 NULL 和 空值之间的区别!
    5143 0
    MySQL数据库的表中 NULL 和 空值 到底有什么区别呢?
    |
    Linux
    Linux——服务器时间不同步
    Linux——服务器时间不同步
    145 0