当前位置: 首页 > 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;
http://www.lryc.cn/news/2474.html

相关文章:

  • 测量学期末考试之名词解释总结
  • TDengine时序数据库的简单使用
  • 记录每日LeetCode 2335.装满被子需要的最短总时长 Java实现
  • 了解线程池newFixedTheadPool
  • IP分片和TCP分段解析--之IP分片
  • 物联网方向常见通信方式有哪些?
  • windows wireshark抓到未加入组的组播消息
  • 【PTA Advanced】1156 Sexy Primes(C++)
  • 项目(今日指数)
  • 适配器模式(Adapter Pattern)
  • 网易一面:select分页要调优100倍,说说你的思路? (内含Mysql的36军规)
  • 二叉树的遍历 (2023-02-11)
  • string的深浅拷贝问题
  • C++中的万能头文件
  • Java 8 Lambda 表达式 Stream
  • 【VictoriaMetrics】VictoriaMetrics单机版部署(二进制版)
  • SCI论文阅读-使用基于图像的机器学习模型对FTIR光谱进行功能组识别
  • 双11大型互动游戏“喵果总动员” 质量保障方案总结
  • 剑指Offer专项突击版题解一
  • Django框架之模型
  • OSACN-Net:使用深度学习和Gabor心电图信号谱图进行睡眠呼吸暂停分类
  • 使用开源实时监控系统 HertzBeat 5分钟搞定 Mysql 数据库监控告警
  • 插件 sortablejs:HTML元素可拖动排序
  • libVLC 视频裁剪
  • LAMP架构介绍及配置
  • Android图形显示流程简介
  • 4.5.3 ArrayList
  • 十二、Linux文件 - fseek函数讲解
  • Python3.10新特性之match语句示例详解
  • 虎牙盈利能力得到改善,但监管风险对其收入产生负面影响