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

news2024/12/23 16:16:29

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;

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

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

相关文章

LeetCode题解 动态规划(四):416 分割等和子集;1049 最后一块石头的重量 II

背包问题 下图将背包问题做了分类 其中之重点,是01背包,即一堆物件选哪样不选哪样放入背包里。难度在于,以前的状态转移,多只用考虑一个变量,比如爬楼梯的阶层,路径点的选择,这也是能用滚动数组…

ChatGPT 的未来挑战和风险

ChatGPT 是 OpenAI 开发的流行语言模型,彻底改变了我们与 AI 交互的方式。然而,随着像 ChatGPT 这样的语言模型的使用越来越广泛,重要的是要考虑它们未来可能面临的潜在风险和挑战。 一、数据质量和公平性 使用 ChatGPT 的主要风险之一是用于…

大数据-------元数据管理

一、什么是元数据 元数据就是描述数据的数据,它为企业的各类数据提供了上下文环境,使企业能够更好地了解、管理和使用数据。 现在数据对于公司的决策十分的重要,随着业务的发展,业务线会慢慢庞大起来,随着开发人员的…

九、STM32定时器讲解 - 通用定时器实战

目录 1.三种定时器的区别 2.通用定时器的特点描述 3.计数器模式 4.通用定时器工作过程 5.计数器时钟计算方法、 5.1定时器的输入时钟频率 - TimeClockFren 5.2计数器时钟计算方法 6.定时器相关寄存器 7.定时器库函数结构体 8.通用定时器函数 9.定时器中断配置过程 1…

图论算法:树上倍增法解决LCA问题

文章目录树上倍增法: LCA问题树上倍增法: LCA问题 树上倍增法用于求解LCA问题是一种非常有效的方法。 倍增是什么? 简单来说,倍增就是 1 2 4 8 16 … 2^k 可以发现倍增是呈 2的指数型递增的一类数据,和二分一样&…

黑马程序员 Linux 教程

目录Linux 简介不同应用领域主流操作系统Linux 系统历史Linux 系统版本Linux 安装安装方式网卡设置安装 SSH 连接工具使用 FinalShell 连接到 LinuxLinux 和 Windows 目录结构对比Linux 目录介绍Linux 常用命令Linux 命令初体验Linux 命令使用技巧Linux 命令格式文件目录操作命…

Python的文件编码,复制,缓冲,删除

能力有限,仅供参考 本篇博文是上一篇博文( Python的文件读取,写入)的后续,也是python文件管理的一部分,废话不多说,现在就开始。 1. 编码 在实际工作学习中,你可以遇到乱码的问题…

c语言递归 累和 ,累乘积,斐波那契数列,字符串长度

目录 递归使用场景 1:使用递归的方式计算 Sn123..100 2:计算 n!n*(n-1)*(n-2)*......*1; 3:计算输出斐波那契数列前20项,并按每行4个数的格式输出(2019年) 4: 用递归和非递归两种方式编写函数strlength()。该函数…

Nacos 入门微服务项目实战

Nacos 核心源码精讲 - IT贱男 - 掘金小册全方位源码精讲,深度剖析 Nacos 注册中心和配置中心的核心思想。「Nacos 核心源码精讲」由IT贱男撰写,375人购买https://s.juejin.cn/ds/BuC3Vs9/ Hi,大家好,欢迎大家来学习《Nacos 核心源…

2022黑马Redis跟学笔记.基础篇(一)

2022黑马Redis跟学笔记.基础篇 一1.Redis入门1.1.认识NoSQL1.1.1.结构化与非结构化1.1.2.关联和非关联1.1.3.查询方式1.1.4.事务1.1.5.总结1.2.认识Redis1.3.安装Redis步骤一:安装Redis依赖步骤二:上传安装包并解压步骤三:启动(1).默认启动(2…

开发微服务电商项目演示(三)

一,nginx动静分离第1步:通过SwitchHosts新增二级域名:images.zmall.com第2步:将本次项目的易买网所有静态资源js/css/images复制到nginx中的html目录下第3步:在nginx的核心配置文件nginx.conf中新增二级域名images.zma…

论文阅读:MINE: Towards Continuous Depth MPI with NeRF for Novel View Synthes

中文标题:基于连续深度多平面和神经辐射场的新视角合成 本文只介绍与NeRF原文不同的部分 创新点 对单一图像进行密集三维重建,完成新视角合成与深度估计的工作。从单个图像生成连续和遮挡绘制的三维重建。MINE借鉴NeRF可以生成连续的深度图像。 解决…

leaflet上传CSV文件,在地图上显示图形(示例代码054)

第054个 点击查看专栏目录 本示例的目的是介绍演示如何在vue+leaflet中加载CSV文件,将图形显示在地图上。CSV(逗号分隔值)文件是一种简单且开放的文件格式,以纯文本形式存储表格数据。 几乎所有电子表格和数据库软件都可以导入/导出这种文件格式。 直接复制下面的 vue+ope…

Navicat无法连接MySQL报错1251的解决方法

日期:2023年2月10日 作者:Commas 签名:(ง •_•)ง 积跬步以致千里,积小流以成江海…… 注释:如果您觉得有所帮助,帮忙点个赞,也可以关注我,我们一起成长;如果有不对的地方&#xf…

C++中的智能指针

1.RAII 与引用计数了解 Objective-C/Swift 的程序员应该知道引用计数的概念。引用计数这种计数是为了防止内存泄露而产生的。 基本想法是对于动态分配的对象,进行引用计数,每当增加一次对同一个对象的引用,那么引用对象的引用计数就会增加一次…

[AAAI 2022] TransFG: A Transformer Architecture for Fine-grained Recognition

Contents TransFG ArchitectureExperimentsReferencesTransFG Architecture Overlapping patch split:ViT 是把图片分成一系列不重叠的 patches,作者认为这可能会破坏 discriminative regions. 为了解决上述问题,作者提出使用 Overlapping patch split,划分的 patch 数 N …

消息中间件RabbitMQ

文章目录1. 协议2. RabbitMQ架构原理3.内存管理4.磁盘控制5. RabbiMQ 插件管理6. 死信6.1 死信队列6.2 延时插件7. 高可用集群方案7.1 普通集群模式7.2 镜像集群模式7.3 基于HAproxyKeepalived搭建高可用8.可靠性投递8.1 消息从生产者发送到Broker两种确认机制8.2 消息从Exchan…

数据Kylin(三):Kylin配置

Kylin配置 一、kylin.metadata.url 指定元数据库路径,默认值为 kylin_metadata@hbase 二、kylin.metadata.sync-retries 指定元数据同步重试次数,默认值为 3 三、kylin.env.hdfs-working-dir 指定 Kylin 服务所用的 HDFS 路径,默认值为 /kylin,请确保启动 Kylin 实例的用户…

【面试题】对闭包的理解?什么是闭包?

大厂面试题分享 面试题库后端面试题库 (面试必备) 推荐:★★★★★地址:前端面试题库闭包的背景由于js中只有两种作用域,全局作用域和函数作用域,而在开发场景下,将变量暴露在全局作用域下的时候…

云盘满了怎么办?阿里云服务器云盘扩容操作了解一下

1.背景 2.确定扩容云盘类型与控制台操作 3.ECS实例内部扩容操作说明 3.1 ECS实例内部执行扩容分区 3.2 ECS实例内部执行扩容文件系统 1.背景软件应用的数据库所在服务器磁盘使用率已经达到97%,服务器操作实例如下: 一旦使用达到上限,所有的数…