MySQL深入学习之基础知识

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

数据库

常见概念

  1. 数据库(database):保存有组织数据的容器(通常是一个文件或一组文件)
  2. 表(table):一种结构化的清单文件,可用于存储特定类型的数据
  3. 模式(schema):关于数据库和表的布局及特性信息
  4. 列(column):表中的一个字段,属于同一种类的一组数据
  5. 数据类型(datatype):数据库中每列都有特定的一种数据类型,如数字、字符串等
  6. 行(row):表中的一个记录(record),是相关联(属于同一对象)的一组数据
  7. 主键(primary key):表中每一行都应有的唯一标识符,能够区分每一个行,但并非必须存在主键,通常不进行更新操作

SQL

SQL(Structured Query Language,结构化查询语言)是一种专门用来与数据库通信的语言,其并非是编程语言。

SQL 的优点:

SQL 并不指定某一个 DBMS,在大多数 DBMS 中 SQL 都是通用的(但是不同的 DBMS 可能有不同的实现)

SQL 语法简单

SQL 能够进行复杂的数据库操作

MySQL

介绍

MySQL 是一个 RDBMS,即关系数据库管理系统,广泛应用于各个领域,它的主要特点有:

  1. 开源,免费使用
  2. 性能较好
  3. 简单易上手

DBMS 分类

DBMS 按照应用场景可分为两类:

  1. 基于共享文件系统的 DBMS:通常应用于桌面环境,不用于高端和关键应用(如 Microsoft Access)
  2. 基于 C/S 的 DBMS:通常用于服务器,只将结果发送到客户端(如 MySQL)

命令行操作

使用mysql -u[user] -p[pass]命令进入 mysql 命令模式

这里给出常用的参数:

-u // 指定用户名
-p // 指定密码
-P // 指定端口
-h // 指定主机名

Mysql

复制

命令规范

  • 命令输入在mysql>之后
  • 每条命令都使用;结束
  • 使用help命令查看帮助信息

命令

使用help命令查看所有命令:

mysql> help
For information about MySQL products and services, visit:
   http://www.mysql.com/
For developer information, including the MySQL Reference Manual, visit:
   http://dev.mysql.com/
To buy MySQL Enterprise support, training, or other products, visit:
   https://shop.mysql.com/
List of all MySQL commands:
Note that all text commands must be first on line and end with ';'
?         (\?) Synonym for `help'.
clear     (\c) Clear the current input statement.
connect   (\r) Reconnect to the server. Optional arguments are db and host.
delimiter (\d) Set statement delimiter.
ego       (\G) Send command to mysql server, display result vertically.
exit      (\q) Exit mysql. Same as quit.
go        (\g) Send command to mysql server.
help      (\h) Display this help.
notee     (\t) Don't write into outfile.
print     (\p) Print current command.
prompt    (\R) Change your mysql prompt.
quit      (\q) Quit mysql.
rehash    (\#) Rebuild completion hash.
source    (\.) Execute an SQL script file. Takes a file name as an argument.
status    (\s) Get status information from the server.
system    (\!) Execute a system shell command.
tee       (\T) Set outfile [to_outfile]. Append everything into given outfile.
use       (\u) Use another database. Takes database name as argument.
charset   (\C) Switch to another charset. Might be needed for processing binlog with multi-byte charsets.
warnings  (\W) Show warnings after every statement.
nowarning (\w) Don't show warnings after every statement.
resetconnection(\x) Clean session context.
For server side help, type 'help contents'

Mysql

复制

查询所有数据库:

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
4 rows in set (0.01 sec)

Mysql

复制

切换到某一个数据库:

mysql> use [db_name];
Database changed

Mysql

复制

查询当前选择的数据库中的所有可用表:

mysql> show tables;
mysql> show tables from [db_name]; // 查询指定数据库中的所有可用表
+-------------------+
| Tables_in_acgfate |
+-------------------+
| accounts          |
| users             |
+-------------------+
2 rows in set (0.01 sec)

Mysql

复制

查询指定表中的所有列:

mysql> show columns from [table];
+------------+------------------+------+-----+---------+----------------+
| Field      | Type             | Null | Key | Default | Extra          |
+------------+------------------+------+-----+---------+----------------+
| id         | bigint unsigned  | NO   | PRI | NULL    | auto_increment |
| created_at | datetime(3)      | YES  |     | NULL    |                |
| updated_at | datetime(3)      | YES  |     | NULL    |                |
| deleted_at | datetime(3)      | YES  | MUL | NULL    |                |
| username   | longtext         | YES  |     | NULL    |                |
| password   | longtext         | YES  |     | NULL    |                |
| nickname   | longtext         | YES  |     | NULL    |                |
| mail       | longtext         | YES  |     | NULL    |                |
| avatar     | longtext         | YES  |     | NULL    |                |
| gender     | longtext         | YES  |     | NULL    |                |
| level      | tinyint unsigned | YES  |     | NULL    |                |
| join_time  | datetime(3)      | YES  |     | NULL    |                |
| silence    | tinyint(1)       | YES  |     | NULL    |                |
+------------+------------------+------+-----+---------+----------------+
13 rows in set (0.01 sec)

Mysql

复制

数据操作

查询

简单查询

按列查询

SELECT [column] FROM [table];
SELECT [column1], [column2] FROM [table];
SELECT * FROM [table];
  • 以上的简单查询语句得到的记录列表顺序是以数据底层的顺序为依据,而不是记录的先后顺序
  • SQL 语句关键字不区分大小写
  • SQL 语句中所有的空格会被忽略

查询不同的行

表中某些列的数据可能是存在重复的,使用DISTINCT关键字可以查询不重复的单列记录:

SELECT DISTINCT [column] FROM [table]

Mysql

复制

  • 当指定多个列时,DISTINCT 会应用于所有的这些列,也就是多个列的唯一组合,如:
city provience
A1 LA
A2 LA
A1 LB
  • 当存在多个NULL值时,会把其当作同名看待,最终只返回一个NULL

限制结果

使用LIMIT子句可以限定查询的范围,而不是查询整个表的记录:

SELECT [column] FROM [table] LIMIT 5; // 查询前5行
SELECT [column] FROM [table] LIMIT 5, 5 // 查询从第6行开始的5条记录

Mysql

复制

  • 使用 LIMIT 查询得到的结果是按照记录顺序有序输出的
  • LIMIT num1, num2中,num1 从 0 开始,因此 5 代表第六行
  • 当 LIMIT 指定的行数大于符合条件的记录数时,返回最大的记录条数
限定表名
SELECT [table].[column] FROM [table]

Mysql

复制

排序查询

按指定列排序

SELECT [column1] FROM [table] ORDER BY [column2]
SELECT [column1] FROM [table] ORDER BY [column2] DESC // 按降序排序

Mysql

复制

  • ORDER BY 默认升序排序
  • 选择排序的列并不一定要显示
  • 排序的规则(如 A 和 a 的大小)取决于数据库的设置,在字典排序中,A 被视为与 a 相同
按多个列排序
SELECT [column1] FROM [table] ORDER BY [column2], [column3]
SELECT [column1] FROM [table] ORDER BY [column2] DESC, [column3]

Mysql

复制

  • 排序时会按照从左到右的顺序,首先按[column2],排序,接着使用[column3]排序
  • 可以将DESC放在指定列的后面让这一列降序排序
相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
30天前
|
分布式计算 关系型数据库 MySQL
大数据-88 Spark 集群 案例学习 Spark Scala 案例 SuperWordCount 计算结果数据写入MySQL
大数据-88 Spark 集群 案例学习 Spark Scala 案例 SuperWordCount 计算结果数据写入MySQL
47 3
|
25天前
|
关系型数据库 MySQL Java
Django学习二:配置mysql,创建model实例,自动创建数据库表,对mysql数据库表已经创建好的进行直接操作和实验。
这篇文章是关于如何使用Django框架配置MySQL数据库,创建模型实例,并自动或手动创建数据库表,以及对这些表进行操作的详细教程。
55 0
Django学习二:配置mysql,创建model实例,自动创建数据库表,对mysql数据库表已经创建好的进行直接操作和实验。
|
26天前
|
Java 关系型数据库 MySQL
springboot学习五:springboot整合Mybatis 连接 mysql数据库
这篇文章是关于如何使用Spring Boot整合MyBatis来连接MySQL数据库,并进行基本的增删改查操作的教程。
44 0
springboot学习五:springboot整合Mybatis 连接 mysql数据库
|
26天前
|
Java 关系型数据库 MySQL
springboot学习四:springboot链接mysql数据库,使用JdbcTemplate 操作mysql
这篇文章是关于如何使用Spring Boot框架通过JdbcTemplate操作MySQL数据库的教程。
19 0
springboot学习四:springboot链接mysql数据库,使用JdbcTemplate 操作mysql
|
29天前
|
关系型数据库 MySQL 数据库
mysql关系型数据库的学习
mysql关系型数据库的学习
17 0
|
1月前
|
Kubernetes 关系型数据库 MySQL
k8s学习--利用helm部署应用mysql,加深helm的理解
k8s学习--利用helm部署应用mysql,加深helm的理解
147 0
|
2月前
|
SQL 关系型数据库 MySQL
学习MySQL操作的有效方法
学习MySQL操作的有效方法
43 3
|
2月前
|
SQL 关系型数据库 MySQL
如何学习 MySQL?
如何学习 MySQL?
37 3
|
3月前
|
SQL 关系型数据库 MySQL
学习mysql基础操作
【8月更文挑战第20天】学习mysql基础操作
39 1
|
4月前
|
SQL 关系型数据库 MySQL
学习mysql中使用inner join,left join 等
学习mysql中使用inner join,left join 等