mysql项目实战,常用sql语句的实战笔记

1.使用sql语句对数据库进行创建

//创建实验用的数据库
CREATE DATABASE jsschool;//使用当前数据库
USE jsschool;//创建学生表
CREATE TABLE student (sno VARCHAR(20) PRIMARY KEY COMMENT '学生编号',sname VARCHAR(20) NOT NULL COMMENT '学生姓名',ssex VARCHAR(10) NOT NULL COMMENT '学生性别',sbirthday DATETIME COMMENT '学生生日', class VARCHAR(20) COMMENT '学生班级'
)ENGINE=InnoDB DEFAULT CHARSET=utf8;//创建教师表
CREATE TABLE teacher (tno VARCHAR(20) PRIMARY KEY COMMENT '教师编号',tname VARCHAR(20) NOT NULL COMMENT '教师姓名',tsex VARCHAR(10) NOT NULL COMMENT '教师性别',tbirthday DATETIME COMMENT '教师生日',prof VARCHAR(20) NOT NULL COMMENT '教师职称',depart VARCHAR(20) NOT NULL  COMMENT '教师院系'
)ENGINE=InnoDB DEFAULT CHARSET=utf8;//创建课程表
CREATE TABLE course (cno VARCHAR(20) PRIMARY KEY COMMENT '课程编号',cname VARCHAR(20) NOT NULL COMMENT '课程名称',tno VARCHAR(20) NOT NULL COMMENT '外键教师编号',FOREIGN KEY(tno) REFERENCES teacher(tno) 
)ENGINE=InnoDB DEFAULT CHARSET=utf8;//创建分数表
CREATE TABLE score (sno VARCHAR(20) NOT NULL COMMENT '学生编号', cno VARCHAR(20) NOT NULL COMMENT '课程编号', degree DECIMAL COMMENT '成绩',FOREIGN KEY(sno) REFERENCES student(sno),	FOREIGN KEY(cno) REFERENCES course(cno)
)ENGINE=InnoDB DEFAULT CHARSET=utf8;//列出所有创建的表
SHOW TABLES;

2.给我们创建好的数据表中插入一些数据

INSERT INTO student VALUES('101', '张琴', '男', '1999-02-01', '51');
INSERT INTO student VALUES('102', '李福', '男', '1995-01-02', '52');
INSERT INTO student VALUES('103', '刘军', '男', '1998-01-24', '51');
INSERT INTO student VALUES('104', '张文', '女', '1994-02-20', '53');
INSERT INTO student VALUES('105', '陈锦文', '女', '1999-02-10', '56');
INSERT INTO student VALUES('106', '周建', '男', '1993-05-21', '55');
INSERT INTO student VALUES('107', '钱富', '男', '1995-09-20', '55');
INSERT INTO student VALUES('108', '刘建国', '男', '1996-06-01', '56');
INSERT INTO student VALUES('109', '李四', '男', '1998-08-03', '57');INSERT INTO teacher VALUES('1', '张宝宝', '女', '1975-02-02', '助教', '电子工程');
INSERT INTO teacher VALUES('2', '李雯雯', '女', '1979-09-08', '讲师', '计算机科学');
INSERT INTO teacher VALUES('3', '王富贵', '男', '1972-05-05', '助教', '土木工程');
INSERT INTO teacher VALUES('4', '金钱多', '男', '1976-05-24', '助教', '外语系');INSERT INTO course VALUES('65', '集成电路', '1');
INSERT INTO course VALUES('64', '数据结构', '2');
INSERT INTO course VALUES('67', '工程结构', '3');
INSERT INTO course VALUES('66', '英语', '4');INSERT INTO score VALUES('101', '65', '86');
INSERT INTO score VALUES('102', '64', '75');
INSERT INTO score VALUES('103', '65', '68');
INSERT INTO score VALUES('103', '64', '92');
INSERT INTO score VALUES('104', '67', '88');
INSERT INTO score VALUES('104', '67', '76');
INSERT INTO score VALUES('105', '66', '64');
INSERT INTO score VALUES('106', '66', '91');
INSERT INTO score VALUES('107', '65', '78');
INSERT INTO score VALUES('108', '64', '85');
INSERT INTO score VALUES('109', '66', '79');
INSERT INTO score VALUES('109', '67', '81');

3.基本的sql查询语句

//查询所有数据从student表中
select* from student;
//查询sname,ssex,class 三个字段
select sname,ssex,class from student;
//查询字段depart 取出重复的数据,只针对distinct字段
select distinct depart from teacher;
//查询分数在60 到80 之间的学生
select *from score where degree between 60 and 80;
//查询成绩是85 86 88的学生
select *from score where degree in(85,86,88);
//查询51班同学或者性别是女的同学
select *from student where class='51' or ssex='女';
//查询成绩, 排列顺序是让编号顺序排列,成绩倒叙排列
select *from score order by cno asc,degree desc;
//统计51班学生的数量
select count(*) from student where class='51';
//子查询,查询成绩最好的学生
select sno,cno,degree from score where degree=(select max(degree) from score);
//排序查询,选出成绩最好的学生
select sno,cno,degree from score order by degree desc limit 1;

4.计算平均值


//计算各科成绩的平均值select avg(degree) from score where cno='64';select avg(degree) from score where cno='65';//按照课程分组,计算各科的平均值
select avg(degree) from score group by cno;//计算各科的平均分数,统计各科的总人数,选出人数大于2的,并且课程以6开头的
select cno,avg(degree),count(*) from score 
group by cno having count(cno)>=2 and cno like '6%';;

5.联表查询


select sname,cno,degree from student,score 
where student.sno=score.sno;select sname,cname,degree from student,course,score 
where student.sno=score.sno 
and course.cno=score.cno;

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

WebSocket相关问题

1.WebSocket是什么?和HTTP的区别? WebSocket是一种基于TCP连接的全双工通信协议,客户端和服务器仅需要一次握手,两者之间就可以创建持久性的连接,并且支持双向数据的传输。WebSocket和HTTP都是基于TCP的应用层协议&am…

解决: 0x803f7001 在运行Microsoft Windows 非核心版本的计算机上,运行“ slui.exe 0x2a 0x803f7001 “以显示错误文本,激活win10步骤流程。

一. 解决 0x803F7001在运行Microsoft Windows非核心版本的计算机错误 首先,按下winR打开"运行",输入 regedit 后回车,打开注册表。   然后再注册表下输入地址HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SoftwareProt…

YOLO部署实战(2):使用OpenCV优化视频转图片流程并设置帧数

在计算机视觉和图像处理领域,OpenCV是一个强大的开源库,它为处理图像和视频提供了丰富的工具和功能。本文将介绍如何使用OpenCV将视频文件转换为一系列图片,并演示如何通过设置转换的帧数来优化这一过程。 1 Win10配置OpenCV 在Windows操作…

开源项目的三年,我的项目经历了哪些变化?

0.前言 自己一个项目写了三年,到底写了什么东西了,这个项目经历了哪些变化呢?其中的心路历程如何? 兄弟们,要是感觉我的项目有价值,去b站给俺点点关注呐。我更新的更快。点击下面的了解就可以跳转去b站。…

水面漂浮物监测识别摄像机

水面漂浮物监测识别摄像机是一种用于监测水域表面上漂浮物的设备,可以帮助环保部门或海洋研究机构快速发现和识别水中的浮游物,有助于保护水质和生态环境。这种摄像机通常具有以下功能和特点: 高分辨率摄像头:配备高清晰度摄像头&…

ongoDB从入门到实战之.NET Core使用MongoDB开发ToDoList系统(2)-Swagger框架集成

Swagger是什么? Swagger是一个规范且完整API文档管理框架,可以用于生成、描述和调用可视化的RESTful风格的 Web 服务。Swagger 的目标是对 REST API 定义一个标准且和语言无关的接口,可以让人和计算机拥有无须访问源码、文档或网络流量监测就…

算法练习-删除二叉搜索树中的节点(思路+流程图+代码)

难度参考 难度:中等 分类:二叉树 难度与分类由我所参与的培训课程提供,但需要注意的是,难度与分类仅供参考。且所在课程未提供测试平台,故实现代码主要为自行测试的那种,以下内容均为个人笔记,旨…

第三百一十三回

文章目录 1. 概念介绍2. 实现方法2.1 obscureText属性2.2 decoration属性 3. 示例代码4. 内容总结 我们在上一章回中介绍了"如何实现倒计时功能"相关的内容,本章回中将介绍如何实现密码输入框.闲话休提,让我们一起Talk Flutter吧。 1. 概念介绍…

【JS逆向七】逆向某翻译网站的sign参数,并模拟生成 仅供学习

逆向日期:2024.02.07 使用工具:Node.js 文章全程已做去敏处理!!! 【需要做的可联系我】 可使用AES进行解密处理(直接解密即可):AES加解密工具 1、打开某某网站(请使用文章开头的AES…

洛谷C++简单题小练习day9—[AHOI2017]寻找探监点

day9--[AHOI2017]寻找探监点--2.7 习题概述 题目描述 一个nn 的网格图(标号由 1,1 开始)上有 m 个探测器,每个探测器有个探测半径 r ,问这 nn 个点中有多少个点能被探测到。 输入格式 第一行 3 个整数 n,m,r。 接下来 m 行&…

TCP 粘包/拆包

文章目录 概述粘包拆包发生场景解决TCP粘包和拆包问题的常见方法Netty对粘包和拆包问题的处理小结 概述 TCP的粘包和拆包问题往往出现在基于TCP协议的通讯中,比如RPC框架、Netty等 TCP 粘包/拆包 就是你基于 TCP 发送数据的时候,出现了多个字符串“粘”…

如何修改远程端服务器密钥

前言 一段时间没改密码后,远程就会自动提示CtrlAltEnd键修改密码。但我电脑是笔记本,没有end键。打开屏幕键盘按这三个键也没用。 解决方法 打开远程 1、远程端WINC 输入osk 可以发现打开了屏幕键盘 2、电脑键盘同时按住CtrlAlt(若自身电…