【MySQL】SQL 基础

文章目录

  • 【 1. SQL 的书写规则 】
    • 1.1 大小写规则
    • 1.2 常量的表示
    • 1.3 注释
    • 1.4 HELP 系统帮助
  • 【 2. 常用数据库函数 】
    • 2.1 SHOW DATABASES 显示数据库
    • 2.2 CREATE DATABASE 创建数据库
    • 2.3 ALTER DATABASE 修改数据库
    • 2.4 DROP DATABASE 删除数据库
    • 2.5 USE 选择数据库
  • 【 3. RDBMS 术语 】
    • Table 表
    • Filed 域/字段
    • Column 列
    • Record 记录
    • NULL 空值
    • Constraint 约束
    • 数据的完整性
    • 范式

【 1. SQL 的书写规则 】

  • SQL 语句以 分号;结尾

1.1 大小写规则

在这里插入图片描述

  • SQL 的 关键字、函数名、列名、索引名、存储函数、存储过程和事件的名字不区分大小写
  • 插入到表中的数据、触发器的名字区分大小写。

1.2 常量的表示

  • 字符串的书写需要 用英文单引号 ’ 将字符串括起来表示 ,像 ‘abc’ 这样。
  • 在MySQL 中 用倒引号 ` 把表名和列名括起来
  • 单词用半角空格(即英文空格)或者换行来分隔
  • 每一个数据库都有唯一的名称,即名称不重复。

1.3 注释

  • 单行注释可以使用 #注释符,#注释符后直接加注释内容。
  • 单行注释可以使用 -- 注释符,注意–后有一个空格。
  • 多行注释使用/* */注释符。/*用于注释内容的开头,*/用于注释内容的结尾,注释内容写在两者之间,可以跨多行。

1.4 HELP 系统帮助

  • MySQL 提供了 4 张数据表来保存服务端的帮助信息,即使用 HELP 语法查看的帮助信息。执行语句就是从这些表中获取数据并返回给客户端的,MySQL 提供的 4 张数据表如下:
    help_category:关于帮助主题类别的信息
    help_keyword:与帮助主题相关的关键字信息
    help_relation:帮助关键字信息和主题信息之间的映射
    help_topic:帮助主题的详细内容
  • 基本语法:
    • 查询内容为要查询的关键字,查询内容中不区分大小写。
    • 查询内容中可以包含通配符“%”和“_”,效果与 LIKE 运算符执行的模式匹配操作含义相同。例如,HELP ‘rep%’ 用来返回以 rep 开头的主题列表。
    • 查询内容可以使单引号引起来,也可以不使用单引号,为避免歧义,最好使用单引号引起来。
HELP 查询内容
  • 实例1:HELP contents 命令查看帮助文档的目录列表。
    在这里插入图片描述
  • 实例2:HELP Data Types;查看所支持的数据类型。
    根据上面运行结果列出的帮助文档目录列表,可以选择某一项进行查询。
    在这里插入图片描述
  • 实例3:HELP INT; 查看数INT据类型。
    运行结果中可以看到 INT 类型的帮助信息,包含Description类型描述、取值范围(有符号范围是-2147483648~2147483647,无符号范围是0~4294967295)和官方手册中 INT 类型说明的 URL。
    在这里插入图片描述
  • 实例4:查询某命令:使用 HELP CREATE TABLE; 命令查询创建数据表的语法。
    在这里插入图片描述

【 2. 常用数据库函数 】

2.1 SHOW DATABASES 显示数据库

  • 基本语法
    • LIKE 从句是可选项,用于匹配指定的数据库名称。LIKE 从句可以部分匹配,也可以完全匹配。
    • 数据库名由单引号’ '包围。
SHOW DATABASES [LIKE '数据库名'];
  • 实例1:查看所有数据库
    SHOW DATABASES;
    在这里插入图片描述

在 MySQL 数据库中存在系统数据库和自定义数据库,系统数据库是在安装 MySQL 后系统自带的数据库,自定义数据库是由用户定义创建的数据库。系统数据库如下:

  • information_schema:主要存储了系统中的一些数据库对象信息,比如用户表信息、列信息、权限信息、字符集信息和分区信息等。
  • mysql:MySQL 的核心数据库,类似于 SQL Server 中的 master 表,主要负责存储数据库用户、用户访问权限等 MySQL 自己需要使用的控制和管理信息。常用的比如在 mysql 数据库的 user 表中修改 root 用户密码。
  • performance_schema:主要用于收集数据库服务器性能参数。
  • sakila:MySQL 提供的样例数据库,该数据库共有 16 张表,这些数据表都是比较常见的,在设计数据库时,可以参照这些样例数据表来快速完成所需的数据表。
  • sys:MySQL 5.7 安装完成后会多一个 sys 数据库。sys 数据库主要提供了一些视图,数据都来自于 performation_schema,主要是让开发者和使用者更方便地查看性能问题。
  • world:world 数据库是 MySQL 自动创建的数据库,该数据库中只包括 3 张数据表,分别保存城市,国家和国家使用的语言等内容。
  • 实例2:使用 LIKE 从句
    先通过 CREATE DATABASE 数据库名; 创建三个数据库,名字分别为 test_db、db_test、db_test_db。
    • 完全匹配
      SHOW DATABASES LIKE 'test_db';
      在这里插入图片描述
    • 包含匹配
      SHOW DATABASES LIKE '%test%';
      在这里插入图片描述
    • 开头匹配
      SHOW DATABASES LIKE 'db%';
      在这里插入图片描述
    • 结尾匹配
      SHOW DATABASES LIKE '%db';
      在这里插入图片描述

2.2 CREATE DATABASE 创建数据库

  • 基本语法
    • [ ]中的内容是可选的。
    • <数据库名>:创建数据库的名称。MySQL 的数据存储区将以目录方式表示 MySQL 数据库,因此数据库名称必须符合操作系统的文件夹命名规则,不能以数字开头,尽量要有实际意义。注意在 MySQL 中不区分大小写。
    • IF NOT EXISTS:在创建数据库之前进行判断,只有该数据库目前尚不存在时才能执行操作。此选项可以用来避免数据库已经存在而重复创建的错误。
    • [DEFAULT] CHARACTER SET:指定数据库的字符集,字符集是用来定义 MySQL 存储字符串的方式。指定字符集的目的是为了避免在数据库中存储的数据出现乱码的情况。如果在创建数据库时不指定字符集,那么就使用系统的默认字符集。
    • [DEFAULT] COLLATE:指定字符集的默认校对规则,定义了比较字符串的方式
CREATE DATABASE [IF NOT EXISTS] <数据库名>
[[DEFAULT] CHARACTER SET <字符集名>] 
[[DEFAULT] COLLATE <校对规则名>];
  • 实例1:最简单的创建 MySQL 数据库的语句。
    CREATE DATABASE mytest;
    “Query OK, 1 row affected (0.14 sec);”提示中,“Query OK”表示上面的命令执行成功,“1 row affected”表示操作只影响了数据库中一行的记录,“0.14 sec”则记录了操作执行的时间。
    在这里插入图片描述
    若再次输入CREATE DATABASE test_db;语句,则系统会给出错误提示信息,提示不能创建“test_db”数据库,数据库已存在。这是因为 MySQL 不允许在同一系统下创建两个相同名称的数据库。故可以加上 IF NOT EXISTS 语句 CREATE DATABASE IF NOT EXISTS test_db;,避免此类错误
    在这里插入图片描述

2.3 ALTER DATABASE 修改数据库

  • 在 MySQL 数据库中 只能对数据库使用的 字符集和校对规则 进行修改
  • 基本语法
    • ALTER DATABASE 用于更改数据库的全局特性。
    • 使用 ALTER DATABASE 需要获得数据库 ALTER 权限。
    • 数据库名称可以忽略,此时语句对应于默认数据库。
    • CHARACTER SET 子句用于更改默认的数据库字符集。
ALTER DATABASE [数据库名] { 
[ DEFAULT ] CHARACTER SET <字符集名> |
[ DEFAULT ] COLLATE <校对规则名>}
  • 实例1:
    • 查看 test_db 数据库的定义声明的执行结果如下所示:
      SHOW CREATE DATABASE test_db;
      在这里插入图片描述
    • 使用命令行工具将数据库 test_db 的指定字符集修改为 gb2312,默认校对规则修改为 gb2312_unicode_ci,输入 SQL 语句与执行结果如下所示:
      ALTER DATABASE test_db
      -> DEFAULT CHARACTER SET gb2312
      -> DEFAULT COLLATE gb2312_chinese_ci;
      在这里插入图片描述

2.4 DROP DATABASE 删除数据库

  • 执行命令 DROP DATABASE 删除数据库后,会将已经存在的数据库从磁盘空间上清除,清除之后,数据库中的数据库中存储的所有数据表和数据也将一同被删除,而且不能恢复。另外,在执行该命令后,MySQL 不会给出任何提示确认信息。因此最好在删除数据库之前先将数据库进行备份。
  • MySQL 安装后,系统会自动创建名为 information_schema 和 mysql 的两个系统数据库,系统数据库存放一些和数据库相关的信息,如果 删除了这两个数据库,MySQL 将不能正常工作
  • 基本语法
    • <数据库名>:指定要删除的数据库名。
    • IF EXISTS:用于防止当数据库不存在时发生错误。
    • DROP DATABASE:删除数据库中的所有表格并同时删除数据库。使用此语句时要非常小心,以免错误删除。如果要使用 DROP DATABASE,需要获得数据库 DROP 权限。
DROP DATABASE [ IF EXISTS ] <数据库名>
  • 实例1
    创建1个数据库test_db_del,查看所有数据库,再把test_db_del删了,再查看所有数据库。
    在这里插入图片描述
    此时数据库 test_db_del 不存在。再次执行相同的命令,直接使用 DROP DATABASE test_db_del,系统会报错,如果使用IF EXISTS从句,可以防止系统报此类错误,如下所示:
    在这里插入图片描述

2.5 USE 选择数据库

  • 在 MySQL 中就有很多系统自带的数据库,那么在操作数据库之前就必须要确定是哪一个数据库。在 MySQL 中,USE 语句用来完成一个数据库到另一个数据库的跳转。
  • 当用 CREATE DATABASE 语句创建数据库之后,该数据库不会自动成为当前数据库,需要用 USE 来指定当前数据库。
  • 基本语法
    • 通知 MySQL 把<数据库名>所指示的数据库作为当前数据库。该数据库保持为默认数据库,直到语段的结尾,或者直到遇见一个不同的 USE 语句。 只有使用 USE 语句来指定某个数据库作为当前数据库之后,才能对该数据库及其存储的数据对象执行操作。
USE <数据库名>
  • 实例1
    使用命令行工具将数据库 test_db 设置为默认数据库。
    USE test_db;
    在执行选择数据库语句时,如果出现 “Database changed”提示,则表示选择数据库成功。
    在这里插入图片描述

【 3. RDBMS 术语 】

  • RDBMS(Relational Database Management System)关系数据库管理系统

Table 表

  • 在 RDBMS 中,数据被存储在一种称为 表(Table) 的数据库对象中,它和 Excel 表格类似,都由许多行(Row)和列(Column)构成。每一行都是一条数据,每一列都是数据的一个属性 ,整个表就是若干条相关数据的集合。
  • 实例:一个名为“website”的网站信息表
    在这里插入图片描述

Filed 域/字段

  • 每个表都由若干列构成,每一列都称为一个 字段(Field),上表 website 所包含的字段有 id、name、url、age、alexa、uv 和 country。
  • 字段用来维护数据表中每一条数据(记录)的特定信息。

Column 列

  • 列(Column)是从垂直方向观察表中的数据,它包含了与某个字段相关联的所有信息。
  • 实例
    website 表中有一列为 url,它表示网站的地址,如下
    在这里插入图片描述

Record 记录

  • 数据表中的每一行数据都称为一条 记录(Record),有多少行数据就有多少条记录。
  • 字段是从垂直方向看表中的数据,记录是从水平方向看表中的数据。
  • 实例
    上表website 共有 8 条记录,以下是第 3 条记录:
    在这里插入图片描述

NULL 空值

  • 字段的取值可以为 NULL,此时意味着该字段是空的,没有任何值,所以 NULL 被称为“空值”。
  • NULL 和零值不一样,和包含空白符(空格、缩进、换行等)的字段也不一样,NULL 字段是指在添加记录的时候留空的字段,也即不为该字段指定任何值。

Constraint 约束

  • 约束(Constraint) 是指表的数据 列必须强行遵守的规则***,这些规则用于限制插入表中的数据的值,这样能够确保每份数据的准确定和可靠性。
  • 约束可以是列级别,也可以是表级别;列级约束仅作用于某一列,而表级约束则作用于整张表。

数据的完整性

  • 每个 RDBMS 都存在以下几种类别的数据完整性:
    • 实体完整性:表中的一行(一条记录)代表一个实体,表中不能有重复的行
    • 域完整性:域也即字段,域完整性用来保证字段的取值是合理的
    • 引用完整性:一个表中的字段可以引用另外一个表中的记录。如果某条记录被另外一个表中的字段引用,那么该记录不能被删除
    • 自定义完整性:除了以上三种基本的完整性约束,不同版本的 RDBMS 在实现时,还可以根据其具体的应用环境,自己制定一些其它的完整性约束。

范式

  • 设计关系型数据库时,需要遵守一些特定的规范才能设计出合理的数据库,这些规范就称为 范式 ,满足不同程度的规范就是不同的范式。范式的目的在于:
    ① 消除冗余数据,比如,不应该将两份相同的数据存储到不同的表中;
    ② 确保数据之间的关联性是有意义的。
    以上两点不但能减少数据库占用的存储空间,还能确保数据之间有清晰的逻辑关系。
  • 关系型数据库之父 Edgar Frank “Ted” Codd 提出了六种范式,但是从长期实践看,三种范式更具有实际的意义。满足最低要求的叫 第一范式,简称 1NF ;在第一范式的基础上满足进一步要求的称为 第二范式,简称 2NF ;以此类推,在第二范式的基础上满足更加进一步要求的称为 第三范式,简称 3NF遵守的范式级别越高,数据的冗余越少下一级别的范式包含上一级别的所有范式;也就是说,范式级别越高越严格

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Python基于PyQt6制作GUI界面——多选框

QCheckBox 是 PyQt6 中的一个复选框控件&#xff0c;它允许用户通过单击来选择或取消选择某个选项。与 QRadioButton 不同&#xff0c;QCheckBox 控件并不互斥&#xff0c;这意味着用户可以同时选择多个 QCheckBox。示例对应的制作的 ui文件 界面如下所示。 <?xml version…

惯性测量单元M-G370系列广泛用于工业系统各个领域

爱普生现已推出型号为M-G370系列的高稳定性、高精度及极小尺寸封装的惯性测量单元(IMU)&#xff0c;可广泛应用于工业系统的各个领域。 为了节省PCB的面积和产品空间&#xff0c;M-G370系列性测量单元设计精巧&#xff0c;且具有6个自由度:三轴角速率和三轴线性加速度&…

5个将文本转语音的工具,高考复习的绝佳助手

高考倒计时10天&#xff01; 在这最后的冲刺阶段&#xff0c;同学们都在拼命刷题&#xff0c;但面对已经整理好的知识点&#xff0c;时间紧迫&#xff0c;如何高效复习呢&#xff1f; 别急&#xff0c;今天我要和大家分享一个绝佳的复习方法——文字转语音。这个方法可以让你…

JVM 内存布局深度解析,你所不知道的一面

作为Java开发者&#xff0c;想要写出高质量的代码&#xff0c;理解JVM的内存结构是必修课。本文将为您深度解析 Java 虚拟机(JVM)中的内存布局及其细节分析&#xff0c;让你在内存管理的道路上行稳致远。希望通过本文能让你彻底理解其中的奥秘。 一、内存布局概览 在我们深入具…

【C++】牛客——BC157 素数回文

✨题目链接&#xff1a; BC157 素数回文 ✨题目描述 现在给出一个素数&#xff0c;这个素数满足两点&#xff1a; 只由1-9组成&#xff0c;并且每个数只出现一次&#xff0c;如13,23,1289。 位数从高到低为递减或递增&#xff0c;如2459&#xff0c;87631。 请你判断一下&…

java医院管理系统源码(springboot+vue+mysql)

风定落花生&#xff0c;歌声逐流水&#xff0c;大家好我是风歌&#xff0c;混迹在java圈的辛苦码农。今天要和大家聊的是一款基于springboot的医院管理系统。项目源码以及部署相关请联系风歌&#xff0c;文末附上联系信息 。 项目简介&#xff1a; 医院管理系统的主要使用者分…

平衡二叉树的构建(理论,部分函数代码)

平衡二叉树是二叉排序树的一种特殊情况&#xff0c;平衡二叉树的出现是为了在最坏情况下的时间复杂度仍然是对数级别O(logn)&#xff0c;从而保证了高效的搜索、插入和删除操作。 举个例子&#xff0c;如果有一个数组是&#xff1a;1&#xff0c;2&#xff0c;3。如果只简单的…

GoldenEye-v1(vulnhub)靶机练习实践报告

GoldenEye-v1****靶机练习实践报告 一、安装靶机 靶机是.ova文件&#xff0c;需要用VirtualBox打开&#xff0c;但我习惯于使用VMWare,因此修改靶机文件&#xff0c;使其适用于VMWare打开。 解压ova文件&#xff0c;得到.ovf文件和.vmdk文件。 用记事本打开.ovf文件并修改“…

汽车制造业安全有效的设计图纸文件外发系统是什么样的?

在汽车制造的世界里&#xff0c;那些设计图不仅仅是公司智慧的闪光点&#xff0c;更是它们竞争的秘密武器。但问题来了&#xff0c;当公司需要和供应商、合作伙伴频繁交换数据时&#xff0c;怎样安全又高效地发送这些设计图&#xff0c;就成了一个头疼的问题。这篇文章会深挖一…

基于Vue uni-app的自定义列表表格信息展示组件

摘要&#xff1a;随着软件技术的不断发展&#xff0c;前端开发面临着越来越多的挑战。特别是在业务场景复杂多变的情况下&#xff0c;如何提高开发效率和降低维护成本成为了关键。本文旨在探讨组件化开发在前端应用中的重要性&#xff0c;并以Vue uni-app自定义列表表格为例&am…

使用虚拟卡注册亚马逊店铺亲测墨西哥、北美都可以亲测~~

这几天测试了使用虚拟信用卡注册墨西哥与北美站的店铺&#xff0c;成功下店&#xff0c;总有人说会被扫&#xff0c;其实去年12月费就有使用卡注册店铺&#xff0c;至今还是好的 当然也不是完全都没有可能店铺不会挂&#xff0c;挂的时候提供账单就好了&#xff0c;直接找客服…

go使用letteravatar生成圆形透明头像图标

官网地址&#xff1a;GitHub - disintegration/letteravatar: Letter avatar generation for Go 我对其中函数改了一下&#xff0c;支持多个字符&#xff0c;效果如下&#xff1a; func TestCreateAvatar(t *testing.T) {GenerateAvatar("Bird Fish", 0, "Bird…

【PG16】后 EL 7 时代,PG 16 如何在 CentOS 7 上运行

↑ 关注“少安事务所”公众号&#xff0c;欢迎⭐收藏&#xff0c;不错过精彩内容~ ★ 本文写于 2023-09-29 PostgreSQL 16 Released 9/14, PostgreSQL 16 正式发布。从发布公告^1 和 Release Notes^2 可以看到 PG16 包含了诸多新特性和增强改进。 性能提升&#xff0c;查询计划…

XPosed项目的接入、模版制作、改名全过程

XPosed项目的接入、模版制作、改名全过程 写在前面 之前写过这篇Xposed Hook 过登录密码验证配置开发Xposed项目的文章&#xff0c;这次的接入使用的是当前最新版Android Studio&#xff0c;接入稍微有些差别&#xff0c;也记录下。 本篇文章主要是写关于XP项目接入、制作XP模…

SQL——SELECT相关的题目(力扣难度等级:简单)

目录 197、上升的温度 577、员工奖金 586、订单最多的客户 596、超过5名学生的课 610、判断三角形 620、有趣的电影 181、超过经理收入的员工 1179、重新格式化部门表&#xff08;行转列&#xff09; 1280、学生参加各科测试的次数 1965、丢失信息的雇员 1068、产品销售分…

教你网站如何免费实现https

想要实现https访问最简单有效的的方法就是安装SSL证书。只要证书正常安装上以后&#xff0c;浏览器就不会出现网站不安全提示或者访问被拦截的情况。下面我来教大家怎么去获取免费的SSL证书&#xff0c;又如何安装证书实现https访问。 一、选择免费SSL证书提供商 有多家机构提…

CLI举例:负载分担场景下的源NAT配置(主备设备共用同一个地址池)

CLI举例&#xff1a;负载分担场景下的源NAT配置&#xff08;主备设备共用同一个地址池&#xff09; 组网需求 如图1所示&#xff0c;企业的两台FW的业务接口都工作在三层&#xff0c;上下行分别连接路由器。FW与上下行路由器之间运行OSPF协议。上行接口连接同一个ISP。 现在希…

word-主控文档、文档拆分及标书编写技巧建议

一、主控文档 视图-大纲视图-显示文档-插入子文档 子文档一旦更新&#xff0c;主文档也会更新。更新主文档&#xff0c;子文档也会更新 需要注意&#xff0c;不可修改子文档名字 二、上交文件 显示文档-折叠子文档-只显示一级-取消链接-关闭大纲视图-保存 三、文档拆分 根…

数据结构算法题day03

数据结构算法题day03 题目 题目 2.设计一个高效算法&#xff0c;将顺序表L的所有元素逆置&#xff0c;要求算法的空间复杂度为O(1)算法思想&#xff1a; 1、常规的解法&#xff1a; Void reverse (sqlist &L){Elemtype temp; //辅助变量for(i 0,i < L.length; i){temp…

Thinkphp5响应式进销存仓库管理系统

随着企业规模的不断扩大和市场竞争的日益激烈&#xff0c;进销存管理在企业的运营中扮演着越来越重要的角色。为了提高企业的运营效率&#xff0c;降低库存成本&#xff0c;提升客户满意度&#xff0c;越来越多的企业开始引入进销存仓库管理系统。 进销存仓库管理系统是一种集…