[2003].第2-01节:关系型数据库表及SQL简介

所有博客大纲

后端学习大纲

MySQL学习大纲


1.数据库表介绍:

1.1.表、记录、字段

  • 1.E-R(entity-relationship,实体-联系)模型中有三个主要概念是: 实体集 、 属性 、 联系集
  • 2.一个实体集(class)对应于数据库中的一个表(table)一个实体(instance)则对应于数据库表中的一行(row),也称为一条记录(record)。一个属性(attribute)对应于数据库表中的一列(column),也称为一个字段(field)
    在这里插入图片描述

ORM思想 (Object Relational Mapping)体现

  • 数据库中的一个表 <—> Java或Python中的一个类
  • 表中的一条数据 <—> 类中的一个对象(或实体)
  • 表中的一个列 <----> 类中的一个字段、属性(field)

1.2.表与表的关联关系

  • 1.表与表之间的数据记录有关系(relationship)。现实世界中的各种实体以及实体之间的各种联系均用关系模型来表示
  • 2.有四种关系,分别是一对一关联、一对多关联、多对多关联、自我引用

a.一对一关联(one-to-one)

  • 1.在实际的开发中应用不多,因为一对一可以创建成一张表
  • 2.举例:设计学生表 :学号、姓名、手机号码、班级、系别、身份证号码、家庭住址、籍贯、紧急联系人、…等。如果表的字段数较多,可将学生表拆为两个表,两个表的记录是一一对应关系
    • 基础信息表 (常用信息):学号、姓名、手机号码、班级、系别
    • 档案信息表 (不常用信息):学号、身份证号码、家庭住址、籍贯、紧急联系人、…
  • 3.两种建表原则:
    • 外键唯一:主表的主键和从表的外键(唯一),形成主外键关系,外键唯一
    • 外键是主键:主表的主键和从表的主键,形成主外键关系
      在这里插入图片描述

b. 一对多关系(one-to-many)

  • 1.常见实例场景: 客户表和订单表 , 分类表和商品表 , 部门表和员工表
    在这里插入图片描述
  • 2.举例:一个员工对应一个部门,一个部门对应多个员工,主表是部门表,从表是员工表
    • 员工表:编号、姓名、…、所属部门
    • 部门表:编号、名称、简介
  • 3.一对多建表原则:在从表(多方)创建一个字段,这个字段作为外键指向主表(一方)的主键
    在这里插入图片描述

c.多对多关系:

  • 1.要表示多对多关系必须创建第三个表,该表通常称为 联接表 ,它将多对多关系划分为两个一对多关系。将这两个表的主键都插入到第三个表中
    在这里插入图片描述

  • 2.举例1:学生-课程

    • 学生信息表 :一行代表一个学生的信息(学号、姓名、手机号码、班级、系别…)
    • 课程信息表:一行代表一个课程信息(课程编号,授课老师等)
    • 选课信息表:一个学生可以选择多门课,一个课程可以多个学生选择( 联接表
  • 3.举例2:产品-订单

    • “订单”表和“产品”表有一种多对多的关系,这种关系是通过与“订单明细”表建立两个定义的。一个订单可以有多个产品,每个产品可以出现在多个订单中。
    • 产品表 :“产品”表中的每条记录表示一个产品。
    • 订单表 :“订单”表中的每条记录表示一个订单。
    • 订单明细表 :每个产品可以与“订单”表中的多条记录对应,即出现在多个订单中。一个订单可以与“产品”表中的多条记录对应,即包含多个产品( 联接表
      在这里插入图片描述
  • 3.举例3:用户-角色:

    • 多对多关系建表原则:需要创建第三张表,中间表中至少两个字段,这两个字段分别作为外键指向各自一方的主键
      在这里插入图片描述

d.自我引用(Self reference):关系

在这里插入图片描述


2.SQL概述

2.1 SQL背景

  • 1.1974 年,IBM研究员发布了一篇揭开数据库技术的论文《SEQUEL:一门结构化的英语查询语言》,直到今天这门结构化的查询语言并没有太大的变化,相比于其他语言,SQL 的半衰期可以说是非常长 了。
  • 2.SQL(Structured Query Language,结构化查询语言)是使用关系模型的数据库应用语言,与数据直接打交道 ,由IBM 上世纪70年代开发出来。后由美国国家标准局(ANSI)开始着手制定SQL标准,先后有 SQL-86 , SQL-89 ,SQL-92 , SQL-99 等标准
  • 3.SQL 有两个重要的标准,分别是 SQL92 和 SQL99,它们分别代表了 92 年和 99 年颁布的 SQL 标准,我们今天使用的SQL 语言依然遵循这些标准
  • 4.不同的数据库生产厂商都支持SQL语句,但都有特有内容
    在这里插入图片描述

2.2.SQL分类:

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

  • 1.DDL:数据定义语言:
    • 这些语句定义了不同的数据库、表、视图、索引等数据库对象,还可以用来创建、删除、修改数据库和数据表的结构。
    • 主要的语句关键字包括CREATE \ ALTER \ DROP \ RENAME \ TRUNCATE
  • 2.DML:数据操作语言。
    • 用于添加、删除、更新和查询数据库记录,并检查数据完整性。
    • 主要的语句关键字包括INSERT \ DELETE \ UPDATE \ SELECT
    • SELECT是SQL语言的基础,最为重要(重中之重)
  • 3.DCL:数据控制语言:
    • 用于定义数据库、表、字段、用户的访问权限和安全级别
    • 主要的语句关键字包括COMMIT \ ROLLBACK \ SAVEPOINT \ GRANT \ REVOKE

因为查询语句使用的非常的频繁,所以很多人把查询语句单拎出来一类:DQL(数据查询语言),那么分类就是如下形式:

  • 1.DDL 数据定义语言
  • 2.DML 数据操作语言
  • 3.DQL 数据查询语言
  • 4.DCL 数据控制语言

还有单独将 COMMIT 、 ROLLBACK 取出来称为TCL (Transaction Control Language,事务控制语言)。


2.3.SQL语言的规则:

a.基本规则:

  • 1.SQL 可以写在一行或者多行。为了提高可读性,各子句分行写,必要时使用缩进
  • 2.每条命令以 ;\g\G 结束
    在这里插入图片描述
  • 3.关键字不能被缩写也不能分行
  • 4.关于标点符号
    • 必须保证所有的()、单引号、双引号是成对结束的
    • 必须使用英文状态下的半角输入方式
    • 字符串型和日期时间类型的数据可以使用单引号(’ ')表示
    • 列的别名,尽量使用双引号(" "),而且不建议省略as

b.命名规则:

  • 1.数据库、表名不得超过30个字符,变量名限制为29个
  • 2.必须只能包含 A–Z, a–z, 0–9, _共63个字符
  • 3.数据库名、表名、字段名等对象名中间不要包含空格
  • 4.同一个MySQL软件中,数据库不能同名;同一个库中,表不能重名;同一个表中,字段不能重名
  • 5.必须保证你的字段没有和保留字、数据库系统或常用方法冲突。如果坚持使用,请在SQL语句中使用`(着重号)引起来
  • 6.保持字段名和类型的一致性,在命名字段并为其指定数据类型的时候一定要保证一致性。假如数据类型在一个表里是整数,那在另一个表里可就别变成字符型了

c.命名规则举例:

#以下两句是一样的,不区分大小写
show databases;
SHOW DATABASES;
#创建表格
#create table student info(...); #表名错误,因为表名有空格
create table student_info(...);
#其中order使用``飘号,因为order和系统关键字或系统函数名等预定义标识符重名了
CREATE TABLE `order`();
select id as "编号", `name` as "姓名" from t_stu; #起别名时,as都可以省略
select id as 编号, `name` as 姓名 from t_stu; #如果字段别名中没有空格,那么可以省略""
select id as 编 号, `name` as 姓 名 from t_stu; #错误,如果字段别名中有空格,那么不能省略""

2.4.SQL语言的规范:

  • 1.MySQL在Windows环境下是大小写不敏感的
  • 2.MySQL在Linux环境下是大小写敏感的
    • 数据库名、表名、表的别名、变量名是严格区分大小写的
    • 关键字、函数名、列名(或字段名)、列的别名(字段的别名) 是忽略大小写的
  • 3.推荐采用统一的书写规范:
    • 数据库名、表名、表别名、字段名、字段别名等都小写
    • SQL 关键字、函数名、绑定变量等都大写

2.5.注 释:

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

2.6.数据导入指令

  • 1.在命令行客户端登录mysql,使用source指令导入:mysql> source d:\mysqldb.sql

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

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

相关文章

微调大模型时,如何进行数据预处理? 将<input, output>转换为模型所需的<input_ids, labels, attention_mask>

原始训练数据集格式如下&#xff1a; <input, output> 形式&#xff1a;字符 模型训练所需数据格式如下&#xff1a; # tokenizer处理后 return {"input_ids": example,"labels": labels,"attention_mask": example_mask, } 将字符转…

基于websocket实现本地web语音聊天

基于libwebsockets库实现语音聊天 1、关于libwebsocket库自行编译2、client使用htmljs 代码3、服务端代码 1、关于libwebsocket库自行编译 2、client使用htmljs 代码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"…

git推送本地仓库到远程(Gitee)

目录 一、注册创建库 二、创建仓库 三、推送本地仓库到远程 1.修改本地仓库用户名和邮箱 2.本地库关联远程仓库 3.拉取远程仓库的文件 4.推送本地库的文件 5.查看远程仓库 四、远程分支查看 1.查看远程分支 2.修改test.txt文件 一、注册创建库 Gitee官网&#xff1…

GoZero框架接入数据库引擎Gorm 并实战:构建简单的 CRUD 业务API

GoZero 是一个高性能的微服务框架&#xff0c;它基于 Go 语言开发&#xff0c;提供了丰富的工具支持&#xff0c;能够帮助开发者快速构建可扩展、易维护的应用。Gorm 是 Go 语言中常用的 ORM 库&#xff0c;它帮助我们简化数据库操作&#xff0c;使用面向对象的方式进行增删改查…

KNN分类算法 HNUST【数据分析技术】(2025)

1.理论知识 KNN&#xff08;K-Nearest Neighbor&#xff09;算法是机器学习算法中最基础、最简单的算法之一。它既能用于分类&#xff0c;也能用于回归。KNN通过测量不同特征值之间的距离来进行分类。 KNN算法的思想&#xff1a; 对于任意n维输入向量&#xff0c;分别对应于特征…

达梦数据守护搭建

主备库初始化 ./dminit path/dmdata/data db_nameDM01 instance_nameDMSVR01 port_num5236 page_size16 extent_size32 log_size500 case_sensitive1 SYSDBA_PWDDM01SYSDBA ./dminit path/dmdata/data db_nameDM02 instance_nameDMSVR02 port_num5236 page_size16 extent_size3…

探索Flink动态CEP:杭州银行的实战案例

摘要&#xff1a;本文撰写自杭州银行大数据工程师唐占峰、欧阳武林老师。将介绍 Flink 动态 CEP的定义与核心概念、应用场景、并深入探讨其技术实现并介绍使用方式。主要分为以下几个内容&#xff1a; Flink动态CEP简介 Flink动态CEP的应用场景 Flink动态CEP的技术实现 Flin…

谷歌集群数据集:负载均衡云服务测试数据

谷歌集群数据集 以下为你举例说明各文件中一条数据的具体含义,方便你更好地理解这个数据集: 1. machine_events 文件示例 假设其中有这样一条数据:123456789, 101, 0, "platform_abc", 4, 8 含义:表示在时间戳为123456789微秒时,机器ID为101的这台机器发生了…

打造高效租赁小程序让交易更便捷

内容概要 在如今节奏飞快的商业世界里&#xff0c;租赁小程序如同一只聪明的小狐狸&#xff0c;迅速突围而出&#xff0c;成为商家与消费者之间的桥梁。它不仅简化了交易流程&#xff0c;还在某种程度上将传统租赁模式带入了互联网时代。越来越多的企业意识到&#xff0c;这种…

/proc /dev /sys 目录的用途

author: hjjdebug date: 2024年 12月 25日 星期三 16:32:44 CST description: /proc /dev /sys 目录的用途 文章目录 甲: /proc目录:对module 的管理:$cat /proc/devices 乙: /dev 目录创建设备节点命令 mknod 丙: /sys 目录1. /sys/dev2. /sys/devices3. /sys/module4. /sys/c…

来道面试题——CopyOnWriteArrayList

原理 初始化时候&#xff0c;CopyOnWriteArrayList内部维护了一个可变数组&#xff0c;用于存储元素当执行数据变更操作的时候&#xff0c;会先创建一个原数组的副本&#xff0c;在副本上进行写操作&#xff0c;修改副本中的元素。写操作完成之后&#xff0c;把原数组的引用指…

Nginx整合Lua脚本

Nginx-Lua Nginx整合Lua脚本 Lua环境搭建 下载地址 linux环境下 yum install lua安装后验证 lua -vLua脚本执行 lua xxx.luaNginx整合Lua nginx需要添加lua模块 嵌入内容 示例如下 修改nginx.conf如下 location /lua {default_type text/plain;content_by_lua ngx.sa…

【MinIO系列】MinIO Client (mc) 完全指南

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

Jmeter录制https请求

jmeter 5.5版本&#xff0c;chrome浏览器 1、首先添加Test Plan-Thread Group-HTTP(S) Test Script Recorder 2、设置HTTP(S) Test Script Recorder界面的Port&#xff08;监听端口&#xff0c;设置浏览器代理时需要与这里保持一致&#xff09;、HTPS Domains&#xff08;录制…

安装Visual studio2022后,没法新建.net 4.5.2的项目

在Visual Studio 2022中无法新建.NET Framework 4.5.2的项目&#xff0c;通常是因为Visual Studio 2022默认不再支持较旧的.NET Framework版本&#xff0c;如4.5或4.5.2。不过&#xff0c;你可以通过一些手动步骤来使Visual Studio 2022支持.NET Framework 4.5.2项目。以下是一…

Nginx配置:如何在一个域名下运行两个网站

在现代的Web应用开发中&#xff0c;网站的数量和复杂性越来越高&#xff0c;多个网站使用同一个域名的情况也越来越常见。通过Nginx配置&#xff0c;我们可以轻松实现两个网站共用一个域名&#xff0c;并根据特定的路径、子域名或其他规则对流量进行分发。本文将详细介绍如何使…

前端最新Vue2+Vue3基础入门到实战项目全套教程,自学前端vue就选黑马程序员,一套全通关!

Vue 快速上手 Vue概念 Vue 是一个用于构建用户界面的渐进式框架 构建用户界面&#xff1a;基于数据渲染出用户看到的页面 渐进式&#xff1a;循序渐进 框架&#xff1a;一套完整的项目解决方案 Vue 的两种使用方式: ① Vue 核心包开发 场景:局部 模块改造 ② Vue 核心包 &am…

基于Spring Boot的高校请假管理系统

一、系统背景与意义 随着高校规模的扩大和学生数量的增加&#xff0c;传统的请假管理方式已经难以满足高校管理的需求。人工请假流程繁琐、耗时长&#xff0c;且容易出现信息错误或遗漏。因此&#xff0c;开发一套基于Spring Boot的高校请假管理系统具有重要意义&#xff0c;它…

Gate.io 平台通证 GT:持续赋能与销毁、财富效应显著

在瞬息万变的加密市场中&#xff0c;每一轮牛熊转换都在加速 CEX 市场的一轮又一轮洗牌&#xff0c;这也使得该赛道的格局始终处于动态的变化。而在本轮牛市中&#xff0c;CEX 赛道也正在从最初的三大领衔变成了多强角逐&#xff0c;而 Gate.io 作为创立 11 余年的老牌交易平台…

mysql怎么返回一个字段逗号分隔后的所有数据的sql

mysql怎么返回一个字段逗号分隔后的所有数据的sql 场景描述5.7版本MySql : 完整sql如下sql解析8.0 版本MySql : 完整sql如下 场景描述 mysql有一张表比如result表,表中有个字段场景id:scene_id,这个id存储的值可以是单个的id也可以是多个id用逗号拼接起来的&#xff0c;现在需…