MySQL数据库,初学SQL知识点引入

数据库的相关概念:

DB:数据库(Database):

即存储数据的仓库,其本质是一个文件系统。保存了一系列有组织的数据。

DBMS:数据库管理系统(Database Management System):

是一种操纵和管理数据库的大型软件,用于建立、使用和维护数据库,对数据库进行统一管理和控制。用户通过数据库管理系统访问数据库中表内的数据。

SQL:结构化查询语言(Structured Query Language):

专门用来与数据库通信的语言。

RDBMS:关系型数据库(Relational Database Management System):

  • 关系型数据库,模型是把复杂的数据结构归结为简单的二元关系(即二维表格形式)。

  • 关系型数据库以行(row)和列(column)的形式存储数据,以便于用户理解。这一系列的行和列被称为表(table),一组表组成了一个库(database)。

  • 表与表之间的数据记录有关系(relationship)。现实世界中的各种实体以及实体之间的联系均用关系模型类表示。关系型数据库,就是建立在关系模型基础上的数据库。

  • SQL就是关系型数据库的查询语言。

关系型数据库的优势:

  • 复杂查询:可以用SQL语句方便地在一个表以及多个表之间做非常复杂的数据查询。

  • 事务支持:使得对于安全性很高的数据访问要求得以实现。

非关系型数据库:

基于键值对存储数据,不需要经过SQL层的解析,性能非常高。同时,通过减少不常用的功能,进一步提高性能。

关系型数据库设计规则:

  • 关系型数据库的典型数据结构就是数据表,这些数据表的组成都是结构化的。

  • 将数据放到表中,表再放到库中。一个数据库可以有多个表,每一个表都有一个名字,用来标识自己。表名具有唯一性。

  • 表具有一些特性,这些特性定义了数据在表中如何存储(类似于“类”)。

表、记录、字段

  • E-R(entity-relationship,实体-联系)模型中三个主要概念:实体集、属性、联系集。

  • 一个实体集(class)对应于数据库中的一个表(table),一个实体(instance)则对应数据库表中的一行(row),也称为一条记录(record)。一个属性(attribute)对应于数据表中的一列(column),也称为一个字段(field)。

表的关联关系:

  • 表与表之间的数据记录有关系(relationship)。现实世界中的各种实体以及实体之间的各种联系均用关系模型来表示。

  • 四种关联关系:一对一关系,一对多关系,多对多关系,自我引用。

SQL的分类:

DDL(Data Define Language、数据定义语言):这些语句定义了不同的数据库、表、视图、索引等数据库对象,还可以用来创建、删除、修改数据库和数据表的结构。

主要的语句关键字包括CREATE、DROP、ALTER、RENAME、TRUNCATE等。

DML(Data Manipulation Language、数据操作语言):用于添加、删除、更新和查询数据库记录,并检查数据完整性。

主要的语句关键字包括INSERT、DELETE、UPDATE、SELECT等。

DCL(Data Control Language、数据控制语言):用于定义数据库、表、字段、用户的访问权限和安全级别。

主要的语句关键字包括GRANT、REVOKE、COMMIT、ROLLBACK、SAVEPOINT等。

由于查询语句使用的比较频繁,所以很多人将查询语句分出类作为一类:DQL(数据查询语言),也有将COMMIT、ROLLBACK去出来称为TCL(事物控制语言)。

SQL语言的规则与规范

基本规则:

  • SQL可以写在一行或多行。为了提高可读性,各子句分行写,必要时使用缩进。

  • 每一条命令以;或\g或\G结束。

  • 关键字不能被缩写也不能分行。

  • 关于标点符号:

               · 必须保证所有的括号、引号是成对结束的。

               · 必须使用英文状态下的半角输入方式(即要用英文输入写代码,不能用非英文输入)。

               · 字符串型和日期时间类型的数据可以使用单引号表示

               · 列的别名,尽量使用双引号,不建议省略as。

MySQL大小写的规范(建议遵守)

  • MySQL在Window环境下大小写不敏感

  • MySQL在Linux环境下大小写敏感

                数据库名、表名、表别名、变量名是严格区分大小写的。

                SQL关键字、函数名、绑定变量等都大写。

注释:

单行注释:

        方式①:#注释文字(MySQL特有)

        方式②:-- 注释文字(--后面必须有一个空格

多行注释:

        /*注释文字*/

命名规则:

  • 数据库、表名不得超过30个字符,变量限制为29个。

  • 必须只能包含A-Z、a-z、0-9、_ 共63个字符。

  • 数据库名、表名、字段名等对象名中间不要包含空格

  • 同一个MySQL软件中,数据库不能重名。同一个库中,表不能重名。同一个表中,字段不能重名。

  • 必须保证字段没有和保留字、数据库系统或常用方法冲突。如果坚持使用,要在SQL语句中使用`(着重号)引起来。

  • 保持字段名和类型的一致性,在命名字段并为其指定数据类型的时候一定要保证一致性。假如数据类型在一个表里是整数,在另一个表里就别变成整数。

基本的SELECT ... FROM ... 结构:

SELECT ...(字段1,字段2,……) FROM ...(表名)

表名指字段所在的表名,如果字段并不在某个表,使用dual(伪表)当表名。

*符号放在字段处表示相应表中的所有的字段。

列的别名:

  • 重命名一个列,便于计算(建议别名简短,并见名知意)。

  • 紧跟列名,可以选择:在列名和别名之间加入关键字AS(也可以省略)。别名使用双引号,以便于在别名中包含空格或特殊的字符并区分大小写。

  • AS全称:alias,别名。

例如:

SELECT sigma_man sigma ,  best_friend AS bsfd FROM classmate ,  teacher AS  "my teacher";

去除重复行:

在SELECT关键字后加上DISTINCT关键字即可将指定字段出现重复的行去除。

例如:

SELECT DISTINCT member_id FROM employee;

空值参与运算:

空值:NULL(意味着“无”)

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

着重号(` `):

若字段名、表名和保留字、数据库系统或常用方法冲突,就要加上着重号` `引起来。

例如:SELECT * FROM `ORDER`

 查询常数:

查询操作时,若查询的字段为一个常数,则会有相应的常数的列,列的内容都是此常数。

显示表结构:

DESCRIBE 表名; (DESCRIBE也可以用DESC替换)

用于显示表中的字段的详细信息。

过滤数据:

语法:

SELECT 字段1,字段2……

FROM 表名

WHERE 过滤条件

·使用WHERE语句,将不满足条件的行过滤掉。

·WHERE子句紧跟FROM子句

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/206924.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

董明珠:格力从制造商到自主创新企业的转变之路

中国制造业的崛起是近几十年来全球经济舞台上最显著的事件之一,而格力电器作为中国制造业的代表之一,其漫长而坚定的自主创新之路,将其从一家传统的制造商转变为一个自主创新的企业,是中国制造业发展历程中的一个亮点。本文将探讨…

虚拟化之指令的Trap和仿真

有时,虚拟机监控程序需要在虚拟机(VM)中模拟操作。例如,VM内的软件可能尝试配置与功耗管理或缓存一致性相关的低级处理器控件。通常,您不希望将VM直接访问这些控件,因为它们可能被用于突破隔离,或影响系统中的其他VM。 trap在执行给定操作(例如读取寄存器)时引发异常…

2023年全国职业院校技能大赛-大数据应用开发-数据可视化

可视化题目与以往相同,做法类似,我这里展示得到语句后处理优化以后的代码,以函数式来写可视化,比以前400-500多行代码简洁到100多行。其他题目见本栏目,那里面的代码都是没有优化后的,这次主要以效率和精简…

IDEA版SSM入门到实战(Maven+MyBatis+Spring+SpringMVC) -Mybatis查询中返回值四种情况

第一章 Mybatis查询中返回值四种情况 1.1 查询单行数据返回单个对象 /*** 通过id获取员工信息*/ public Employee selectEmpById(int empId);<select id"selectEmpById" resultType"employee">SELECTid,last_name,email,salaryFROMtbl_employeeWHE…

Backend - Django JsonResponse HttpResponse

目录 一、关系 二、使用 &#xff08;一&#xff09;data 字典传值 1. HttpResponse &#xff08;1&#xff09;写法 &#xff08;2&#xff09;前端接收 HttpResponse 回传的值 2. JsonResponse &#xff08;1&#xff09;写法 &#xff08;2&#xff09;前端接收 Js…

如何解压没有密码的7-zip文件?

7z压缩包设置了密码&#xff0c;解压的时候就需要输入正确对密码才能顺利解压出文件&#xff0c;正常当我们解压文件或者删除密码的时候&#xff0c;虽然方法多&#xff0c;但是都需要输入正确的密码才能完成。忘记密码就无法进行操作。 那么&#xff0c;忘记了7z压缩包的密码…

文件重命名大师:批量修改名称的终极指南

在处理大量文件时&#xff0c;我们往往需要修改它们的名称。无论是为了整理、归档还是为了满足某种特定需求&#xff0c;重命名文件都是一项常见的任务。然而&#xff0c;手动一个一个地修改文件名无疑是一项耗时且容易出错的工作。幸运的是&#xff0c;我们可以借助一些强大的…

Python---类的综合案例

1、需求分析 设计一个Game类 属性&#xff1a; 定义一个类属性top_score记录游戏的历史最高分 定义一个实例属性player_name记录当前游戏的玩家姓名 方法&#xff1a; 静态方法show_help显示游戏帮助信息 类方法show_top_score显示历史最高分 实例方法start_game开始当前…

13、pytest为失败的断言定义自己的解释

官方实例 # content of ocnftest.py from test_foocompare import Foodef pytest_assertrepr_compare(op, left, right):if isinstance(left, Foo) and isinstance(right, Foo) and op "":return["Comparing Foo instances:",f" vals:{left.val} !…

震坤行走进中国移动电商平台业务推介启动会助力政企采购升级

震坤行走进中国移动电商平台业务推介启动会助力政企采购升级 7月19日&#xff0c;震坤行受邀参与中国移动供应链管理中心在北京举办的“和悦彩同行 创供赢未来”主题活动&#xff0c;走入客户一线面对面沟通&#xff0c;依托MRO领域服务能力为客户提供专业解决方案&#xff0c…

node后端接口无法插入数据为emoji的表情的问题

原因 emoji的表情一般是这样的\xF0\x9F\x98\x80或者是\xF0\x9F\x98 &#xff0c;事实上 一般数据库的utf8的编码类型都是能保存\xF0\x9F\x98 但是不能保存\xF0\x9F\x98\x80这种样的emoji&#xff0c;要将数据库编码格式为utf8mb4 也就是utf8的超集 另外&#xff0c;除了 数据库…

angular状态管理方案(ngrx)

完全基于redux的ngrx方案&#xff0c;我们看看在angular中如何实现。通过一个简单的计数器例子梳理下整个流程 一 安装 &#xff1a;npm i ngrx/store 这里特别要注意一点&#xff1a;安装 ngrx/store的时候会出现和angular版本不一致的问题 所以检查一下angular/core的版本…

使用 HPA 和 TopologySpreadConstraints 实现可用区间等比扩容

1. 原理介绍 设置 HPA 每次最小扩容 Pod 数为可用区数量&#xff0c;以期可用区间 Pod 同步扩容设置 TopologySpreadConstraints 可用区分散 maxSkew 为 1&#xff0c;以尽可能可用区间 Pod 均匀分布 2. 实验验证 2.1. 准备 Kind 集群 准备如下配置文件&#xff0c;命名为 …

软件测试面试题及答案解析

在软件测试领域&#xff0c;面试是求职者进入这个行业的重要途径。为了帮助大家更好地应对软件测试面试&#xff0c;本文将为大家提供一些常见的软件测试面试题及答案解析。 请简要介绍一下软件测试的目的和重要性。 答&#xff1a;软件测试的目的是确保软件产品的质量&#…

千问模型测试环境配置

配置千问环境比较顺利&#xff0c;有些由于速度问题较慢&#xff0c;添加源之后提速很多&#xff0c;记录如下&#xff1a; 1.创建虚拟环境 conda create -p /datanas3/chenjing/envs/qwen python3.8 2.激活虚拟环境 conda activate /datanas3/chenjing/envs/qwen 3.添加源 co…

“身份证信息批量核验:高效解决管理难题,轻松提升工作效率“

尊敬的读者们&#xff0c;您是否曾经因为身份证信息的核验而感到烦恼&#xff1f;是否曾经因为手动核验而感到繁琐和耗时&#xff1f;现在&#xff0c;我们向您介绍一款全新的工具——身份证信息批量核验器&#xff0c;它将帮助您一键解决管理难题&#xff0c;让工作事半功倍&a…

尝试通过AI模型进行简单的编码

一、前言 最近尝试通过AI来编程&#xff0c;总体感觉还是能处理写简单的问题&#xff0c;复杂的问题目前还是无法解决。主要的痛点还是数据噪音&#xff0c;就是AI永远不会承认它不会&#xff0c;它会给你的一个错误的信息&#xff0c;它也不会告诉你你的问题它暂时无法完整正…

Python基础语法详解,零基础入门必须掌握的知识点

文章目录 一、Python输出1、repr() 或 str() 转成字符串2、字符串填充空格进行格式化3、!a (使用 **ascii()**), !s (使用 **str()**) 和 !r (使用 **repr()**) 可以用于在格式化某个值之前对其进行转化 二、Python标识符三、Python保留字符&#xff08;关键字&#xff09;四、…

代码随想录算法训练营第四十五天| 70 爬楼梯 322 零钱兑换 279 完全平方数

目录 70 爬楼梯 322 零钱兑换 279 完全平方数 70 爬楼梯 本题可以转化为完全背包问题进行解答。 class Solution { public:int climbStairs(int n) {vector<int>f(n 2);f[0] 1;int m 2;for(int i 1;i < n;i){for(int j 1;j < m;j){if(i > j)f[i] f[i - j]…

[Python系列] 文字转语音

什么是TTS TTS 是 Text-to-Speech 的缩写&#xff0c;中文称为“文本到语音”。它是一种将书面文本转换为自然听起来的语音的技术。TTS 技术广泛应用于各种场景&#xff0c;如智能助手、语音合成、电子阅读器等。 TTS 技术通过机械的、电子的方法产生人造语音。它隶属于…