微知微网站建设实训平台/指数函数运算法则
MYSQL数据库的数据类型(一般只需要用到这些)
整型类型:用于存储整数值,可以选择不同的大小范围来适应特定的整数值。
- TINYINT
- SMALLINT
- MEDIUMINT
- INT
- BIGINT
浮点型类型:用于存储带有小数部分的数值,提供了单精度(FLOAT)和双精度(DOUBLE)两种浮点数类型。
- FLOAT
- DOUBLE
定点数类型:用于精确存储十进制数值,例如货币或精确计数情况下使用。
- DECIMAL
- NUMERIC
日期与时间类型:用于存储日期、时间或日期时间组合。
- DATE
- TIME
- DATETIME
- TIMESTAMP
- YEAR
字符串类型:用于存储文本和字符数据,提供了不同长度和存储方式的选项。
- CHAR
- VARCHAR
- BLOB
- TEXT
- ENUM
- SET
操作数据 库 相关的语句:
数据库创建:
create database if not exists 数据库名
default character set utfmb4 -- 字符集
default collate utf8mb4_unicode_ci; -- 排序规则
- 【if not exists,default character set Xxx,default collate Xxx】可以选择是否使用
- 字符集:
- 字符集不同,数据库的存储和显示结果可能不同
- 如utf8mb3:可以存储中文,但不能存储一些特殊字符如表情符号。utf8mb4就可以表情符号。
- 排序规则:对字符进行排序使用的规则
- 比如不同排序规则对中文的标准可能不同,
- 像【一,二,三】这些数据,a规则可能将他们排为【一,二,三】,b规则可能将他们排为【三,一,二】
数据库删除:
drop database if exists 数据库;
- 【if exists】可以选择是否使用
数据库修改:
-- 修改数据库的character set:
alter database 数据库 character set utf8mb4;
-- 修改数据库的collate:
alter database 数据库 collate utf8mb4_general_ci;
数据库选择
use 数据库
操作数据 表 的相关的语句:
数据表创建:
CREATE TABLE IF NOT EXISTS 数据库.数据表 (id INT AUTO_INCREMENT PRIMARY KEY,name VARCHAR(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,age INT DEFAULT 18,email VARCHAR(100) UNIQUE,created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,active BOOLEAN DEFAULT TRUE,salary DECIMAL(10,2) DEFAULT 0.00,CONSTRAINT fk_department FOREIGN KEY (department_id) REFERENCES department(id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
- IF NOT EXISTS:用于检查是否存在同名的表,如果不存在则创建。
- AUTO_INCREMENT:使 id字段自动增长,并将其设置为主键。
- CHARACTER SET utf8mb4:设置name 字段的字符集。
- COLLATE utf8mb4_general_ci:设置name 字段的排序规则。
- NOT NULL:确保 name 字段不为空。
- DEFAULT 18:设置 age 字段的默认值为18。
- UNIQUE:确保 email 字段的值是唯一的。
- DEFAULT CURRENT_TIMESTAMP:设置 created_at字段的默认值为当前时间戳。
- BOOLEAN DEFAULT TRUE:设置 active 字段的默认值为 TRUE。
- DECIMAL(10,2) DEFAULT 0.00:设置 salary 字段的数据类型为 DECIMAL,精度为 10 位,小数位为 2位,默认值为 0.00。
- CONSTRAINT fk_department FOREIGN KEY (department_id)REFERENCES department(id):定义了外键约束,将 department_id 字段作为外键关联到department 表的 id 字段。
- ENGINE=InnoDB:设置表的引擎为 InnoDB。
- DEFAULT CHARSET=utf8mb4:默认字符集为 utf8mb4。
- COLLATE=utf8mb4_general_ci:排序规则为utf8mb4_general_ci。
数据表修改
添加新列:ALTER TABLE table_name ADD COLUMN column_name column_type;
修改现有列:ALTER TABLE table_name MODIFY COIUMN column_name new_column_tyoe;
删除列:ALTER TABLE table_name DROP COLUMN column_name;
修改表名:ALTER TABLE old_table_name RENAME TO new_table_name;
添加约束条件:ALTER TABLE table_name ADD CONSTRAINT constraint_name constraint_type(column_name);- constraint_type有:- UNIQUE:用于确保列中的所有值都是唯一的。- NOT NULL:用于确保列中的值不为空。CHECK:用于定义要求满足的条件。
删除约束条件:ALTER TABLE table_name DROP CONSTRAINT constraint_name;
添加主键:ALTER TABLE table_name ADD CONSTRAINT pk_constraint_name PRIMARY KEY(column_name);
删除主键:ALTER TABLE table_name DROP CONSTRAINT pk_constraint_name;
添加外键:ALTER TABLE table_name ADD CONSTRAINT fk_constraint_name FOREIGN KEY(column_name) REFERENCES other_table(other_column);
删除外键:ALTER TABLE table_name DROP CONSTRAINT fk_constraint_name;
数据表删除
完全删除数据表:DROP TABLE table_name;
仅删除数据表中的数据,保留数据表的结构:TRUNCATE TABLE table_name;
单表数据增删改查的语句
插入数据
INSERT INTO table_name(column1, column2, ...) VALUES (value1, value2, ...);
更新数据
UPDATE table_name SET column1 = value1, column2 = value2, ... WHERE condition;
删除数据
DELETE FROM table_name WHERE condition;
查询数据
SELETE column1, column2, ... FROM table_name WHERE condition;
condition的写法
1.等于(Equal to):WHERE column = value
2.不等于(Not Equal to):WHERE column <> value
3.大于(Greater than):WHERE column > value
4.小于(Less than):WHERE column < value
5.大于等于(Greater than or equal to):WHERE column >= value
6.小于等于(Less than or equal to):WHERE column <= value
7.包含(IN):WHERE column IN (value1, value2, ...)
8.不包含(NOT IN):WHERE column NOT IN (value1, value2, ...)
9.模糊匹配(LIKE):WHERE column LIKE 'pattern'
10.范围(BETWEEN):WHERE column BETWEEN value1 AND value2
11.空值(IS NULL):WHERE column IS NULL
12.非空值(IS NOT NULL):WHERE column IS NOT NULL
多表联查的SQL语句
以例子演示:表结构如下:
- students:student_id,student_name
- teachers:teacher_id,teacher_name
- courses:course_id,course_name,teacher_id
- scores:student_id,course_id,score
表数据:
内连接(Inner Join):连接学生、课程和成绩表,找出每个学生所修的课程及成绩
SELECT students.student_name, courses.course_name, scores.score
FROM students
INNER JOIN scores ON students.student_id = scores.student_id
INNER JOIN courses ON scores.course_id = courses.course_id;
左连接(Left Join):列出每门课程及其对应的老师,即使没有老师也要显示出来
SELECT courses.course_name, teachers.teacher_name
FROM courses
LEFT JOIN teachers ON courses.teacher_id = teachers.teacher_id;
联合查询(Union):
1、将学生表和教师表的姓名合并为一个结果集
SELECT student_name as name FROM students
UNION
SELECT teacher_name as name FROM teachers;
2、将学生、教师和课程表的姓名合并为一个结果集
SELECT student_name as name FROM students
UNION
SELECT teacher_name as name FROM teachers
UNION
SELECT course_name as name FROM courses;
右连接(Right Join):列出每个老师及其对应的课程,即使没有课程也要显示出来
SELECT teachers.teacher_name, courses.course_name
FROM teachers
RIGHT JOIN courses ON teachers.teacher_id = courses.teacher_id;
多重连接(Multiple Joins):连接学生、课程、教师和成绩表,找出每个学生所修的课程、对应的老师和成绩
SELECT students.student_name, courses.course_name, teachers.teacher_name, scores.score
FROM students
INNER JOIN scores ON students.student_id = scores.student_id
INNER JOIN courses ON scores.course_id = courses.course_id
INNER JOIN teachers ON courses.teacher_id = teachers.teacher_id;
分组联查(Group By):统计每门课程的平均成绩
SELECT courses.course_name, AVG(scores.score) as average_score
FROM courses
LEFT JOIN scores ON courses.course_id = scores.course_id
GROUP BY courses.course_name;
带有条件的联查(Join with Where Clause):找出某个学生所修的所有课程及成绩
SELECT students.student_name, courses.course_name, scores.score
FROM students
INNER JOIN scores ON students.student_id = scores.student_id
INNER JOIN courses ON scores.course_id = courses.course_id
WHERE students.student_name = "John";
子查询(Subquery):找出每位学生的平均成绩,并与学生信息进行关联
SELECT students.student_name, average_score
FROM students
LEFT JOIN (SELECT student_id,AVG(score) as average_scoreFROM scoresGROUP BY student_id
) AS subquery
ON students.student_id = subquery.student_id;
多重连接和条件(Multiple Joins with Conditions):找出每门课程及其对应的老师、学生选修情况和成绩
SELECT courses.course_name, teachers.teacher_name, students.student_name, scores.score
FROM courses
LEFT JOIN teachers ON courses.teacher_id = teachers.teacher_id
LEFT JOIN scores ON courses.course_id = scores.course_id
LEFT JOIN students ON scores.student_id = students.student_id;
多种连接类型组合(Combining Different Join Types):列出所有学生、他们所修的课程及成绩,即使没有成绩也要显示学生和课程信息
SELECT s.student_name, c.course_name, COALESCE(sc.course, "No score") as score
FROM student s
CROSS JOIN courses c
LEFT JOIN score sc ON s.student_id = sc.student_id AND c.course_id = sc.course_id;
联合查询与排序(Union with Ordering):将学生和老师姓名合并,并按字母顺序排序
SELECT name FROM (SELECT student_name as name FROM studentsUNIONSELECT teacher_name as name FROM teachers
) AS combined_names
ORDER BY name ASC;
多表联查与分组筛选(Join with Grouping and Filtering):统计每个老师所教课程数超过1门的情况
SELECT teachers.teacher_name, COUNT(courses.course_id) as num_courses_taught
FROM teachers
LEFT JOIN courses ON teachers.teacher_id = courses.teacher_id
GROUP BY teachers.teacher_name
HAVING COUNT(courses.course_id) > 2;
左连接与条件筛选(Left Join with Conditional Filter):找出没有分配老师的课程
SELECT courses.course_name
FROM courses
LEFT JOIN teachers ON courses.teacher_id = teachers.teacher_id
WHERE teachers.teacher_id IS NULL;
多表联查与排名(Join with Ranking):按照成绩排名找出每门课程的前三名学生
SELECT course_name, student_name, score, ranking
FROM (SELECT courses.course_name,students.student_name,scores.score,RANK() OVER (PARTITION BY courses.course_id ORDER BY scores.score DESC) AS rankingFROM courses INNER JOIN scores ON scores.course_id = courses.course_idINNER JOIN students ON students.student_id = scores.student_id
) AS ranked_scores
WHERE ranking <= 3;
联合查询与条件过滤(Union with Conditional Filtering):将学生和老师姓名合并,并只显示姓氏为“Smith”的人员
SELECT name FROM (SELECT student_name as name FROM students WHERE student_name LIKE 'Smith%'UNIONSELECT teacher_name as name FROM teachers WHERE teacher_name LIKE 'Smith%'
) AS combined_names;
MYSQL函数
-- 数学运算
SELECT abs(-10);/*绝对值:0*/
SELECT ceiling(9.4);/*向上取整:10*/
SELECT floor(9.4);/*向下取整:9*/
SELECT rand();/*生成随机数,0~1:0.40571950134422585*/
SELECT sign(122);/*值为0返回0,值为正数返回1,值为负数返回-1:1*/
-- 字符串相关操作
SELECT char_length('123456789');/*获取值的长度:9*/
SELECT concat('a','b','c');/*拼接字符串:abc*/
SELECT insert('1234567',1,2,'a');/*根据位置替换字符串,从第1个位置开始的2个数替换为'a':a34567*/
SELECT lower('Abc');/*小写:abc*/
SELECT upper('Abc');/*大写:ABC*/
SELECT replace('12345678','345','abc');/*根据内容替换字符串,把'345'替换为'abc':12abc678*/
SELECT substr('123456',2,2);/*返回第2个位置开始的2个数:23*/
SELECT instr('1234567','456');/*返回456的第一次的位置,找不到返回0:4*/
SELECT reverse('123456');/*反转:654321*/
-- 日期和时间函数
SELECT current_date();/*获取当前日期:2024-05-31*/
SELECT curdate();/*获取当前日期:2024-05-31*/
SELECT now();/*获取当前时间:2024-05-31 11:28:04*/
SELECT localtime();/*获取当前时间:2024-05-31 11:28:24*/
SELECT sysdate();/*获取当前时间:2024-05-31 11:28:44*/
SELECT year(now());/*获取当前年份:2024*/
SELECT month(now());/*获取当前月份:5*/
SELECT date(now());/*获取当前日期:2024-05-31*/
SELECT hour(now());/*获取当前小时:11*/
SELECT minute(now());/*获取当前分钟:32*/
SELECT second(now());/*获取当前秒数:56*/
-- 聚合函数
USE test;
-- count(...) 对查询到的数据进行统计
SELECT COUNT(1) FROM students;
-- SUM(...) 对查询到的数据进行求和,如果数据不能求和(字符串),返回0
SELECT SUM(scores.score) FROM scores;
-- AVG(...) 对查询到的数据进行求平均值
SELECT AVG(scores.score) FROM scores;
-- MAX(...) 返回查询到的数据的最大值
SELECT MAX(scores.score) FROM scores;
-- MIN(...) 返回查询到的数据的最小值
SELECT MIN(scores.score) FROM scores;
相关文章:

MYSQL数据库细节详细分析
MYSQL数据库的数据类型(一般只需要用到这些) 整型类型:用于存储整数值,可以选择不同的大小范围来适应特定的整数值。 TINYINTSMALLINTMEDIUMINTINTBIGINT 浮点型类型:用于存储带有小数部分的数值,提供了单精度(FLOA…...

vue 将图片url转base64
<img :src"imgList[0]" width"600" error"handleImageError" alt"0" load"onloadImg" />//当图片加载完成时,将图片url转成base64onloadImg(event) {this.urlTobase64(event.target.src, event.target.alt…...

Unity之XR Interaction Toolkit如何使用XRSocketInteractable组件
前言 在虚拟现实(VR)和增强现实(AR)开发中,交互性是提升用户体验的关键。Unity作为一个领先的游戏开发引擎,提供了多种工具支持VR/AR开发。Unity的OpenXR插件扩展了这一功能,提供了更强大和灵活的交互系统。其中一个非常有用的组件是XRSocketInteractable。本文将详细介…...

flutter3-os:基于flutter3.x+dart3+getx手机版os管理系统
flutter3-os-admin跨平台手机后台OS系统。 原创Flutter3.22Dart3.4Getxfl_chart等技术开发仿ios手机桌面OA管理系统。自研栅格化布局引擎、自定义桌面壁纸、小部件、底部Dock菜单、可拖拽悬浮球等功能。 全新自研栅格化OS菜单布局引擎。 使用技术 编辑器:VScode技术…...

C++ 用数组模拟队列
在C中,使用数组模拟队列通常涉及到两个主要的操作:入队(enqueue)和出队(dequeue)。由于数组是一个固定大小的数据结构,当使用数组模拟队列时,需要手动管理队列的头部和尾部位置。以下…...

每日一题34:数据分组之查找每个员工花费的总时间
一、每日一题 表: Employees ------------------- | Column Name | Type | ------------------- | emp_id | int | | event_day | date | | in_time | int | | out_time | int | ------------------- 在 SQL 中,(emp_id, event_day, in_time) 是…...

语言模型解构——Tokenizer
1. 认识Tokenizer 1.1 为什么要有tokenizer? 计算机是无法理解人类语言的,它只会进行0和1的二进制计算。但是呢,大语言模型就是通过二进制计算,让你感觉计算机理解了人类语言。 举个例子:单1,双2&#x…...

前端经验:导出表格为excel并设置样式
应用场景 将网页上的table标签内容导出为excel,并且导出的excel携带样式,比如字色、背景色、对齐等等 实施步骤 必备引入包 npm install xlsx-js-style步骤1:准备好table table可以是已经存在与页面中的,也可以动态创建。 行…...

UFS协议—新手快速入门(二)【5-6】
目录 五、UFS协议栈 六、UFS技术演进与详解 1、UFS应用层 设备管理器 任务管理器 2、UFS传输层 3、UFS互联层 UFS协议—新手快速入门(一)【1-4】 五、UFS协议栈 UFS(Universal Flash Storage)协议是针对固态存储设备&…...

手机建站介绍
随着科技的不断进步和移动互联网的普及,手机应用已经成为人们生活中最不可或缺的一部分。而手机建站作为一种新兴技术,在这一领域也有着广泛的应用。本文将为大家介绍手机建站的概念、优势和应用。 什么是手机建站? 手机建站是指将传统的网络…...

windows11 安装cnpm 报错 Error: EPERM: operation not permitted 没权限
全部试过: 您遇到的错误是EPERM: operation not permitted,这意味着npm在尝试重命名文件或目录时缺少必要的权限。这通常与操作系统的权限设置有关。为了解决这个问题,您可以尝试以下几个步骤: 以管理员身份运行命令行࿱…...

SQL 如何获取A列相同但是B列不同的数据项
用户表里有两个字段:部门和职位。一个部门可能对应多个职位,多个部门也可能都有同一职位。比如: 部门 职位 财务 部长 财务 副部长 财务 会计 财务 职员 编辑 部长 编辑 副部长 编辑 主编 编辑 副主编 现在想通过筛选,获取职位名称…...

如何在QGIS中加载高清卫星影像?
我们在《如何在GlobalMapper中加载高清卫星影像》一文中,分享了在GlobalMapper中加载卫星影像的方法。 这里再为你分享如何在QGIS中加载高清卫星影像的方法,并可以在文末查看领取软件安装包和图源的方法。 如何加载高清图源? 要在QGIS中在…...

后端返回图片格式乱码
try {const response await request.get(checkCodeUrl.value,{responseType:"arraybuffer"});console.log("验证码请求成功:", response);checkCodeUrl.value data: image/jpeg;base64,${btoa(new Uint8Array(response).reduce((data, byte) > data …...

C++基础编程100题-025 OpenJudge-1.4-05 整数大小比较
更多资源请关注纽扣编程微信公众号 http://noi.openjudge.cn/ch0104/05/ 描述 输入两个整数,比较它们的大小。 输入 一行,包含两个整数x和y,中间用单个空格隔开。 0 < x < 2^32, -2^31 < y < 2^31。 输出 一个字符。 若x &…...

[office] 16种常见的COUNTIF函数公式设置 #笔记#职场发展
16种常见的COUNTIF函数公式设置 1、返回包含值12的单元格数量 COUNTIF(A:A,12) 2、返回包含负值的单元格数量 COUNTIF(A:A,"<0") 3、返回不等于0的单元格数量 COUNTIF(A:A,"<>0") 4、返回大于5的单元格数量 COUNTIF(A:A,">5"…...

spring boot2.7.x遇到问题
validation报错 高版本已移除了validation以来,需手动添加 <dependency><groupId>jakarta.validation</groupId><artifactId>jakarta.validation-api</artifactId> </dependency>mybatis报错 升级版本 <dependency>&…...

Webpack 开发快速入门
WebPack详细入门教程(一)之简介 Webpack详细入门教程(二)之安装配置 WebPack详细入门教程(三)之loader加载器 Webpack详细入门教程(四)之Source Maps调试 Webpack详细入门教程&#…...

AI时代的多维探索
随着人工智能(AI)技术的迅猛发展,我们的生活正在经历一场深刻的变革。从智能家居到自动驾驶,从医疗诊断到金融投资,AI技术正逐渐渗透到社会的各个角落。为了更全面地了解AI时代的发展趋势,我们将通过十个具…...

您的游戏端被攻击了怎么办,德迅云安全的应用加速来帮您
游戏行业DDoS攻击的主要原因是因为游戏产品生命周期偏短,而DDoS供给成本又不高,只要发起攻击,企业为确保游戏稳定运营而不得不快速做出让步,致使敲诈勒索的成功率相对更高。在遭受DDoS攻击后,游戏公司的日损失甚至多达…...

关于利用hashcat破解WiFi数据包的操作记录
准备数据包相关转换工具 ┌──(kali㉿kali)-[~/cap/3204] └─$ sudo apt-cache search hc | grep ^hc hcloud-cli - command-line interface for Hetzner Cloud hcxdumptool - Small tool to capture packets from wlan devices hcxkeys - Tools to generate plainmasterkey…...

伯克希尔·哈撒韦:“股神”的“登神长阶”
股价跳水大家见过不少,但一秒跌掉62万美元的你见过吗? 今天我们来聊聊“股市”巴菲特的公司——伯克希尔哈撒韦 最近,由于纽交所技术故障,伯克希尔哈撒韦A类股股价上演一秒归“零”,从超过62万美元跌成185.1美元&…...

f1c100s 荔枝派 系统移植
一。交叉编译环境配置 1.1下载交叉工具链:https://releases.linaro.org/components/toolchain/binaries/7.2-2017.11/arm-linux-gnueabi/ 1.2解压安装 在home目录下新建 工程目录:mkdir f1c100s_project 将windows下的gcc-linaro-7.2.1-2017.11-x86…...

EtherCAT 和 UDP 通讯的实时性 区别
EtherCAT 和 UDP 是两种不同的通信协议,它们在实时性方面有着本质的区别,主要体现在以下几个方面: 实时性设计目的: EtherCAT 是专为工业自动化设计的实时以太网协议,它通过独特的数据通信机制实现了极高的实时性能。E…...

山东大学软件学院项目实训-创新实训-基于大模型的旅游平台(二十八)- 微服务(8)
目录 11.4 SpringAMQP 11.4.2 Work Queue工作队列 11.4.3 发布订阅模型 11.4.4 FanoutExchange(广播交换机) 11.4.5 DirectExchange(路由模式交换机) 11.4.6 TopicExchange 11.5 消息转换器 11.4 SpringAMQP 父工程引入AMQP依赖 <!--AMQP依赖,包含RabbitMQ…...

如何将 MySQL 数据库共享给他人?
文章目录 共享所有数据库给他人1. 连接到 MySQL 数据库2. 选择要使用的数据库3. 修改连接所需的 host4. 刷新权限 共享部分数据库给他人1. 创建用户2. 授权3. 刷新权限 结语 🎉欢迎来到Java学习路线专栏~探索Java中的静态变量与实例变量 ☆* o(≧▽≦)o *☆嗨~我是I…...

netty-学习
Netty Netty 的核心概念Netty 的主要特性Netty 的应用场景Netty 的基本使用服务器端处理器 总结 代码分析1.心跳检测代码解析类和成员变量userEventTriggered方法总结 4.参数详解ChannelHandlerContext ctxObject evt 事件来源示例:配置 IdleStateHandler事件处理示…...

无线和移动网络
背景 两个重要的挑战 无线:通过无线链路通信移动:需要网络处理移动(不同变换所接入的网络)用户 无线网络中的组件 无线主机(无线并不总是意味着移动的)基站(base station 或者叫AP࿰…...

快团团账号被封,大团长帮卖团长如何避免违规操作
去年末到现在有部分小伙伴反馈,自己的快团团账号资金提现受到限制,也有个别的快团团大团长账号直接被查封了,有些团长是明知是违规行为还抱有侥幸的心理,比如有个做房产中间的小伙,知道套现违规还频频套现,…...

Github Copilot登录账号,完美支持chat
Github Copilot 代码补全等功能,提高写代码的效率 https://web.52shizhan.cn/activity/copilot 登录授权后,已经可以使用,完美。如图...