MYSQL学习整理(1)概述、SELECT命令

       简单自我介绍,本硕土木工程,研究生期间方向为结构健康监测与深度学习的交叉学科。

       MYSQL零基础小白,梳理学习内容督促自己,也为方便自己日后回忆,如果能够帮到广大网友一丝就更好了。

这里推荐宋红康老师的MySQL课程,学习资源(如有侵权请联系删除):MySQL数据库教程天花板,mysql安装到mysql高级,强!硬!_哔哩哔哩_bilibili




第一章 数据库概述

数据库的意义:

持久化(persistence):把数据保存到可掉电式存储设备中以供之后使用。大多数情况下,特别是企业级应用,数据持久化意味着将内存中的数据保存到硬盘上加以”固化”,而持久化的实现过程大多通过各种关系数据库来完成。

持久化的主要作用是将内存中的数据存储在关系型数据库中,当然也可以存储在磁盘文件、XML数据文件中。

目前互联网上常见的数据库管理软件有Oracle、MySQL、MS SQL Server、DB2、PostgreSQL、Access、Sybase、Informix这几种。以下是2021年DB-Engines Ranking 对各数据库受欢迎程度进行调查后的统计结果:

博主选择MySQL因为其开源且使用成本较低,Oracle数据库较适合大型跨国企业使用。实际上重点不在于选择哪一种SQL语言,更重要的是学习运用数据库的思想。

数据库类型分为关系型数据库(RDBMS),包括Oracle和MySQL;非关系型数据库(非RDBMS),包括键值型数据库,文档型数据库,搜索引擎数据库等。该部分内容不是本文重点不再赘述。

数据库的子类为表

  • 一个数据库中可以有多个表,每个表都有一个名字,用来标识自己。表名具有唯一性。
  • ORM思想 (Object Relational Mapping)体现:
    数据库中的一个表 <---> Java或Python中的一个类
    表中的一条数据 :<---> 类中的一个对象(或实体)
    表中的一个列:     <---> 类中的一个字段、属性(field)

 表与表之间的数据可以产生联系,不同表之间需要用到外键生成联系,外键需要遵从以下原则:

  • 外键唯一:主表的主键和从表的外键(唯一),形成主外键关系,外键唯一。
  • 外键是主键:主表的主键和从表的主键,形成主外键关系。

初显来看,若我们需要从A表A列引出B表C列,需要B表中某列与A表A列有对应关系或者需要中间表引出。

(MySQL下载与环境配置略,资源随处可见,如有需要联系博主)

第二章 基本的SELECT语句

SQL语言在功能上主要分为如下3大类:

DDL(Data Definition Languages、数据定义语言),这些语句定义了不同的数据库、表、视图、索 引等数据库对象,还可以用来创建、删除、修改数据库和数据表的结构。 主要的语句关键字包括 CREATE 、 DROP 、 ALTER 等。

DMLData Manipulation Language、数据操作语言),用于添加、删除、更新和查询数据库记 录,并检查数据完整性。 主要的语句关键字包括 INSERT 、 DELETE 、 UPDATE 、 SELECT 等。 SELECT是SQL语言的基础,最为重要。

DCLData Control Language、数据控制语言),用于定义数据库、表、字段、用户的访问权限和 安全级别。 主要的语句关键字包括 GRANT 、 REVOKE 、 COMMIT 、 ROLLBACK 、 SAVEPOINT 等。

MySQL 在 Windows 环境下是大小写不敏感的,但为书写规范还是建议采用统一的书写格式

注释方法

单行注释:#注释文字(MySQL特有的方式)
单行注释:-- 注释文字(--后面必须包含一个空格。)
多行注释:/* 注释文字 */

数据导入指令

在命令行客户端登录mysql,使用source指令导入

mysql> source d:\mysqldb.sql

需要注意,我在Navicat Premium 16(如有需要联系博主)里无法使用该命令导入,原因现在还不知道,但直接在命令行客户端中使用该命令可以导入,或者在Navicat直接导入也可以。

SELECT ... FROM

  • 语法:

SELECT    标识选择哪些列
FROM       标识从哪个表中选择

  • 选择全部列(注意星号,没有空格):

SELECT *
FROM departments;

为节约时间与计算资源,在生产环境下,不推荐你直接使用SELECT * 进行查询。

  • 选择特定的列:

SELECT department_id, location_id

FROM departments;

列的别名

重命名一个列

SELECT last_name AS name, commission_pct comm
FROM employees;

两种方法 AS以及空格;AS、空格前为原名,AS、空格后为重命名;

需注意,重命名时推荐使用双引号,因为若没有双引号切重命名中含有空格会报错。

去除重复行

默认情况下,查询会返回全部行,包括重复行:

SELECT department_id
FROM employees;

在SELECT语句中使用关键字DISTINCT去除重复行:

SELECT DISTINCT department_id
FROM employees;

 需注意,若选中两列及以上列,只会去除所有列都相同的重复行,可能与需求结果不同。

空值参与运算

所有运算符或列值遇到null值,运算的结果都为null

SELECT employee_id,salary "月工资" ,commission_pct,
12 * salary * (1 + commission_pct) "年工资"
FROM employees;

当公式中某个值为null时,输出结果也为null

需注意null不等同于0,如需将null替换为0,需加入三元运算符如下:

SELECT employee_id,salary "月工资" ,commission_pct,
12 * salary * (1 + IFNULL(0,commission_pct))"年工资"
FROM employees;

着重号  `  `

需要保证表中的字段、表名等没有和保留字、数据库系统或常用方法冲突。如果真的相同,请在
SQL语句中使用一对 `   `(着重号)引起来。

理解起来就是,我们自己命名的东西需要与系统指令及保留字(已定义过的字)不重复,如需重复就要使用着重号。

显示表结构

DESCRIBE employees;#显示表的相关信息


Field:表示字段名称。
Type:表示字段类型,这里 barcode、goodsname 是文本型的,price 是整数类型的。
Null:表示该列是否可以存储NULL值。
Key:表示该列是否已编制索引。PRI表示该列是表主键的一部分;UNI表示该列是UNIQUE索引的一部分;MUL表示在列中某个给定值允许出现多次。
Default:表示该列是否有默认值,如果有,那么值是多少。
Extra:表示可以获取的与给定列有关的附加信息,例如AUTO_INCREMENT等。

过滤数据WHERE

SELECT 字段1,字段2
FROM 表名
WHERE 过滤条件

需注意,WHERE语句需要紧跟随FROM

SELECT employee_id, last_name, job_id, department_id
FROM employees
WHERE department_id = 90 ;

总结

感觉写的内容有些具体了,下次准备删减一些。如果有和我一样初学MySQL的小白欢迎交流,也欢迎大神批评指点

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值