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

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;
  • 创建的表结构展示
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  • 1
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值