MySQL-2

复习

1. Data数据–>DB数据库–>DBMS数据库管理系统
常见DBMS: MySQL oracle sql server db2 … redis Mongodb
两大功能: 定义DDL 操纵DML
 
2. 表table
创建表, 行和列
 
3. MySQL数据类型
数据类型分成三大类:数值型、字符型、日期时间类
4. 关于列属性
null值、primary key主键、auto_increment自增、default默认值、foreign key外键、comment注释
 
create database 数据库名
create table 表名(
  id           int             primary key  not null  auto_increment comment‘编号’,
  name        varchar(10)      not null  comment‘姓名’,
  gender       char(1)                  comment‘性别’,
  age          tinyint                   comment‘年龄’,
  salary        decimal(m,d)              comment‘工资’,
  weight       float                     comment‘体重’,
  content       text                     comment‘内容’,
  birthday      date                     comment‘出生年月日’,
  status_value   tinyint         default 0  comment ‘状态0禁用 1激活’,
  create_time   timestamp      default current_timestamp comment’创建时间’,
  update_time  timestamp   default current_timestamp on update current_timestamp comment’更新时间’
)auto_increment=初始值
 
删除表结构
drop table 表名
 
插入语句 insert into 表名(字段名1,字段名2) values(值1,值2,…),(值1,值2,…);
更新语句 update 表名 set 字段名=新值, 字段名=新值 where 子句;
删除语句 delete from 表名 where子句;
查询语句 select 字段名1,字段名2,。。。 from 表名  where 子句
 
where子句,where是用于对行进行筛选
where 比较条件/确定范围/确定集合/and/or/not/is null/ is not null/like
like模糊匹配,通配符%和_
 
[面试题] drop truncate delete区别
 
 

1 binary关键字区分大小写


2 as关键字


3统计函数

SQL提供的统计函数称为集函数.
主要的集函数:(可与DISTINCT连用)
                   计数函数: count(列名) 计算非空行记录个数
                   求和函数: sum(数值列名)   对某一列的值求和
                   求平均值: avg(数值列名)  对某一列的值计算平均值
                   求最大值: max(数值列名)  找出某一列的最大值
                   求最小值: min(数值列名)  找出某一列的最小值
 

4 DISTINCT去重复关键字的使用



5 注意:where子句不能使用聚合函数


 

6 分组group by

分组可以使用“GROUP BY 列名”的写法,通常分组后都会有对组进行统计的函数的操作
以下代码查询选课表中每个学生的选课数量:
select sid,count(*) from grade group by sid

 

7对组筛选having

分完组后,有时只需要显示其中一部分的组的数据,如查询一个学校中人数超过40人的班级,这时就要使用HAVING子句。
以下代码从学生表中查询人数超过40人的班级:
SELECT 班级,COUNT(*) AS 人数
FROM 学生
GROUP BY 班级
HAVING 人数>40
 


8 排序order by

将结果集按照某一个列进行排序
desc: 降序排列
asc:  升序排列(默认)
语法:
select  …   from 表名 where 子句 …  order by 列1  desc/asc, 列2 desc/asc
 

 

9 限制limit

对最终结果集记录数进行限制,实现分页功能
select… from 表 where … limit a,b
 
应用程序中一般分页可以通过两种方式实现:
①基于数据库分页的物理分页(掌握);
②基于业务逻辑实现的逻辑分页
 
 

 
 

单表练习

单表基本语句练习题目:建立一个hw_student_info表。
字段名      数据类型     说明
stu_id        int          学生编号    主键自增
stu_name     varchar(10)   学生姓名    不可空
age          int          学生年龄    可空
class_id      int           班级编号    可空
course       varchar(10)    选修课程名  可空
score        decimal(4,1)   分数        可空
status_values  tinyint       状态        可空0休学或1在读
– 通过DDL创建表
 
– 批量插入5条学生记录,数据自定义
 
– 根据学生编号批量删除学生,例如删除1 3 5号学生
 
– 修改表中所有学生的状态为1,设置为在读状态
 
– 修改表中1班级学生的状态为0,设置为全部休学
 
– 查询学生表所有信息
 
– 查询所有学生的学号,姓名,年龄
 
– 查询1号的学生学号,年龄,选修课程,分数信息
 
– 查询1班和2班的学生信息
 
– 查询在读的所有学生
– 查询20-23岁之间的学生
– 查询已分配班级信息的学生列表
– 查询选修’Java’类似课程的学生列表
– 查询’王’氏学生列表
– 查询1班的学生总数
– 查询每一种选修课程的人数
– 查询班级列表
– 查询1班的男生和女生的数量
– 查询每个班级的人数
– 查询1班学生的”java开发”课程最低分,最高分,和平均分
– 查询每门选修课程的平均成绩
– 查询班级人数大于1个的班级列表,显示出: 班级编号,总人数
– 查询选修课程达到2人以上的选修课列表,显示出:选修课程,选修人数
– 查询1班’Java’课程成绩前三名的学生信息(无相同分数的情况)
– 查询1班’Java’课程成绩最后一名的学生信息(无相同分数的情况)
– 查询1班’Java’课程成绩第三名的学生信息(无相同分数的情况)
 

10 SQL查询语句的执行顺序


select name,max(score) as max_score
from stu_score
where name is not null
group by name
having max(score) > 500
order by max_score
limit 0,10
 
首先执行 from子句,从stu_score表组装数据源的数据
执行where子句,筛选stu_score表中所有数据不为NULL的数据
执行group by 子句,把stu_score表按”name”列进行分组
计算max()聚合函数,按’score’列求出每组学生中成绩的最高分
执行having,对组进行筛选
执行select列表
执行order by子句,把最后的结果按照max_score列进行升序排序
执行limit子句,筛选前10条结果
 

11 嵌套子查询

嵌套子查询:一个查询中嵌套另一个查询
嵌套子查询分类:标量子查询、列子查询、行子查询、表子查询
7.1 标量子查询:返回1行1列, 返回单一的一个值或者字符串
SELECT * FROM t1 WHERE column1 = (SELECT MAX(column2) FROM t2)
7.2 列子查询:返回N行1列
SELECT * FROM article WHERE uid IN(SELECT uid FROM user WHERE status=1)
7.3 行子查询:返回1行N列
SELECT * FROM (SELECT uid,uname FROM user WHERE status=1) as 表别名
7.4 表子查询:返回N行N列
SELECT * FROM (SELECT * FROM USER) AS 表别名
 

子查询练习-继续单表练习hw_student_info

查询年龄最高的学生信息
从各课程中获取课程成绩最高分大于90分的课程,将选修这些课程的学生列出来
查询Java课程成绩大于该课程平均分的学生列表
查询Java课程班级平均分大于该课程总平均分的班级列表
查询Java课程班级平均分大于该课程总平均分的班级数量
 

12 Navicat导入和导出表结构和数据

导出表结构和数据



生成一个.sql文件

 

导入表结构和数据



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

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

相关文章

OpenCV如何以指定分辨率打开摄像头(C++ / Python代码演示)

问题背景 使用OpenCV打开USB摄像头时经常会遇到一个问题:我的摄像头最高分辨率是1920 * 1080,为什么用OpenCV打开摄像头保存的图片每次都是640 *480?能不能以最高分辨率打开并保存图片呢? 如何解决 首先需要确认自己的摄像头支持的最大分辨率是多少,具体步骤可以参考下…

两款超好用的视频翻译软件,适合两种不同场景,必有一款适合你

今天给大家推荐2个视频翻译工具​,分别是: TransDuckYouTube中文配音 这两款工具的核心功能非常类似,核心提供一个视频语言翻译的能力。比如:你要看一个英文视频,它可以帮助你将这个英文视频变为中文视频&#xff0c…

Flask解决接口跨域问题

1、什么是跨域CROS CORS(Cross-Origin Resource Sharing,跨域资源共享)是一种浏览器安全策略,用于控制在一个网页应用中如何让一个域的Web页面能够请求另一个域的资源。在Web开发中,由于同源策略(Same-Ori…

【Java】Mac下的Tomcat安装配置

🔔Tomcat是一个免费的开源web应用服务器,是开发和调试JSP 程序的首选🖐可利用它响应HTML页面的访问请求。 我们在进行网络编程时,其中重要的中间件就是Tomcat,下面我们将进行在Mac上配置Tomcat的讲解。😲 …

maven限制内存使用峰值/最大内存

前言 通过设置虚拟机的内存大小,达到限制maven内存使用峰值的效果 方法1:修改mvn脚本 找到mvn脚本在MAVEN_OPTS参数值添加-Xms、-Xmx参数:MAVEN_OPTS"$MAVEN_OPTS -Xms512m -Xmx512m"效果图 windows系统下修改MAVEN_OPTS参数 …

debian10安装配置vim+gtags

sudo apt install global gtags --version gtags //生成gtag gtags-cscope //查看gtags gtags与leaderf配合使用 参考: 【VIM】【LeaderF】【Gtags】打造全定制化的IDE开发环境! - 知乎

构建搜索引擎,而非向量数据库(Vector DB) [译]

原文:Build a search engine, not a vector DB 作者: Panda Smith 在过去 12 个月中,我们见证了向量数据库(Vector DB)创业公司的迅猛增长。我此刻并不打算深入探讨它们各自的设计取舍。相反,我更想探讨和…

VM进行TCP/IP通信

OK就变成这样 vm充当服务端的话也是差不多的操作 点击连接 这里我把端口号换掉了因为可能被占用报错了,如果有报错可以尝试尝试换个端口号 注: 还有一个点在工作中要是充当服务器,要去网络这边看下他的ip地址 拉到最后面

防火墙安全策略

目录 一、防火墙种类 二、防火墙流量控制手段 1、包过滤技术(传统) 2、状态检测技术 (1)、状态检测机制 三、安全实验 1、拓扑 2、需求 3、配置思路 4、关键配置截图 5、验证 一、防火墙种类 对于防火墙来说就是针对哪…

Python和数据分析:Numpy新手指南

Numpy(Numerical Python的缩写)是一个用于处理多维数组和执行数学运算的强大库,对于Python中的数据科学和数值计算任务至关重要。本博客将专注于Numpy,为初学者提供一份详细的指南,这篇指南都将帮助你掌握Numpy的基础知…

LeetCode做题总结 1. 两数之和

1. 两数之和 暴力法哈希法重新分析Java语法 暴力法 2023.09.20 刚开始用暴力法破解&#xff08;C&#xff09; class Solution { public:vector<int> twoSum(vector<int>& nums, int target) {vector<int> a;for(int i0; i<nums.size()-1; i) {for(…

ros2 学习11-通信中动作的定义及自定义action 交互示例

机器人是一个复杂的智能系统&#xff0c;并不仅仅是键盘遥控运动、识别某个目标这么简单&#xff0c;我们需要实现的是送餐、送货、分拣等满足具体场景需求的机器人。 在这些应用功能的实现中&#xff0c;另外一种ROS通信机制也会被常常用到——那就是动作。从这个名字上就可以…