总结

数据库(Database)
理解为“文件夹”,里面可以装很多张表。作业中要求先建一个名字叫 mydb6_product 的数据库。

表(Table)
理解为“Excel 工作表”,由“列(字段)”和“行(记录)”组成。

列(Column / Field)
表中的一竖条数据,每列都有:
• 数据类型(整型、字符串、浮点型、日期型)
• 约束(主键、非空、默认值、外键等)

主键(Primary Key)
一列或多列的组合,用来唯一标识一行。相当于“身份证号码”,不能重复,不能为 NULL。

外键(Foreign Key)
一张表里的某列引用另一张表的主键。作用:让两张表产生“关联”。
例:involces 表的 order_id 是外键 → 指向 orders 表的 id。

自增长(AUTO_INCREMENT)
整型主键专用,每插入一行自动 +1,省得手写编号。

非空(NOT NULL)
该列必须有值,不能留空。

默认值(DEFAULT)
插入数据时如果不给值,系统就自动用默认值填充。

浮点型(FLOAT / DOUBLE)
存小数,如价格、工资、金额。

日期型(DATE)
存年月日,如订单日期。

SQL 语言
用来“说话”让数据库干活的语言。核心就 4 类:
• DDL(数据定义):CREATE / DROP / ALTER
• DML(数据操作):INSERT / UPDATE / DELETE / SELECT
• DCL(权限控制):GRANT / REVOKE(本次作业暂时用不到)

数据类型再认识
• INT(11) —— 整数,括号里的 11 只是“显示宽度”,跟真正存储大小无关。
• FLOAT(8,2) —— 最多 8 位,其中小数占 2 位(例如 999999.99)。
• DATE —— 只存年月日,格式 ‘YYYY-MM-DD’。
• VARCHAR(20) —— 可变长度字符串,最多 20 个字符。

列级约束/说明
• NOT NULL —— 这一列必须填值。
• DEFAULT —— 不给值时的默认值。
• PRIMARY KEY —— 主键,不能重复。
• COMMENT —— 给列写中文注释,方便以后看。

插入数据 INSERT INTO … VALUES …
把一行行真实数据塞进表里。

查询 SELECT(本次重点)
• 基本查询:SELECT * FROM 表名;
• 去重:SELECT DISTINCT 列名 …
• 聚合:COUNT()、MAX()、MIN()、AVG()、SUM()
• 排序:ORDER BY 列名 [ASC|DESC]
• 条件:WHERE 列名 BETWEEN … AND …、LIKE、IN、AND/OR 等
• 分组:GROUP BY 列名
• 分组后再过滤:HAVING 条件
• 限制返回行数:LIMIT n

建“新表”并复制数据
CREATE TABLE 新表名 AS SELECT …;

 mysql端口号:3306
mysql体系架构:
 (1)网络连接层

 (2)数据服务层

 (3)存储引擎层 (innodb事物管理(MyISAM) )

 (4)文件系统层(物理存储层)

客户端的连接指令
mysql

 -u用户名

 -p密码

 -h 主机名/ip #(localhost/127.0.0.1默认)

 -P 端口

 -D 库名

 -e sql语句 #直接在客户端连接时执行sql语句不登录mysql管理系统

1.4 sql 4大类别
 ? 获取关键字的语法

 \c 清空当前命令,不执行当前命令

 \d 指定sql结束字符 默认结束字符;

 \! 调用系统指令 system

 \q 退出 exit quit

2. DDL数据库定义语句
2.1 库
show展示(查看)
show databases|tables|warnings;
show databases like '模糊值';   #‘%my%’
            %  任意长度任意字符
             _  任意单个字符
mysql> create database db2 character set utf8mb4 collate utf8mb4_general_ci;
Query OK, 1 row affected (0.01 sec)     
mysql> select * from  information_schema.schemata;
create
create database 数据库名;
create database if not exists 数据库名;
use 数据名
use mysql   进入mysql数据库
drop 删除
drop  database 库名;
⚠️mysql引号区别:

 `` 将关键字可以引用作为数据值创建

 ‘’ “” 引用字符串数据值

2.2 表定义语句
create table 表名 (字段名1 数据类型,字段名2 数据类型,....);
drop  table  表名;   #在对应的数据库下删除

show tables; 显示库下的所有表

显示表字段名(列名)
desc|describe|explain  
desc 表名;
show columns from 表名;

复制表
create table 新表名 like 旧表;  #仅复制旧表的表结构给新表
insert  into 新表名  select  * from 旧表;   #将旧表数据插入到新表 (旧表 和新表字段和数据类型一致)
create table 新表名 select * from  旧表名;  #复制旧表的表结构以及表数据给新表
5.5  5.8
DQL数据查询语言 select
select 查询表数据

 函数结果

select          函数结果
select database();
select version();
       now()
       current_date()
       current_time()
       user()

 

 

创建数据库

CREATE DATABASE mydb6_product;
USE mydb6_product;

按顺序建 3张表

(1)employees 员工表

CREATE TABLE employees (
    id INT PRIMARY KEY,
    name VARCHAR(50) NOT NULL,
    age INT,
    gender VARCHAR(10) NOT NULL DEFAULT 'unknown',
    salary FLOAT
);

(2)orders 订单表

CREATE TABLE orders (
    id INT PRIMARY KEY,
    name VARCHAR(100) NOT NULL,
    price FLOAT,
    quantity INT,
    category VARCHAR(50)
);

(3)involces 发票表(注意拼写是 involces,作业原图如此)

CREATE TABLE involces (
    number INT PRIMARY KEY AUTO_INCREMENT,
    order_id INT,
    in_date DATE,
    totalamount FLOAT CHECK (totalamount > 0),
    FOREIGN KEY (order_id) REFERENCES orders(id)
);

做好之后可以使用SHOW TABLES; 查看库里的表,用 DESC 表名; 查看表结构。

 

(1)显示所有职工的基本信息。

SELECT * FROM t_worker;

(2)查询所有职工所属部门的部门号,不显示重复的部门号。

SELECT DISTINCT department_id FROM t_worker;

(3)求出所有职工的人数。

SELECT COUNT(*) AS 总人数 FROM t_worker;

(4)列出最高工和最低工资。

思路:聚合 MAX、MIN。

SELECT MAX(wages) AS 最高工资, MIN(wages) AS 最低工资 FROM t_worker;

列出职工的平均工资和总工资。

思路:聚合 AVG、SUM,保留 2 位小数。

SELECT ROUND(AVG(wages),2) AS 平均工资, ROUND(SUM(wages),2) AS 总工资 FROM t_worker;

(6)创建一个只有职工号、姓名和参加工作的新表,名为工作日期表。
思路:建表并复制三列数据。

CREATE TABLE 工作日期表 AS
SELECT worker_id, name, worker_date FROM t_worker;

(7)显示所有党员的年龄。思路:先算年龄 = 今年 - 出生年;筛选 politics='党员'。

SELECT name, YEAR(CURDATE())-YEAR(borth_date) AS 年龄
FROM t_worker
WHERE politics='党员';

(8)列出工资在 4000–8000 之间的所有职工姓名。

SELECT name FROM t_worker WHERE wages BETWEEN 4000 AND 8000;

(9)列出所有孙姓和李姓的职工姓名。

SELECT name FROM t_worker
WHERE name LIKE '孙%' OR name LIKE '李%';

(10)列出所有部门号为 102 和 103 且不是党员的职工号、姓名。
思路:多条件 AND + IN。

SELECT worker_id, name
FROM t_worker
WHERE department_id IN (102,103) AND politics != '党员';

(11)将职工表 t_worker 中的职工按出生的先后顺序排序。

SELECT * FROM t_worker ORDER BY borth_date;

(12)显示工资最高的前 3 名职工的职工号和姓名。

SELECT worker_id, name
FROM t_worker
ORDER BY wages DESC
LIMIT 3;

(13)求出各部门党员的人数。

SELECT department_id, COUNT(*) AS 党员人数
FROM t_worker
WHERE politics='党员'
GROUP BY department_id;

(14)统计各部门的工资和平均工资并保留 2 位小数。

思路:GROUP BY + SUM/AVG + ROUND。

SELECT department_id,
       ROUND(SUM(wages),2)   AS 部门总工资,
       ROUND(AVG(wages),2)   AS 部门平均工资
FROM t_worker
GROUP BY department_id;

(15)列出总人数大于等于 3 的部门号和总人数。

思路:分组后统计人数,再用 HAVING 过滤。

SELECT department_id, COUNT(*) AS 总人数
FROM t_worker
GROUP BY department_id
HAVING 总人数 >= 3;

 

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

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

相关文章

SQLite技术架构解析,适用场景有哪些?

一、SQLite技术架构解析 SQLite是一款轻量级、无服务器、嵌入式关系型数据库,其架构设计围绕“简化复杂性、提升效率”展开,核心由前端(SQL处理)、执行引擎(VDBE)、存储引擎(B-Tree)…

【Luogu】每日一题——Day3. P6392 中意 (数学 取模)

链接:P6392 中意 - 洛谷 题目: 思路: 数论这一块 题目让我们求这个结果对 MOD 取模,那么我们肯定是不像看到这个除法,所以考虑如何消除这个除法 我们可以想到,向上取整就是加上一个数,假设其为…

React强大且灵活hooks库——ahooks入门实践之DOM类hook(dom)详解

什么是 ahooks? ahooks 是一个 React Hooks 库,提供了大量实用的自定义 hooks,帮助开发者更高效地构建 React 应用。其中 DOM 类 hooks 是 ahooks 的一个重要分类,专门用于处理 DOM 相关操作,如事件监听、元素状态、拖…

GeoTools 工厂设计模式

前言使用GeoTools开发时有必要了解其工厂设计模式,作为软件开发核心设计模式,其设计思想具有普遍性和研究性。明白方法原理有助于提高开发效率,达到事半功倍的效果。1. 工厂模式 工厂模式(Factory Pattern)是面向对象中…

npu-smi info命令参数解释

华为昇腾npu-smi显示npu-smi工具的帮助信息npu-smi -h字段说明-h命令的帮助信息–help命令的帮助信息-vnpu-smi版本信息info显示硬件详细信息set修改设备配置属性clear清除设备信息upgrade升级MCU固件 npu-smi info 用于监控和管理华为NPU的状态和性能字段值说明npu-smi24.1.rc…

OneCode3.0 通信架构简介——MCPServer微内核设计哲学与实现

在数字化转型加速的今天,低代码平台已成为企业快速交付应用的核心基础设施。然而,通用消息中间件与低代码开发范式之间存在难以调和的矛盾:标准化协议无法匹配可视化编排的动态性,通用架构难以满足低代码场景下高频短消息的性能需…

Android14 Launcher3 修改All App上下滑动头部显示阴影

正常情况下的样子: 下拉App抽屉后的样子:修改方案:qssi14/packages/apps/Launcher3/src/com/android/launcher3/allapps/ActivityAllAppsContainerView.javaprotected void updateHeaderScroll(int scrolledOffset) {float prog1 Utilities…

Zookeeper入门安装与使用详解

文章目录一、简介二、下载安装1、安装jdk2、windows(1)下载(2)配置与启动一、简介 略。 二、下载安装 1、安装jdk 安装jdk8,高版本可能会有问题。 2、windows (1)下载 官网地址&#xff…

设计模式之适配器模式:让不兼容的接口协同工作的艺术

适配器模式:让不兼容的接口协同工作的艺术在软件开发中,我们经常会遇到系统整合的挑战——如何让新旧组件协同工作?适配器模式正是解决这类接口不兼容问题的利器,本文将深入探讨这一经典设计模式。1. 引言:接口不兼容的…

AI驱动的软件工程(中):文档驱动的编码与执行

📚 系列文章导航 AI驱动的软件工程(上):人机协同的设计与建模 AI驱动的软件工程(中):文档驱动的编码与执行 AI驱动的软件工程(下):AI辅助的质检与交付 大家好…

HTML应用指南:利用GET请求获取河南省胖东来超市门店位置信息

胖东来作为中国知名的零售企业,自1995年成立以来,始终致力于为消费者提供丰富、新鲜的商品选择与优质的购物体验。经过近30年的稳步发展,目前已在河南省内的许昌、新乡等地共开设13家门店,涵盖大型综合百货商场、中型社区超市及服…

8.服务通信:Feign深度优化 - 解密声明式调用与现代负载均衡内核

让服务调用更优雅 在微服务架构中,服务间通信如同血液流动般重要。传统方式中,开发者需要手动拼接URL、处理负载均衡、管理连接池——这些重复性工作不仅效率低下,还容易出错。Spring Cloud OpenFeign 的诞生,正是为了解决这一核心痛点。它通过声明式接口将HTTP请求模板化…

Docker入门指南(超详细)

一、什么是docker 在云计算和微服务架构盛行的今天,Docker 作为容器技术的标杆,彻底改变了应用部署和运行的方式。简单来说,Docker 是一个开源的容器化平台,它通过将应用程序及其依赖环境打包成一个轻量级、可移植的容器&#xff…

学习秒杀系统-实现秒杀功能(商品列表,商品详情,基本秒杀功能实现,订单详情)

文章目录前言数据库设计秒杀商品列表页秒杀商品详情实现简单秒杀订单详情前言 由于慕课课程中是先实现最基本的功能然后对其压测,压测那个地方出问题,然后在对其优化。所以本文记录的也是实现的是简单的秒杀功能没有涉及到高并发的优化。 数据库设计 …

React 的常用钩子函数在Vue中是如何设计体现出来的。

1、定义响应式数据: React 通过 useState 和 useReducer Vue 通过 ref 和 reactiveconst [state, setState] useState(initialState)const [state, dispatch] useReducer(reducer, initialState)2、定义缓存数据: React 通过 memo 和 useMemo useCal…

开源的 H.264/AVC 视频编码器库-x264 的交叉编译 和 程序测试

一、环境准备 安装交叉编译工具链 根据目标ARM架构选择对应工具链(如arm-linux-gnueabihf-):# Ubuntu/Debian系统 sudo apt-get install gcc-arm-linux-gnueabihf g-arm-linux-gnueabihf# 验证安装 arm-linux-gnueabihf-gcc --version或者手动…

自由学习记录(69)

RectToPolar() 是 将直角坐标系 (笛卡尔坐标系) 的 uv 坐标,转化为极坐标系(θ,r) uv - centerUV:将坐标原点平移,使 (0.5, 0.5) 变成原点。 r length(uv):距离中心点的半径(从中…

Spring Boot 敏感信息入库加密全面解决方案

Spring Boot 敏感信息入库加密全面解决方案 在当今数据驱动的时代,保护用户隐私数据已成为系统设计的必备要求。本文将详细介绍 Spring Boot 应用中敏感数据加密存储的完整方案,涵盖从基础实现到生产级落地的全流程。 一、加密方案选型 1.1 常见加密类型对比 加密类型特点…

docker0网卡没有ip一步解决

正常查看ip的时候一直显示没有ip这里先删除docker0网卡ip link delete docker0然后重启服务systemctl restart docker再次查看显示有ip了并且查看配置文件也是正常的cat /etc/docker/daemon.json {"registry-mirrors": ["https://docker.m.daocloud.io",&q…

MYSQL-索引篇

索引结构概述MySQL 的索引是在存储引擎层实现的,不同的存储引擎有不同的索引结构,主要包含以下几种:索引结构描述BTree索引最常见的索引类型,大部分引擎都支持 B 树索引Hash索引底层数据结构是用哈希表实现的,只有精确…