当前位置: 首页 > news >正文

数据库学习笔记(2)——workbench和SQL语言

1、workbench简介:

  • 登录客户端的两种方法
    在这里插入图片描述
  • 在cmd中,只能通过sql语句控制数据库;workbench其实就是一种图形化数据库管理工具,在workbench中既可以通过sql语句控制数据库,也可以通过图形化界面控制数据库。
  • 通过workbench登录的方法
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

2、数据库语言(SQL):

  • 结构化语言简介
    在这里插入图片描述
  • 创建数据表的思路
    在这里插入图片描述
  • 由很多数据表的集合就构成了数据库
  • 数据库操作指令
    在这里插入图片描述
  • 注意:没事干别删除系统默认的库sys!因为这个里面是mysql的一些配置文件。
  • 关于sql文件的保存,可以保存在任何位置!
  • 注意起名字的时候,加的反引号和单引号不是一种符号
    在这里插入图片描述
    在这里插入图片描述
  • workbench中字体、字号设置(注意变更过字体字号之后要关掉编辑的sql文档,重新打开才会生效)
    在这里插入图片描述

3、数据类型(★★★★★):定义数据库中数据表的时候必须要用,所以很重要

  • 在cmd登录mysql平台后,查看数据类型帮助文档的指令:‘? data types; ’
  • 对于显示的数据类型如果由不太懂的,也可以用指令查看帮助文档:‘? 数据类型名’
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  • 注意一个汉字大概有3个字符

4、约束(6种):主键约束(自增长约束)、唯一约束、非空约束、默认值约束、外键约束、注解约束;

  • 前言:创建数据表的SQL语句如下,在创建时就需要添加约束
    在这里插入图片描述

  • 注意:约束是可以累加的,也就是说一个字段可以有多个约束!

  • 主键约束:
    在这里插入图片描述
    注意:还有一种自增长约束,auto_increment是和主键约束一起来用的,当主键是整数类型的时候,我们可以使用自增长来避开数据重复问题。SQL写法:字段名 int primary key auto_increment

  • 唯一约束
    在这里插入图片描述

  • 非空约束
    在这里插入图片描述

  • 默认值约束
    在这里插入图片描述

  • 外键约束
    在这里插入图片描述

  • constraint 【n.限制,束缚;】

  • 注意:constraint 约束名 foreign key(字段名3)reference 主表名(主键字段名)中约束名,就是主表和分表之间外键约束的名字,一般叫做“主表名_分表名”。其实也可以将这个约束理解为主表和分表的联系。

  • 注解约束
    在这里插入图片描述

练习

  • 练习要求:为某个班级建立一套数据库表格包含四个表分别是:学生、选修课程、教师、选课记录
  • 练习实践:
    • 0、先创建新的数据库,然后切换到该数据库
    • 1、确立各个数据表之间的关系(一对一、一对多、多对多)
    • 2、确定每个数据表的属性
    • 3、确定表中每个属性的约束
  • sql代码
-- 创建一个新的数据库,并且选择新的数据库
-- create database if not exists db_exercise charset='utf8mb4';
-- show databases;
-- alter database db_exercise charset='utf8mb4';
-- 切换到新建数据库
use db_exercise;/*
学生学号【主键】 姓名 出生日期 性别【默认】 籍贯
教师编号【主键】 姓名 职称
选修课程编号【主键】 名称 学分 授课教师编号
选课记录记录编号【主键】 学生学号【外键】 课程编号【外键】 选课日期 分数保证学生编号与课程编号联合起来的唯一性unique(cc_sid,cc_cid)表示cc_sid字段和cc_cid字段联系起来是唯一的
*/ 
create table if not exists tb_student(
stu_id int primary key auto_increment comment '学生学号',
stu_name char(15) comment '姓名',
stu_brid date comment '出生日期',
stu_gender char(3) default '男' comment '学生性别',
stu_location char(10) comment '学生籍贯'
);
-- 注意表格名前加‘tb_’是为了和后面要学习的视图做区别create table if not exists tb_teacher(
tea_id int primary key comment '教师编号',
tea_name char(15) comment '教师姓名',
tea_post char(15) comment '教师职称'
);create table if not exists tb_c_class(
cl_id int primary key comment '选修课编号',
cl_name char(30) comment '选修课名称',
cl_credit int comment '学分',
cl_tea_id int comment '授课教师',
constraint `tea_cl` foreign key(cl_tea_id) references `tb_teacher`(tea_id)
);create table if not exists `tb_cc_log`(
cc_id int comment '记录编号',
cc_sid int comment '选课记录中的学生编号',
cc_cid int comment '选课记录中的课程编号',
cc_date date comment '选课日期',
cc_score decimal(4,1) comment '分数',
primary key(cc_id),
constraint `fk_cc_stu` foreign key(cc_sid) references tb_student(stu_id),
constraint `fk_cc_cl` foreign key(cc_cid) references tb_c_class(cl_id),
constraint `uk_stu_cl` unique(cc_sid,cc_cid)
);-- 查看表结构语句
desc tb_student

5、数据表操作

  • 修改数据表结构
    在这里插入图片描述
    在这里插入图片描述

6、数据操作语言(DML)

  • 在数据表结构已有的情况下,向表中添加行数据,修改行数据,删除行数据。
  • 添加
    在这里插入图片描述

练习:给上一个练习中的表格填充数据

  • 注意:在执行SQL语言的过程中不要重复执行创建同一个表格或者数据库的指令,会出现警告。
  • 1、首先通过数据表删除语句,将建立的数据表删除,然后再次建立数据表。
  • 2、给数据表填充数据,并查看数据表。
  • 提示:数据查询语言(DQL):简单查询(通过该语句,就可以看到数据表当中的数据是否插入成功)
    在这里插入图片描述
  • sql代码
-- 切换到新建数据库
use db_exercise;-- 删除表操作
drop table if exists tb_c_class;
drop table if exists tb_cc_log;
drop table if exists tb_student;
drop table if exists tb_teacher;/*
学生学号【主键】 姓名 出生日期 性别【默认】 籍贯
*/ 
create table if not exists tb_student(
stu_id int primary key auto_increment comment '学生学号',
stu_name char(15) comment '姓名',
stu_brid date comment '出生日期',
stu_gender char(3) default '男' comment '学生性别',
stu_location char(10) comment '学生籍贯'
);
-- 注意表格名前加‘tb_’是为了和后面要学习的视图做区别
/*
教师编号【主键】 姓名 职称
*/ 
create table if not exists tb_teacher(
tea_id int primary key comment '教师编号',
tea_name char(15) comment '教师姓名',
tea_post char(15) comment '教师职称'
);
/*
选修课程编号【主键】 名称 学分 授课教师编号
*/ 
create table if not exists tb_c_class(
cl_id int primary key comment '选修课编号',
cl_name char(30) comment '选修课名称',
cl_credit int comment '学分',
cl_tea_id int comment '授课教师',
constraint `tea_cl` foreign key(cl_tea_id) references `tb_teacher`(tea_id)
);
/*
选课记录记录编号【主键】 学生学号【外键】 课程编号【外键】 选课日期 分数保证学生编号与课程编号联合起来的唯一性unique(cc_sid,cl_id)表示stu_id字段和cl_id字段联系起来是唯一的
*/ 
create table if not exists `tb_cc_log`(
cc_id int comment '记录编号',
cc_sid int comment '选课记录中的学生编号',
cc_cid int comment '选课记录中的课程编号',
cc_date date comment '选课日期',
cc_score decimal(4,1) comment '分数',
primary key(cc_id),
constraint `fk_cc_stu` foreign key(cc_sid) references tb_student(stu_id),
constraint `fk_cc_cl` foreign key(cc_cid) references tb_c_class(cl_id),
constraint `uk_stu_cl` unique(cc_sid,cc_cid)
);-- 先查看学生表结构
desc tb_student;
-- 学生表添加数据
insert into tb_student values
(1,'张三','2000-11-1',default,'河北省'),
(2,'李四','1998-1-1',default,'甘肃省'),
(3,'王五','1997-2-3','女','河南省'),
(4,'赵六','2003-11-11',default,'北京市');
-- 查询下数据是否录入
select * from tb_student;-- 先查看教师表结构
desc tb_teacher;
-- 教师表添加数据
insert into tb_teacher values
(1,'刷子','讲师一级'),
(2,'坦克','讲师一级'),
(3,'天天','讲师三级'),
(4,'芒果','讲师三级');
-- 查询下数据是否录入
select * from tb_teacher;-- 先查看课程表结构
desc tb_c_class;
-- 课程表添加数据
insert into tb_c_class values
(1001,'生物',3,1),
(1002,'地理',2,3),
(1003,'化学',3,2),
(1004,'历史',1,4);
-- 查询下数据是否录入
select * from tb_c_class;-- 先查看课程记录表结构
desc tb_cc_log;
-- 课程记录表添加数据
insert into tb_cc_log values
(1,1,1001,'2021-9-1',64),
(2,2,1002,'2021-9-2',74),
(3,3,1003,'2021-9-3',84),
(4,4,1004,'2021-9-4',94);
-- 查询下数据是否录入
select * from tb_cc_log;

相关文章:

数据库学习笔记(2)——workbench和SQL语言

1、workbench简介: 登录客户端的两种方法 在cmd中,只能通过sql语句控制数据库;workbench其实就是一种图形化数据库管理工具,在workbench中既可以通过sql语句控制数据库,也可以通过图形化界面控制数据库。通过workbenc…...

测量学期末考试之名词解释总结

仅供自己参考,且范围不全面.大地水准面与处于静止平衡状态的平均海水面重合,并延伸通过陆地的水准面高程地面点到大地水准面的铅锤距离水准面处于静止状态的水面就是水准面高差两点的水准面之间的铅锤距离垂直角在铅锤面上,瞄准目标的倾斜视线…...

TDengine时序数据库的简单使用

最近学习了TDengine数据库,因为我们公司有硬件设备,设备按照每分钟,每十分钟,每小时上传数据,存入数据库。而这些数据会经过sql查询,统计返回展示到前端。但时间积累后现在数据达到了百万级数据&#xff0c…...

记录每日LeetCode 2335.装满被子需要的最短总时长 Java实现

题目描述: 现有一台饮水机,可以制备冷水、温水和热水。每秒钟,可以装满 2 杯 不同 类型的水或者 1 杯任意类型的水。 给你一个下标从 0 开始、长度为 3 的整数数组 amount ,其中 amount[0]、amount[1] 和 amount[2] 分别表示需要…...

了解线程池newFixedTheadPool

什么是线程池 操作系统 能够进行运算 调度 的最小单位。线程池是一种多线程处理形式。 为什么引入线程池的概念 解决处理短时间任务时创建和销毁线程代价较大的弊端,可以使用线程池技术。 复用 饭店只有一个服务员和饭店有10个服务员 线程池的种类 newFixedThea…...

IP分片和TCP分段解析--之IP分片

本文目录什么是IP分片为什么会产生IP分片为什么要避免IP分片如何避免IP分片什么是IP分片 IP协议栈将TCP/UDP传输层要求它发送的,但长度大于发送端口MTU的一个数据包,分割成多个IP报文后分多次发送。这些分成多次发送的多个IP报文就是IP分片。 为什么会…...

物联网方向常见通信方式有哪些?

常用的有线通信方式有串口、以太网等。 1、串口 串口通信普及率高、成本低,但是组网能力差,只适合低速率和小数据量的通信 2、以太网接口(网线) 以太网(Ethernet)是目前最普遍的一种局域网 通信技术,它规定了包括 物理层的连线、电子信号和介质访问层协议的内容。 以太…...

windows wireshark抓到未加入组的组播消息

现象 在Windows上开启wireshark,抓到了大量地址为239.255.255.251的组播包。 同时,根据组播相关命令,调用netsh interface ipv4 show joins,显示当前并没加入 239.255.255.251 组播组。 解决 根据IGMP Snooping,I…...

【PTA Advanced】1156 Sexy Primes(C++)

目录 题目 Input Specification: Output Specification: Sample Input 1: Sample Output 1: Sample Input 2: Sample Output 2: 思路 代码 题目 Sexy primes are pairs of primes of the form (p, p6), so-named since "sex" is the Latin word for "…...

项目(今日指数)

一 项目架构1.1 今日指数技术选型【1】前端技术【2】后端技术栈【3】整体概览3.2 核心业务介绍1】业务结构预览【2】业务功能简介1.定时任务调度服务XXL-JOB通过RestTemplate多线程动态拉去股票接口数据,刷入数据库; 2.国内指数服务 3.板块指数服务 4.涨…...

适配器模式(Adapter Pattern)

1.什么是适配器模式? 适配器模式(Adapter Pattern)是作为两个不兼容的接口之间的桥梁。这种类型的设计模式属于结构型模式,它结合了两个独立接口的功能。 这种模式涉及到一个单一的类,该类负责加入独立的或不兼容的接…...

网易一面:select分页要调优100倍,说说你的思路? (内含Mysql的36军规)

背景说明: Mysql调优,是大家日常常见的调优工作。所以Mysql调优是一个非常、非常核心的面试知识点。 在40岁老架构师 尼恩的读者交流群(50)中,其相关面试题是一个非常、非常高频的交流话题。 近段时间,有小伙伴面试网易&#x…...

二叉树的遍历 (2023-02-11)

二叉树的遍历 二叉树的遍历分为:先序遍历、中序遍历、后序遍历和层次遍历。 1.先序遍历(根左右) (1)访问根节点 (2)左子树按根左右遍历 (3)右子树按根左右遍历 2.中序…...

string的深浅拷贝问题

深浅拷贝问题引入浅拷贝深拷贝总结问题引入 对于一个普通的string类: class String { public:String(const char* str ""){//构造函数if (nullptr str)str "";_str new char[strlen(str) 1];strcpy(_str, str);}~String(){//析构函数if …...

C++中的万能头文件

目录一、什么是万能头文件&#xff1f;二、源码三、编译器找不到 bits/stdc.h一、什么是万能头文件&#xff1f; C的万能头文件是&#xff1a; #include <bits/stdc.h>它是一个包含了每一个标准库的头文件。 优点&#xff1a; 在算法竞赛中节约时间&#xff1b;减少了…...

Java 8 Lambda 表达式 Stream

lambda表达式和Stream流是JDK8新增加的新特性&#xff0c;研究本文内容或者运行本文中的demo示例必须安装并使用JDK8以上的JDK版本。demo地址&#xff1a;https://gitee.com/huannzi/bigdataframework/tree/master/src/main/java/com/orkasgb/java 文章目录1、什么是Lambda表达…...

【VictoriaMetrics】VictoriaMetrics单机版部署(二进制版)

1、下载安装包git路径,本文基于1.87.1版本 进入git地址 :https://github.com/VictoriaMetrics/VictoriaMetrics/tags 2、下载其中linux下的 amd64架构...

SCI论文阅读-使用基于图像的机器学习模型对FTIR光谱进行功能组识别

期刊&#xff1a; Analytical Chemistry中科院最新分区&#xff08;2022年12月最新版&#xff09;&#xff1a;1区(TOP)影响因子&#xff08;2021-2022&#xff09;&#xff1a;8.008第一作者&#xff1a;Abigail A. Enders通讯作者&#xff1a;Heather C. Allen 原文链接&…...

双11大型互动游戏“喵果总动员” 质量保障方案总结

推荐语&#xff1a;互动游戏是一个系统化工程&#xff0c;在笔者的“喵果总动员”质量方案中&#xff0c;可以看到为保障用户体验&#xff0c;我们在各个难点的解决方案&#xff0c; 例如&#xff1a;用线上压测能力支持业务及时调整各服务容量、通过强化学习覆盖游戏行业的测试…...

剑指Offer专项突击版题解一

1.整数除法 思想&#xff1a;不能用除法、乘法、取余&#xff0c;那么可以用减法完成除法的操作&#xff0c;但是在减去被除数的时候&#xff0c;可以考虑被除数<<1扩大一倍在进行减少&#xff0c;加快减的速率。 2.二进制加法 思想&#xff1a;从末尾向前遍历&#xff0…...

椭圆曲线密码学(ECC)

一、ECC算法概述 椭圆曲线密码学&#xff08;Elliptic Curve Cryptography&#xff09;是基于椭圆曲线数学理论的公钥密码系统&#xff0c;由Neal Koblitz和Victor Miller在1985年独立提出。相比RSA&#xff0c;ECC在相同安全强度下密钥更短&#xff08;256位ECC ≈ 3072位RSA…...

MFC内存泄露

1、泄露代码示例 void X::SetApplicationBtn() {CMFCRibbonApplicationButton* pBtn GetApplicationButton();// 获取 Ribbon Bar 指针// 创建自定义按钮CCustomRibbonAppButton* pCustomButton new CCustomRibbonAppButton();pCustomButton->SetImage(IDB_BITMAP_Jdp26)…...

3.3.1_1 检错编码(奇偶校验码)

从这节课开始&#xff0c;我们会探讨数据链路层的差错控制功能&#xff0c;差错控制功能的主要目标是要发现并且解决一个帧内部的位错误&#xff0c;我们需要使用特殊的编码技术去发现帧内部的位错误&#xff0c;当我们发现位错误之后&#xff0c;通常来说有两种解决方案。第一…...

学校招生小程序源码介绍

基于ThinkPHPFastAdminUniApp开发的学校招生小程序源码&#xff0c;专为学校招生场景量身打造&#xff0c;功能实用且操作便捷。 从技术架构来看&#xff0c;ThinkPHP提供稳定可靠的后台服务&#xff0c;FastAdmin加速开发流程&#xff0c;UniApp则保障小程序在多端有良好的兼…...

五年级数学知识边界总结思考-下册

目录 一、背景二、过程1.观察物体小学五年级下册“观察物体”知识点详解&#xff1a;由来、作用与意义**一、知识点核心内容****二、知识点的由来&#xff1a;从生活实践到数学抽象****三、知识的作用&#xff1a;解决实际问题的工具****四、学习的意义&#xff1a;培养核心素养…...

如何为服务器生成TLS证书

TLS&#xff08;Transport Layer Security&#xff09;证书是确保网络通信安全的重要手段&#xff0c;它通过加密技术保护传输的数据不被窃听和篡改。在服务器上配置TLS证书&#xff0c;可以使用户通过HTTPS协议安全地访问您的网站。本文将详细介绍如何在服务器上生成一个TLS证…...

Golang——6、指针和结构体

指针和结构体 1、指针1.1、指针地址和指针类型1.2、指针取值1.3、new和make 2、结构体2.1、type关键字的使用2.2、结构体的定义和初始化2.3、结构体方法和接收者2.4、给任意类型添加方法2.5、结构体的匿名字段2.6、嵌套结构体2.7、嵌套匿名结构体2.8、结构体的继承 3、结构体与…...

比较数据迁移后MySQL数据库和OceanBase数据仓库中的表

设计一个MySQL数据库和OceanBase数据仓库的表数据比较的详细程序流程,两张表是相同的结构,都有整型主键id字段,需要每次从数据库分批取得2000条数据,用于比较,比较操作的同时可以再取2000条数据,等上一次比较完成之后,开始比较,直到比较完所有的数据。比较操作需要比较…...

Vite中定义@软链接

在webpack中可以直接通过符号表示src路径&#xff0c;但是vite中默认不可以。 如何实现&#xff1a; vite中提供了resolve.alias&#xff1a;通过别名在指向一个具体的路径 在vite.config.js中 import { join } from pathexport default defineConfig({plugins: [vue()],//…...

系统掌握PyTorch:图解张量、Autograd、DataLoader、nn.Module与实战模型

本文较长&#xff0c;建议点赞收藏&#xff0c;以免遗失。更多AI大模型应用开发学习视频及资料&#xff0c;尽在聚客AI学院。 本文通过代码驱动的方式&#xff0c;系统讲解PyTorch核心概念和实战技巧&#xff0c;涵盖张量操作、自动微分、数据加载、模型构建和训练全流程&#…...