MySQL数据库与SQL语言的规范

2023-10-26

在这里插入图片描述

文章中所有操作均是在 MySQL 5.7 版本下进行的

SQL语言

结构化查询语言(Structured Query Language)简称SQL,是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。

结构化查询语言(SQL 语言)是高级的非过程化编程语言,允许用户在高层数据结构上工作。它不要求用户指定对数据的存放方法,也不需要用户了解具体的数据存放方式,所以具有完全不同底层结构的不同数据库系统, 可以使用相同的结构化查询语言作为数据输入与管理的接口。结构化查询语言语句可以嵌套,这使它具有极大的灵活性和强大的功能。

关于 SQL 语言的历史起源,有兴趣的朋友可以搜一搜网络。

SQL语言的功能

SQL 语言具有数据定义、数据操纵和数据控制:

  1. SQL数据定义功能:能够定义数据库的三级模式结构,即外模式、全局模式和内模式结构。在 SQL 中,外模式又叫做视图(View),全局模式简称模式(Schema),内模式由系统根据数据库模式自动实现,一般无需用户过问。
  2. SQL 数据操纵功能:包括对基本表和视图的数据插入、删除和修改,特别是具有很强的数据查询功能。
  3. SQL 的数据控制功能:主要是对用户的访问权限加以控制,以保证系统的安全性。

SQL语言的语句结构

SQL 语言包含6个部分:

  1. 数据查询语言(DQL),也称为“数据检索语句”,用以从表中获得数据,确定数据怎样在应用程序给出。保留字 SELECT 是 DQL(也是所有 SQL)用得最多的动词,其他 DQL 常用的保留字有 WHERE,ORDER BY,GROUP BY和HAVING等等。这些 DQL 保留字常与其它类型的 SQL 语句一起使用。
  2. 数据操作语言(DML),其语句包括动词 INSERT、UPDATE 和 DELETE。它们分别用于添加、修改和删除。
  3. 事务控制语言(TCL),它的语句能确保被 DML 语句影响的表的所有行及时得以更新。包括 COMMIT(提交)命令、SAVEPOINT(保存点)命令、ROLLBACK(回滚)命令。
  4. 数据控制语言(DCL),它的语句通过 GRANT 或 REVOKE 实现权限控制,确定单个用户和用户组对数据库对象的访问。某些 RDBMS 可用 GRANT 或 REVOKE 控制对表单个列的访问。
  5. 数据定义语言(DDL),其语句包括动词 CREATE、ALTER 和 DROP。在数据库中创建新表或修改、删除表(CREAT TABLE 或 DROP TABLE)、为表加入索引等。
  6. 指针控制语言(CCL),像 DECLARE CURSOR,FETCH INTO 和 UPDATE WHERE CURRENT用于对一个或多个表单独行的操作。

SQL语言的编写规范

通用规范

所谓 SQL 语言的通用规范,SQL 语言不区分字母大小写, 单行注释为“-- 注释内容”,多行注释为“/* 注释内容 */”,编写 SQL 语句根据情况进行适量缩进,等等吧。慢慢总结话也是很多的,很多规范都是细节化操作。包括数据库,表,表里的列(字段)命名,其它的命名规范。引号的使用是使用单引号没有双引号,还要避免一些关键字的使用等等。

公司要求的规范

像这部分要求,每个公司都有自己一套的操作规范或者是命名规范。作者理解的如果公司不是很奇葩的情况下,大家的规范基本都应该大同小异,当然会存在不同之处。作者参与过不少的项目和产品,其中也会和别的公司对接的情况,私下的交流(不涉及公司机密前提下)得知基本上大家都是差不多的,也就是所谓的大同小异吧。

MySQL数据库的反引号

反引号在哪?在数字键 1 左边,也就是 Esc 键的下面,是在英文输入法下的输入的。它大部分工作是用来区分关键字或者保留字用的。

比如创建一个表 “create table desc;”,这个命令是报错的,因为使用了“desc”这个关键字。我们应该尽量避免这么做,但是由于特殊原因必须这么定义,那只能通过反引号“create table `desc`”。

再看一个例子,如果有一个表“create table `test`(`desc` varchar(50));”,表结构非常简单。如果 SQL 语句是这样的“select desc from test where …”,这肯定是报错的,应该用如下 SQL 语句“select `desc` from `test` where …”,其它操作语句也是如此。

结语

我们不管在学习什么数据库,比如 MySQL,Oracle,MSSQLServer 等关系型数据库管理系统的时候,我们如何操作这些数据库,首先不同的数据库操作上是存在差异的,但是当我们进入数据库之后都是通过 SQL 语句去操作数据库的。当然会随着技术的深入,各个数据库之间确实存在 SQL 语句的差异,但是这些都是细微的差异。

所以有些朋友会引起概念的混淆,SQL 语言是一种独立的特殊目的的编程语言,它是用来存取数据以及查询、更新和管理数据库的,所以在学习的这些关系型数据库的时候必须要学习 SQL 语言,甚至换了一种数据库之后还要去学习它们之间的细微差异。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MySQL数据库与SQL语言的规范 的相关文章

  • 同一配置文件上的两个不同提供程序

    我在用着实体框架 6 1 0 I have 2 家提供者 MysqlClient 和 SQLServerCE 我需要创建2个不同的DBContext 这迫使我创造2个配置类因为mysql有一些不同的东西 但是当我初始化应用程序时 Datab
  • 映射 mysql 中同一个表的多个值

    您好 我必须使用另一个表中的值 id 获取文本值 表 1 包含值 ID 表 2 包含名称和值 ID 表 1 SEVERITY OCCURENCE DETECTABILITY 2 3 4 表 2 id name value 1 Very Hi
  • 如何修改现有表以添加时区

    我有一个包含 500 多个表的大型应用程序 我必须将应用程序转换为时区感知 当前应用程序使用new java util Date GETDATE 与服务器的时区 即没有任何时区支持 我已将这项任务分为几个步骤 以便于开发 我确定的第一个步骤
  • Mysql 时间匹配连接

    我有两个表cpuinfo和jobinfo 我想使用这两种数据创建报告 tabes CREATE TABLE cpuinfo id int 11 NOT NULL AUTO INCREMENT usagetime datetime DEFAU
  • 在 C# 中,当有人插入、删除或修改记录时,如何从 MySQL 获取事件?

    我正在 WPF Net 中开发一个程序 我需要知道何时有人对数据库的任何表进行更改 这个想法是在数据库发生更改时从数据库接收一个事件 我读了很多文章 但找不到解决我的问题的方法 亲切的问候 最好的解决方案是使用消息队列 在您的应用程序向数据
  • 如何优化这个MySQL慢(非常慢)查询?

    我有一个 2 GB 的 mysql 表 包含 500k 行 我在没有负载的系统上运行以下查询 select from mytable where name in n1 n2 n3 n4 bunch more order by salary
  • 只获取倒数第二条记录 - mysql-query

    我有一个如下表记录 my table id rating description 1 0 0 bed 2 1 0 good 3 0 0 bed 4 1 0 good 5 0 0 bed 6 0 0 bed 7 0 0 bed 现在我通过评级
  • libmysqlclient.a 和 libmysqlclient_r.a 有什么区别?

    我应该使用哪个来链接 mysqlclient 库 它们之间有什么区别 我似乎找不到答案 谢谢 较新版本的 MySQL 客户端发行版不包含 r 版本 有些可能有从 libmyqslclient r a 到 libmyqslclient a 的
  • 什么时候应该使用 C++ 而不是 SQL?

    我是一名 C 程序员 偶尔使用 MySQL 来处理数据库 但我的 SQL 知识相当有限 但我肯定愿意改变这一点 目前 我正在尝试仅使用 SQL 查询对数据库中的数据进行分析 但我准备放弃了 转而将数据导入到C 中 用C 代码进行分析 我和同
  • 如果 Row1 = 值 1,则更新其他行

    我有一个小的 php 脚本 用于访问 mySql 数据库 我想在数据库中插入新记录之前查看该数字 值 1 是否等于数据库中的记录 这也在第 1 行 所以我想 查看传入的电话号码是否等于数据库中的电话号码 如果是这样 则必须保持电话号码相同的
  • 如何从批量数据中的mysql列中删除所有非数字字符

    我想从列中删除所有非数字字符 我的数据库中有大量数据 目前我正在使用以下链接中描述的方法 http venerableagents wordpress com 2011 01 29 mysql numeric functions http
  • 让登录更安全

    我已使用此代码进行管理员登录 仅当用户输入正确的用户名和密码时才应打开loginhome php 但后来我意识到这根本不安全 任何人都可以直接访问 mywebsite loginhome php 而无需登录 注销后 可以使用后退按钮打开 l
  • Mysql用in语句限制

    我正在写一个查询 SELECT user bookmarks id as user bookmark id bookmark id user bookmarks user id bookmark url bookmark website b
  • 删除行导致锁超时

    当我尝试从表中删除行时 我不断收到这些错误 这里的特殊情况是我可能同时运行5个进程 该表本身是一个 Innodb 表 约有 450 万行 我的 WHERE 子句中使用的列没有索引 其他指数按预期运行 这是在事务中完成的 首先删除记录 然后插
  • MYSQL - 使用逗号分隔字符串作为变量输入的存储过程

    我希望有人能够提供帮助 我已经创建了我的第一个存储过程 没什么花哨的 但是我遇到了问题 我想给它一个字符串输入 例如 1 2 3 4 5 然后它执行一个简单的操作SELECT FROM TABLE WHERE EAN IN VAR 所以存储
  • posts_search 中的自定义查询

    如何使用此查询作为我的自定义搜索查询 add filter posts search my search is perfect 20 2 function my search is perfect search wp query sWord
  • MySQL 追加字符串

    How can I append a string to the end of an existing table value Let s say I have the table below And let s say that Mari
  • 从Django中具有外键关系的两个表中检索数据? [复制]

    这个问题在这里已经有答案了 This is my models py file from django db import models class Author models Model first name models CharFie
  • Mysql插入表后不显示右单引号(’)

    我有一个名为 测试 的表 我插入了一行 其中包含unicode字符右单引号 0x2019在名称字段中 SQL insert into Testing values Sno Name Address insert into Testing v
  • 通过触发器应用表的列权限

    现在 我有一个名为 Members 的表 其中包含内容 分为联系人数据 银行数据 现在 管理员应该能够创建 更新 删除用户 这些用户保存在另一个表中 该表只能访问管理员 用户应该获得自己的 mysql 用户帐户 管理员还应该能够设置权限 例

随机推荐

  • 如何在 CentOS 里下载 RPM 包及其所有依赖包

    https blog csdn net linuxnews article details 53244315 方法一 利用 Downloadonly 插件下载 RPM 软件包及其所有依赖包 默认情况下 这个命令将会下载并把软件包保存到 va
  • 如何解决深度学习中的过拟合问题?

    在深度学习中 过拟合是一个常见的问题 它指的是模型在训练集上表现良好 但在测试集或新样本上表现较差的现象 过拟合的出现主要是由于模型过度拟合训练数据 过多地记住了训练集中的噪声和细节 导致模型在泛化到未见过的数据时失效 然而 我们可以采取一
  • SpringMVC和SpringBoot接收复杂集合参数,集合对象

    在SpringMVC和SpringBoot中 我们有这样一个场景 就是接受前端复杂的对象数组 或者多个数组 这是我们可以用 RequestBody注解 来解析请求体中的数据 但是值得注意的是在GET请求是不能进行该种方式的操作 因为GET请
  • Kali实现msfvenom在Windows和Linux靶机下后门漏洞

    项目场景 Kali实现msfvenom在Windows和Linux靶机下后门漏洞 情景复现 实验环境 Kali Debian 6 64位 Windows10 Centos7 环境 版本 kali Debian 6 64位 Windows w
  • 五十二.L1-063 吃鱼还是吃肉

    include
  • Qt子线程控制主界面UI控件

    在子线程里控制主界面的UI控件有两种方法 第一种是在子线程中发送信号 然后在主线程中去更新 第二种方法是在子线程中创建同样的对象 然后把主界面中控件的指针赋给创建的对象 第一种方法在此不做实例展示 在此通过一个简单的例子展示第二种方法 下面
  • qt操作文件进行读写操作

    一 加上头文件 include
  • electron自动更新版本electron-updater

    首先来看效果图 打包electron生成新的exe安装包 npm run dist 使用simplehttpserver开启存放打包好的exe安装包与yml文件的本地服务 打包目录里有这两个文件 安装simplehttpserver npm
  • springboot maven配置log4j以及Idea控制台根据等级配置颜色

    目录 效果 pom依赖 log4j properties LoggerUtil CCPRestSDK class 测试 console颜色 效果 废话不多说 直接放代码 pom依赖
  • Eclipse安装中文简体语言包(官方下载安装教程)

    目录 方法一 1 下载中文语言包 2 将文件下载后 解压 方法二 获得最新语言包网址 点击获得 配置JAVA HOME方法 一些历史版本的语言包网址 补充2021 3 7 语言包官方下载链接汇总 浏览器打开 长期有效 更新2021 3 4
  • mybatis generator插件系列--注释插件 (为实体类生成数据库字段注释)

    我们都知道mybatis generator自动生成的注释没什么实际作用 而且还增加了代码量 如果能将注释从数据库中捞取到 不仅能很大程度上增加代码的可读性 而且减少了后期手动加注释的工作量 1 首先定义注释生成插件 MyCommentGe
  • 后台管理系统-前端Vue项目搭建

    后台管理系统简介 从本章节开始我们将逐渐完成一套后台管理系统的搭建过程 前端技术 Vue3 2 后端搭建使用Spring Cloud Alibaba 1 Vue项目初始化 我们使用Vue ui 来初始化项目 1 1 使用vue ui创建项目
  • DOTA航拍图像数据集,免费资源下载35G遥感数据集

    DOTA Dataset遥感数据集下载 挂VPN会进的更快哦 下载链接最底下 DOTA Dataset A Large scale Dataset for Object DeTection in Aerial Images是用于航拍图像中目
  • 使用hexo+github搭建个人博客

    摘要 本文讲述如何使用hexo github搭建属于自己的个人博客 并且配置相应的主题使自己的博客更加美观 1 概念介绍 博客这东西大家应该都不陌生 网上有很多各式各样的博客 很多人也萌生了搭建自己的博客的想法 但是奈何技术有限 前后端技术
  • PyQt5 窗口自适应大小

    用pyqt5 Qt Designer设计界面时 希望窗口各控件可以随着鼠标拖动自适应的改变大小 一直没有找到方法 百度搜索了一圈 都说是要设置sizePolicy 将其Policy改为expanding即可 事实上99 的帖子都是抄来抄着
  • 全国行政区划下载(高德)

    高德地图API提供的行政区划查询 可以获取到行政区域的区号 城市编码 中心点 边界 下辖区域的详细信息 基于该工具进行扩展 对边界数据做转换处理 保存为GeoJson格式文件 方便使用 并且还可以选择转为WGS84坐标 下载地址 CLICK
  • 【C++】解析this指针

    一个类可以有多个对象 怎么能保证引用的是所指定的对象的数据成员呢 在每一个成员函数中都包含一个特殊的指针 这个指针的名字是固定的 即this 它是指向本类对象的一个指针 他的值是当前被调用的成员函数所在对象的起始地址 举例 include
  • 字符串的排列(全排列)——Java、回溯法

    题目描述 输入一个字符串 按字典序打印出该字符串中字符的所有排列 例如输入字符串abc 则打印出由字符a b c所能排列出来的所有字符串abc acb bac bca cab和cba 输入描述 输入一个字符串 长度不超过9 可能有字符重复
  • 奈奎斯特采样定理-为什么采样率需要时被测信号最高频率的两倍

    奈奎斯特采样定理 采样定理在1928年由美国电信工程师H 奈奎斯特首先提出来的 因此称为奈奎斯特采样定理 1933年由苏联工程师科捷利尼科夫首次用公式严格地表述这一定理 因此在苏联文献中称为科捷利尼科夫采样定理 1948年信息论的创始人C
  • MySQL数据库与SQL语言的规范

    文章中所有操作均是在 MySQL 5 7 版本下进行的 SQL语言 结构化查询语言 Structured Query Language 简称SQL 是一种特殊目的的编程语言 是一种数据库查询和程序设计语言 用于存取数据以及查询 更新和管理关