数据库的基本操作(约束与DQL查询)

一、约束

约束是在表上强制执行的数据规则,用于确保数据的完整性和一致性

(1)约束类型

MySQL中支持多种约束类型:

①主键约束(PRIMARY KEY)        ②自增约束(AUTO_INCREMENT

③非空约束(NOT NULL)               ④唯一约束(UNIQUE

⑤默认约束(DEFAULT)                 ⑥零填充约束(ZEROFILL

⑦外键约束(FOREIGN KEY

可以简单写一个实例加深对约束类型的记忆

CREATE TABLE users (id INT PRIMARY KEY AUTO_INCREMENT,username VARCHAR(50) NOT NULL UNIQUE,email VARCHAR(100) NOT NULL UNIQUE,age INT DEFAULT 0,status TINYINT NOT NULL DEFAULT 1
);

(2)主键约束

主键约束用于唯一标识表中的每一行数据,具有以下特点:

①主键值必须唯一                                         ②主键值不能为NULL

③一个表只能有一个主键                              ④主键可以由单个列或多个列组成

单列主键

-- 方式1
CREATE TABLE table_name (column_name data_type PRIMARY KEY,...
);-- 方式2
CREATE TABLE table_name (column_name data_type,...,PRIMARY KEY (column_name)
);

联合主键

由多个列组成的主键称为联合主键

CREATE TABLE table_name (column1 data_type,column2 data_type,...,PRIMARY KEY (column1, column2, ...)
);

修改表结构添加主键

ALTER TABLE table_name ADD PRIMARY KEY (column_name);

删除主键

ALTER TABLE table_name DROP PRIMARY KEY;

其他约束

①自增约束

自增约束用于生成唯一的标识符,通常与主键一起使用,自增的列必须是整数类型,默认从1开始

②非空约束

非空约束确保列不能储存NULL值,如果传入NULL值则会报错

③唯一约束

唯一约束确保列中的值唯一,与主键不同,这里允许NULL的存在,一个表可以有多个唯一约束

④默认约束

默认约束为列指定的默认值,当插入数据不指定该列的值,则使用默认值

⑤零填充约束

零填充约束用于数字类型,当数字长度小于指定长度时,前面补0

二、DQL——数据查询语言(单表)

DQL用于从数据库中查询数据,最常用的语句为SELECT

查询查询,那当然是有对象才能查询,那么我在这里创建一个实例,以便后面介绍各个查询语句

-- 创建学生表
CREATE TABLE students (id INT PRIMARY KEY AUTO_INCREMENT,name VARCHAR(50) NOT NULL,gender VARCHAR(10),age INT,score DECIMAL(5,2),class_id INT
);-- 插入测试数据
INSERT INTO students (name, gender, age, score, class_id) VALUES
('张三', '男', 20, 88.5, 1),
('李四', '男', 22, 92.0, 1),
('王五', '女', 21, 95.5, 2),
('赵六', '女', 19, 78.5, 2),
('钱七', '男', 23, 85.0, 1);

简单查询

-- 查询所有列
SELECT * FROM students;

-- 查询指定列
SELECT name, age, score FROM students;

-- 列别名
SELECT name AS 姓名, age AS 年龄, score AS 成绩 FROM students;

-- 去重
SELECT DISTINCT class_id FROM students;

运算符

-- 等于
SELECT * FROM students WHERE age = 20;-- 不等于
SELECT * FROM students WHERE age != 20;-- 大于
SELECT * FROM students WHERE score > 80;-- BETWEEN...AND
SELECT * FROM students WHERE age BETWEEN 20 AND 22;-- IN
SELECT * FROM students WHERE class_id IN (1, 3);-- IS NULL
SELECT * FROM students WHERE gender IS NULL;-- 逻辑运算符
SELECT * FROM students WHERE age > 20 AND score > 85;

在这里给出前三个结果,剩下的可以自行测试

常用查询

①排序查询

排序查询主要有三个:升序、降序和多列排序

-- 升序排序
SELECT * FROM students ORDER BY age ASC;-- 降序排序
SELECT * FROM students ORDER BY score DESC;-- 多列排序
SELECT * FROM students ORDER BY class_id ASC, score DESC;

升序排序:

多列排序:

②聚合查询

-- 统计学生总数
SELECT COUNT(*) AS 学生总数 FROM students;-- 统计男生数量
SELECT COUNT(*) AS 男生数量 FROM students WHERE gender = '男';-- 计算平均成绩
SELECT AVG(score) AS 平均成绩 FROM students;-- 计算总成绩
SELECT SUM(score) AS 总成绩 FROM students;-- 最高分和最低分
SELECT MAX(score) AS 最高分, MIN(score) AS 最低分 FROM students;

③聚合查询——null值处理

(1)COUNT(*) 包含NULL值的行

(2)COUNT(列名) 不包含NULL值的行

(3)SUMAVGMAXMIN 忽略NULL

④分组查询

分组查询:GROUP BY 列名;        分组后筛选:HAVING 条件;

-- 按班级分组,统计每个班级的学生数量
SELECT class_id, COUNT(*) AS 学生数量 FROM students GROUP BY class_id;-- 按班级分组,计算每个班级的平均成绩
SELECT class_id, AVG(score) AS 平均成绩 FROM students GROUP BY class_id;-- 分组后筛选,只显示学生数量大于2的班级
SELECT class_id, COUNT(*) AS 学生数量 FROM students GROUP BY class_id HAVING COUNT(*) >
2;

⑤分页查询

分页查询:LIMIT 偏移量,每页数量;        偏移量从0开始

-- 每页显示2条数据,查询第一页
SELECT * FROM students LIMIT 0, 2;-- 每页显示2条数据,查询第二页
SELECT * FROM students LIMIT 2, 2;

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

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

相关文章

HP Pavilion G6 笔记本安装Ubuntu开机后自动进入飞行模式的问题解决

问题一台HP Pavilion G6 笔记本 ,安装了Ubuntu24.04版本,开机后,直接进入飞行模式,导致无法使用Wifi,且使用fnf10的组合键,也无法关闭飞行模式。使用fnf10键,可以看到提示显示飞行模式,但无法关…

LLM:MoE原理与实现探索

文章目录前言一、Deepseek Moe二. Moe架构1. Expert2. Gate3. MoE Module三、Auxiliary Loss总结前言 MoE(Mixture of Experts) 已经逐渐在LLM中广泛应用,其工程部署相关目前也有了越来越多的支持,本文主要记录一下MoE的基本模块构造与原理。…

基于领域事件驱动的微服务架构设计与实践

引言:为什么你的微服务总是"牵一发而动全身"? 在复杂的业务系统中,你是否遇到过这样的困境:修改一个订单服务,却导致支付服务异常;调整库存逻辑,用户服务开始报错。这种"蝴蝶效应…

如何使用curl编程来下载文件

libcurl 是一个功能强大的跨平台网络传输库,支持多种协议。 本篇来介绍libcul的C语言编程,实现一个文件下载的功能。 1 curl基础介绍 1.1 核心数据结构 1.1.1 CURL句柄 CURL是libcurl 的核心句柄,每个请求对应一个 CURL 实例,…

大语言模型提示工程与应用:ChatGPT提示工程技术指南

ChatGPT提示工程 学习目标 在本课程中,我们将学习更多关于ChatGPT的最新提示工程技术。 相关知识点 ChatGPT提示工程 学习内容 1 ChatGPT提示工程 ChatGPT是OpenAI研发的新型对话模型,具备多轮对话能力。该模型通过人类反馈强化学习(RLHF)训练&am…

能力评估:如何系统评估你的技能和经验

能力评估:如何系统评估你的技能和经验 作为一名38岁的互联网研发老兵,你已经积累了丰富的经验,包括技术深度、项目管理、团队协作等。但能力评估不是一次性事件,而是持续过程,帮助你识别优势、短板,并为职业…

鸿蒙开发中所有自定义装饰器的完整案例解析--涵盖 16 个核心装饰器的详细用法和实战场景

以下是鸿蒙开发中 所有自定义装饰器的完整案例解析 和 终极总结指南,涵盖 16 个核心装饰器的详细用法和实战场景: 一、终极总结表:16大装饰器全景图 装饰器类别V1V2核心作用典型场景Component组件定义✅❌创建标准组件业务UI组件ComponentV2…

【C++】哈希表的实现(unordered_map和unordered_set的底层)

文章目录 目录 文章目录 前言 一、unordered_set和unordered_map介绍 二、哈希表的介绍 三、哈希冲突的解决方法 1.开放定址法 2.链地址法 四、两种哈希表代码实现 总结 前言 前面我们学习了红黑树,红黑树就是map和set的底层,本篇文章带来的是unordered…

欧拉公式的意义

欧拉公式的意义 欧拉公式(Euler’s Formula)是数学中最重要的公式之一,它将复数、指数函数和三角函数紧密联系在一起。其基本形式为: eiθcos⁡θisin⁡θ e^{i\theta} \cos \theta i \sin \theta eiθcosθisinθ 当 θπ\thet…

Linux Docker 运行SQL Server

在Linux操作系统,已安装docker,现在以docker compose方式,安装一个最新版SQL Server 2022的数据库。 # 建个目录(请不要照抄,我的数据盘在/data,你可以改为/opt) mkdir /data/sqlserver# 进入目…

C++:stack_queue(2)实现底层

文章目录一.容器适配器1. 本质:2. 接口:3. 迭代器:4. 功能:二.deque的简单介绍1.概念与特性2.结构与底层逻辑2.1 双端队列(deque)结构:2.2 deque的内部结构2.3 deque的插入与删除操作&#xff1…

Lightroom 安卓版 + Windows 版 + Mac 版全适配,编辑管理一站式,专业摄影后期教程

软件是啥样的​ Adobe Lightroom 这软件,在安卓手机、Windows 电脑和 Mac 电脑上都能用。不管是喜欢拍照的人,还是专门搞摄影的,用它都挺方便,能一站式搞定照片编辑、整理和分享这些事儿。 ****下载地址 分享文件:【Li…

office卸载不干净?Office356卸载不干净,office强力卸载软件下载

微软官方认可的卸载工具,支持彻底清除Office组件及注册表残留。需要以管理员身份运行,选择“移除Office”功能并确认操作。 Office Tool Plus安装地址获取 点击这里获取:Office Tool Plus 1、双击打开软件 image 2、选择左右的工具箱&…

互联网企业慢性死亡的招聘视角分析:从岗位割裂看战略短视

内容简介: 一个猎头和HR的简单拒绝,揭示了中国互联网企业人才观念的深层问题。通过分析岗位过度细分现象,本文探讨了战略短视、内斗文化和核心竞争力缺失如何导致企业慢性死亡,并提出了系统性的解决方案。#互联网企业 #人才招聘 #…

OpenBMC中phosphor-dbus-interfaces深度解析:架构、原理与应用实践

引言 在OpenBMC生态系统中,phosphor-dbus-interfaces作为D-Bus接口定义的核心组件,扮演着系统各模块间通信"契约"的关键角色。本文将基于OpenBMC源码,从架构设计、实现原理到实际应用三个维度,全面剖析这一基础组件的技…

驾驶场景玩手机识别准确率↑32%:陌讯动态特征融合算法实战解析

原创声明本文为原创技术解析文章,核心技术参数与架构设计参考自《陌讯技术白皮书》,转载请注明出处。一、行业痛点:驾驶场景行为识别的现实挑战根据交通运输部道路运输司发布的《驾驶员不安全行为研究报告》显示,驾驶过程中使用手…

Mysql——单表最多数据量多少需要分表

目录 一、MySql单表最多数据量多少需要分表 1.1、阿里开发公约 1.2、一个三层的B+树,它最多可以存储多少数据量 1.3、示例 1.3.1、示例表中一行的数据占多少字节数 1.3.2、示例表中一页里面最多可以存多少条记录 1.3.3、按示例表计算,一个三层的B+树,可以放多少条100字节的数…

scikit-learn/sklearn学习|岭回归解读

【1】引言 前序学习进程中,对用scikit-learn表达线性回归进行了初步解读。 线性回归能够将因变量yyy表达成由自变量xxx、线性系数矩阵www和截距bbb组成的线性函数式: y∑i1nwi⋅xibwTxby\sum_{i1}^{n}w_{i}\cdot x_{i}bw^T{x}byi1∑n​wi​⋅xi​bwTxb实…

基于Django的图书馆管理系统的设计与实现

基于Django的图书馆管理系统的设计与实现、

ComfyUI版本更新---解决ComfyUI的节点不兼容问题

前言: 新版本的COMFYUI与节点容易出现不兼容的问题,会导致整个系统崩掉。 目录 一、前期准备工作:虚拟环境配置 为什么需要虚拟环境? 具体操作步骤 二、常见问题解决方案 1、工作流输入输出图像不显示问题 2、工作流不能拖动&#xff0…