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

2023-11-06

1、workbench简介:

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

2、数据库语言(SQL):

  • 结构化语言简介
    在这里插入图片描述
  • DDL:
    • CREATE:创建数据库、表、视图、函数、存储过程等对象。
    • ALTER:修改数据库、表等对象的结构定义,如添加、删除、重命名列或索引、改变数据类型等操作。
    • DROP:删除数据库、表、视图、函数、存储过程等对象。
    • TRUNCATE:快速清空表中所有记录。
    • RENAME:对已有数据库、表进行重命名。
    • COMMENT:对数据库、表、列、索引等对象添加注释。
    • GRANT/REVOKE:授权和撤销权限。
  • DML:
    • SELECT:用于从一个或多个表中查询数据。
    • INSERT:将数据插入到一个表中。
    • UPDATE:修改一个或多个表中已有的数据。
    • DELETE:从一个或多个表中删除数据。
  • DQL:
  • DCL:
    • GRANT:授权用户或角色执行特定的数据库操作。
    • REVOKE:撤销之前对用户或角色所授予的权限。
  • 创建数据表的思路
    在这里插入图片描述
  • 由很多数据表的集合就构成了数据库
  • 数据库操作指令
    在这里插入图片描述
  • 注意:没事干别删除系统默认的库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;

/*
数据库表命名规范:
必须使用字母、数字和下划线字符;
第一个字符必须是字母或下划线字符,不能是数字;
名称不区分大小写(但在 Windows 上默认是区分的);
名称长度不超过 64 个字符。

学生
	学号【主键】 姓名 出生日期 性别【默认】 籍贯
教师
	编号【主键】 姓名 职称
选修课程
	编号【主键】 名称 学分 授课教师编号
选课记录
	记录编号【主键】 学生学号【外键】 课程编号【外键】 选课日期 分数
    保证学生编号与课程编号联合起来的唯一性
    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;
  • 创建的表结构展示
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

数据库学习笔记(2)——workbench和SQL语言 的相关文章

随机推荐

  • BurpSuite2021 -- Intruder模块

    真正爱上一个人的感觉 就是别人再好与我无关 承蒙你的出现 足够让我欢喜一辈子 网易云热评 一 Target 目标 当我们抓到数据包 右击发送到Intruder模块 这里会自动填写好信息 二 设置爆破模式即参数 1 Sniper 对变量进行依
  • 类模板的定义和使用注意事项。

    include iostream include string using namespace std 类模板 设置了默认数据类型 如 template
  • MATLAB代码:基于二阶锥优化电气综合能源系统优化调度研究

    MATLAB代码 基于二阶锥优化电气综合能源系统优化调度研究 关键词 电气综合能源 优化调度 二阶锥优化 参考文档 考虑气电联合需求响应的气电综合能源配网系统协调优化运行 参考部分配电网设备模型 非完全复现 以文档为准 仿真平台 MATLA
  • 【C++】一文详解lambda表达式用法及发展历程

    文章目录 1 lambda表达式语法 2 捕获列表 2 1 作用域 2 2 捕获值与捕获引用 2 3 特殊捕获方法 3 lambda表达式实现原理 4 无状态lambda表达式 5 在STL中使用lambda表达式 6 广义捕获 7 泛型l
  • 域名系统中的本地域名服务器、根域名服务器、顶级域名服务器以及权限域名服务器。

    根域名服务器 是最高层次的域名服务器 也是最重要的域名服务器 所有的根域名服务器都知道所有的顶级域名服务器的域名和IP地址 顶级域名服务器 这些域名服务器负责管理在该顶级域名服务器注册的所有二级域名 权限域名服务器 负责一个区的域名服务器
  • 资源服务器验证Token的几种方式

    资源服务器验证Token的几种方式 在微服务中 除了eureka config 网关等基本的微服务还有认证服务和资源服务 上图描述了使用了 OAuth2 的客户端请求验证token的流程 是通过资源服务向认证服务验证token 过程就是客户
  • 消息队列原理及选型

    什么是消息队列 消息队列 Message Queue 是一种进程间通信或同一进程的不同线程间的通信方式 什么时候需要消息队列 异步处理 例如短信通知 终端状态推送 App推送 用户注册等 有些业务不想也不需要立即处理消息 消息队列提供了异步
  • Redis主从复制架构和Sentinel哨兵机制

    一 redis主从复制原理 redis主从同步策略 slave刚加入集群会触发一次全量同步 全量复制 全量同步之后 进行增量复制 slave优先是增量同步 如果增量同步失败会尝试从master节点进行全量复制 全量复制 slave初始化阶段
  • 华为OD机试真题- 数值同化-2023年OD统一考试(B卷)

    题目描述 存在一个m n的二维数组 其成员取值范围为0 1 2 其中值为1的元素具备同化特性 每经过1S 将上下左右值为0的元素同化为1 而值为2的元素 免疫同化 将数组所有成员随机初始化为0或2 再将矩阵的 0 0 元素修改成1 在经过足
  • IDEA连接SSH以及上传项目文件到指定远程服务器文件夹

    一 IDEA连接SSH 确认你的密码输对了 还好我保存了我的远程服务器的密码 原先我一直以为我输对了 导致一直报错Auth fail 点击ok 连接上了 二 将项目文件传输到 远程服务器的指定文件夹 name随意起个名字 1 是你的本地项目
  • 什么叫异步通信?同步通信与异步通信的区别是什么?

    异步通信 又称为起止式异步通信 数据帧与数据帧之间没有固定时间间隔约定 可以是不定时长的 空闲位 异步通信是在内部约定好时钟 芯片设计设定好的时钟 用起始位开头 中间包含数据位后面随效验位和停止位的格式 我们称之为 帧 整个数据帧的位组成是
  • 【云服务器】阿里云服务器部署web项目前的准备(安装Nginx,jdk,Tomcat,MySQL)

    提示 文章写完后 目录可以自动生成 如何生成可参考右边的帮助文档 目录 前言 一 首先得有一台云服务器 白嫖党可以去看看鱼皮的视频或者百度搜索如何白嫖阿里云服务器 二 安装nginx反向代理服务器 二 Jdk和Tomcat的安装 1 jdk
  • 集团服务器 系统,开创集团云服务器

    开创集团云服务器 内容精选 换一换 华为云帮助中心 为用户提供产品简介 价格说明 购买指南 用户指南 API参考 最佳实践 常见问题 视频帮助等技术文档 帮助您快速上手使用华为云服务 本节操作介绍通过华为云APP连接Linux实例的操作步骤
  • umi搭建的react项目——如何mock数据

    umi搭建的react项目 如何mock数据 1 本地配置打开 本地配置umirc local ts中的mock配置打开 export default defineConfig mock 2 配置接口 在项目配置接口的文件中添加接口 例如
  • eclipse 设置系统变量和运行参数

    在开发时 有时候可能需要根据不同的环境设置不同的系统参数 我们都知道 在使用java jar命令时可以使用 D参数来设置运行时的系统变量 同样 在Eclipse中运行java程序时 我们怎么设置该系统变量呢 另外 如果我们的程序需要输入运行
  • mysql 游标

    who 游标是什么 游标 cursor 官方定义 是系统为用户开通的一个数据缓冲区 存放sql执行结果 每个游标区都有一个名字 用户可以通过sql语句逐一从游标中获取记录 并赋值给变量 交由主语言进一步处理 个人理解 感觉游标和指针相似 指
  • 手写函数柯里化(Curry)--原理剖析

    函数柯理化的作用 前端使用柯里化的用途主要就是简化代码结构 提高系统的维护性 一个方法 只有一个参数 强制了功能的单一性 很自然就做到了功能内聚 降低耦合 函数柯理化的优点 降低代码的重复 提高代码的适用性 在后面实现应用部分 ajax 会
  • webpack打包速度优化

    优化WebPack打包速度 在开发过程中 WebPack的打包速度是一个非常重要的考虑因素 随着项目规模的增长 打包时间也会越来越长 影响开发效率和用户体验 本文将循序渐进地介绍一些优化WebPack打包速度的方法 先分析打包瓶颈 然后逐步
  • 超分(Super-Resolution, SR )

    知乎有一篇帖子总结了几篇超分的论文 写的很好 https zhuanlan zhihu com p 25532538 utm source tuicool utm medium referral 下面针对上面没有提到的论文进行补充 6 PR
  • 数据库学习笔记(2)——workbench和SQL语言

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