SQL实践1

借着学校的数据库实验,来对之前学习的SQL语言进行实践和总结。

实验环境:

  • macOS 13.2 (22D49)
  • mysql Ver 8.0.32 for macos13.0 on arm64 (Homebrew)
  • DataGrip 2022.3.3

一. DataGrip连接本地MySQL

由于我之前都是用vs code的插件连接MySQL的(可能是我不会用,我感觉不太好使),所以这也是我第一次使用DataGrip。

1. 新建项目

首先先新建一个项目,并给项目命名。

2. 连接MySQL

在此输入连接的信息。可以看到,我貌似缺少了驱动,先去装个驱动。

装完驱动后测试连接成功后应用就行了。(测试前别忘了把数据库打开)

3. 配置所有架构

刚连接上的时候,我发现资源管理器中并找不到我之前创建的数据库,后发现需要配置所有架构才可以。

4. 编写SQL语句

  • 先新建一个查询控制台

  • 然后编写SQL语句并点那个绿色的小三角就行了

  • 以后需要再打开之前编写的SQL语句在这里打开

一. 创建表

  • 表结构

1. 创建学生选课关系数据库中的STUDENT表

create table Student
(
SNO varchar(9) not null comment '学号',
SNAME varchar(5) null comment '姓名',
SSEX varchar(1) null comment '性别',
SAGE int null comment '年龄',
SDEPT varchar(10) null comment '专业',
constraint Student_NO
primary key (SNO), # 设置学号为主键
constraint CHECK_AGE
check (SAGE >= 0 and SAGE <= 120), # 限制年龄为0-120岁
constraint CHECK_SEX
check (SSEX = '男' or SSEX = '女') # 限制性别为男或女
)
comment '学生表';
  • 直接用GUI创建会方便很多

2. 创建学生选课关系数据库中的COURSE表

create table COURSE
(
CNO varchar(3) not null comment '编号',
CNAME varchar(10) not null comment '课程名',
CPNO int null comment '前置课程号',
CCREDIT int null comment '学分',
constraint COURSE_NO
primary key (CNO) # 设置编号为主键
)
comment '课程表';

3. 创建学生选课关系数据库中的SC表

create table SC
(
SNO varchar(9) not null comment '选修学生学号',
CNO varchar(3) not null comment '选修课程号',
GRADE int null comment '成绩',
constraint SC___CNO
foreign key (CNO) references COURSE (CNO), # 链接到课程表的外键
constraint SC___SNO
foreign key (SNO) references Student (SNO) # 链接到学生表的外键
)
comment '选修表';

二. 添加数据

  • 以下为学生表的初始数据
insert into Student(sname,ssex,sno, sage, sdept) values('李勇','男','200215121',20,'CS');
insert into Student(sname,ssex,sno, sage, sdept) values('刘晨','女','200215122',19,'CS');
insert into Student(sname,ssex,sno, sage, sdept) values('王敏','女','200215123',18,'MA');
insert into Student(sname,ssex,sno, sage, sdept) values('张立','男','200215125',19,'IS');

  • 以下为课程表的初始数据
insert into course(cno,cname,cpno,ccredit) values('6','数据处理',null,2);
insert into course(cno,cname,cpno,ccredit) values('2','数学',null,2);
insert into course(cno,cname,cpno,ccredit) values('7','PASCAL语言','6',4);
insert into course(cno,cname,cpno,ccredit) values('5','数据结构','7',4);
insert into course(cno,cname,cpno,ccredit) values('1','数据库','5',4);
insert into course(cno,cname,cpno,ccredit) values('3','信息系统','1',4);
insert into course(cno,cname,cpno,ccredit) values('4','操作系统','6',3);

  • 以下为选修表的初始数据
insert into sc(sno,cno,grade) values('200215121','1',92);
insert into sc(sno,cno,grade) values('200215121','2',85);
insert into sc(sno,cno,grade) values('200215121','3',88);
insert into sc(sno,cno,grade) values('200215122','2',90);
insert into sc(sno,cno,grade) values('200215122','3',80);
commit; # Google上说这是事物部分知识点,还没学到那

三. 修改数据

1. 修改Student表结构,为Student表格添加一个“入学时间”属性,属性名为Senrollment,各元组在属性Senrollment的值是多少?

alter table Student add Senrollment date comment '入学时间';
  • 值是null

2. 修改Student表结构,把Ssex列的宽度设置为6个字节

alter table Student modify SSEX varchar(6);

在此出现了两个问题:

  1. 注释没掉了

  1. 之前设置的检查乱码了

  • 在修改表中字段时,是覆盖的,之前设置的约束和注释什么的都要重新设置。

3. 修改Student表结构,删除Senrollment列(注:删除SYS模式下表的列将被拒绝)

alter table Student drop Senrollment;

MySQL学习笔记-SQL实践1的更多相关文章

  1. MYSQL学习笔记——sql语句优化工具

    优化sql:思路: 使用explan->先查询type类型看看是all还是ref,然后判断 possible_keys (显示可能应用在这张表中的索引, 一个或多个.查询涉及到的字段是若存在索引 ...

  2. MYSQL学习笔记——sql语句优化之索引

    上一篇博客讲了可以使用慢查询日志定位耗时sql,使用explain命令查看mysql的执行计划,以及使用profiling工具查看语句执行真正耗时的地方,当定位了耗时之后怎样优化呢?这篇博客会介绍my ...

  3. MySQL学习笔记-事务相关话题

    事务机制 事务(Transaction)是数据库区别于文件系统的重要特性之一.事务会把数据库从一种一致状态转换为另一个种一致状态.在数据库提交工作时,可以确保其要么所有修改都已经保存了,要么所有修改都 ...

  4. MySQL学习笔记-数据库文件

    数据库文件 MySQL主要文件类型有如下几种 参数文件:my.cnf--MySQL实例启动的时候在哪里可以找到数据库文件,并且指定某些初始化参数,这些参数定义了某种内存结构的大小等设置,还介绍了参数类 ...

  5. MySQL学习笔记-cache 与 buffer

    Cache和Buffer是两个不同的概念,简单的说,Cache是加速"读",而 buffer是缓冲"写",前者解决读的问题,保存从磁盘上读出的数据,后者是解决写 ...

  6. MySQL学习笔记-MySQL体系结构总览

    MySQL体系结构总览 不管是用哪种数据库,了解数据库的体系结构都是极为重要的.MySQL体系结构主要由数据库和数据库实例构成. 数据库:物理操作系统文件或者其它文件的集合,在mysql中,数据库文件 ...

  7. Mysql学习笔记(三)对表数据的增删改查。

    正文内容. 这一部分是最简单的,也是最麻烦的.简单是因为其实只包括增删该插四个部分.大体上看,增加数据.删除数据.修改数据.查询数据都不麻烦啊,我们日常都是常用的.这个谁不会呢?以前在培训机构学mys ...

  8. MySQL学习笔记一

    MySQL 学习笔记 一 一.数据库简单介绍 1. 按照数据库的发展时间顺序,主要出现了以下类型数据库系统: Ø 网状型数据库 Ø 层次型数据库 Ø 关系型数据库 Ø 面向对象数据库 上面4中数据库系 ...

  9. Mysql学习笔记(二)数据类型 补充

    原文:Mysql学习笔记(二)数据类型 补充 PS:简单的补充一下数据类型里的String类型以及列类型... 学习内容: 1.String类型 2.列类型存储需求 String类型: i.char与 ...

  10. Mysql学习笔记(一)数据类型

    原文:Mysql学习笔记(一)数据类型 学习内容: Mysql基本数据类型. 1.数字类型.. i.整型     Mysql数据类型             含义(有符号)     tinyint(m ...

随机推荐

  1. 实训篇-Html-frameset框架集

    frameset.html <!DOCTYPE html> <html> <head> <meta charset="utf-8"> ...

  2. CentOS+Django+uWSGI+Celery+Supervisor配置

    目录 背景 目录 安装 配置Supervisor 1.生成配置文件 2. 修改配置文件 3. 创建进程文件 创建 uwsgi.conf 进程文件 创建celery进程文件 启动supervisor 启 ...

  3. 力扣412(java)-Fizz Buzz(简单)

    题目: 给你一个整数 n ,找出从 1 到 n 各个整数的 Fizz Buzz 表示,并用字符串数组 answer(下标从 1 开始)返回结果,其中: answer[i] == "FizzB ...

  4. Serverless Kubernetes:理想,现实与未来

    简介: 当前 Serverless 容器的行业趋势如何?有哪些应用价值?如果 Kubernetes 天生长在云上,它的架构应该如何设计?Serverless 容器需要哪些基础设施?阿里云容器服务产品负 ...

  5. 【全观测系列】Elasticsearch应用性能监控最佳实践

    ​简介:本文介绍了应用性能监控的应用价值以及解决方案等. 1.什么是全观测? 要了解全观测,我们先看看传统运维存在哪些问题. 数据孤岛,分散在不同部门,分析排查故障困难: 多个厂商的多种工具,无法自动 ...

  6. 当设计模式遇上 Hooks

    ​简介: 数据结构与设计模式能够指导我们在开发复杂系统中寻得一条清晰的道路,既然都说 Hooks 难以维护,那就尝试让「神」来拯救这混乱的局面.对于「设计模式是否有助于我们写出更优雅的 Hooks 」 ...

  7. [GPT] Unable to negotiate with xx.xx.xx.xx port 22: no matching host key type found. Their offer: ssh-rsa,ssh-dss

      这个错误通常发生在 SSH 客户端无法找到与 SSH服务器 匹配的主机密钥类型时. 这可能是因为SSH服务器配置为使用SSH客户端不支持的主机密钥类型. 要解决此问题,您需要将缺少的主机密钥类型添 ...

  8. [ML] 数据预处理 - 特性归一化的目的

    简而言之,归一化的目的就是使得预处理的数据被限定在一定的范围内(比如[0,1]或者[-1,1]), 从而消除奇异样本数据导致的不良影响. 是否归一化主要在于是否关心变量取值. Tool:ChatAI ...

  9. XAML 给资源起个好名字 用 StaticResource 起一个别名

    本文来和大家聊一下关于 XAML 资源的定义的事情,和开发技术关系不大,更多的是开发的思路 在稍微大一点的项目里,肯定 XAML 资源是少不了的.对于 XAML 资源,行业里讨论多(非小白讨论)的是关 ...

  10. Docker 之 Dockerfile

    Dockerfile 是一个用来构建镜像的文本文件,文本内容包含了一条条构建镜像所需的指令和说明. 一.官方镜像 学习docker镜像的制作之前,先去看看官方的镜像是怎么制作的,查看官方dockerf ...