Mysql建表3大约束+条件查询、分页语法+难点聚合案例解析

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
全局流量管理 GTM,标准版 1个月
简介: Mysql建表3大约束+条件查询、分页语法+难点聚合案例解析

1.主键约束

  • 关键字 : primary key

格式一:在创建表时,在写字段的时候进行设置

  • 只能设置一个主键
  • 不能重复插入主键
  • 插入的主键不能为null
CREATE TABLE pk01(
    id INT PRIMARY KEY ,
    `name` VARCHAR(32)
);

格式二:在创建表。声明在列后,声明主键约束

  • 特点:可以将多个列声明成一个主键(联合主键)
CREATE TABLE pk02(
    id INT,
    `name` VARCHAR(20),
    CONSTRAINT PRIMARY KEY(id)
);

格式三:在创建表之后,修改表结构,将列声明成主键

CREATE TABLE pk01(
    id INT ,
    `name` VARCHAR(32)
);
ALTER TABLE pk03 ADD CONSTRAINT PRIMARY KEY(id);

2 .唯一约束

  • 关键字:unique

格式一:在创建表时,在写字段的时候进行设置

* 设置唯一约束的列不可重复插入

* 设置唯一约束的列允许为null值


CREATE TABLE pk01(
    id INT UNIQUE ,
    `name` VARCHAR(32)
);

格式二 : 在创建表。声明在列后,声明主键约束

CREATE TABLE pk02(
    id INT,
    `name` VARCHAR(20),
    CONSTRAINT UNIQUE(id)
);

格式三:在创建表之后,修改表结构,将列声明成主键

CREATE TABLE pk01(
    id INT ,
    `name` VARCHAR(32)
);
ALTER TABLE pk03 ADD CONSTRAINT UNIQUE(id);

3 非空约束

  • 关键字:not null
  • 特点:
  • 被设置的列可以重复插入数据
  • 不允许为null
CREATE TABLE pk01(
    id VARCHAR(20) NOT NULL ,
    `name` VARCHAR(32)
);

4 mysql 特有 自动增长列


关键字: auto_increment


特点:


被自动增长列修饰的列,将自动累加,自己维护列中的数据


限定条件:


被修饰的列的类型,必须是数字类型(int,float,douoble)


必须被键key修饰(主键primary key , 唯一约束 unique)

CREATE TABLE ai01(){
    id INT PRIMARY KEY AUTO_INCREMENT,
    `name` VARCHAR(20)
}

5 补充-----截取小数点 truncate


作业中遇到 ----截取小数点


关键字:truncate(要截取的数,要截取几位);


SELECT cno `课程`, TRUNCATE(AVG(degree),2) `平均成绩` FROM score GROUP BY cno ;


6 访问查询多个表


  • 语法: select * | name from b表1 表1的别名,表2 表1的别名 where 条件;
  • 可通过条件将两表相连
-- 20、查询所有学生的Sname、Cno和Degree列(两表连接)。
SELECT sname,cno,degree FROM student s , score c WHERE s.sno = c.sno ;


7 where 字段 in(多个条件)

  • 可在where 字段后 in括号中写多个查询条件
1. -- 5、 查询Score表中成绩为85,86或88的记录。
2. SELECT * FROM score WHERE degree IN(85,86) OR degree = 88 ;


8 like 模糊查询

  • 字段1 like '%字段2%' : 字段1包含中包含字段2
  • 字段1 like '字段2%' : 字段1以字段2 开始
  • 字段1 like '%字段2' :字段1以字段2 结束
-- 16、查询Student表中不姓“王”的同学记录。
SELECT * FROM student WHERE sname NOT LIKE '王%'; 
- 通过标题(模糊查询)和价格查询书籍
SELECT * FROM book WHERE title LIKE '%二%' AND price = 100 ;


9 分页

  • 关键字:limit 起始索引,每页页数
  • 公式:起始索引 = (页数-1)*每页页数
# 语法 select * from 表名 limit startIndex, pageSize;
# 参数1:startIndex开始索引,从0开始
# 参数2:pageSize 每页个数
# 第一页,每页2条
SELECT * FROM person LIMIT 0,2 ;
# 第二页
SELECT * FROM person LIMIT 2,2 ;
# 第三页
SELECT * FROM person LIMIT 4,2 ;
# 第 pageNum 页  , startIndex = (pageNum-1) * pageSize
# 第二页,每页3条
SELECT * FROM person LIMIT 3,3 ;
# 第6页,每页5条
SELECT * FROM person LIMIT 25,5 ;


10 难点一 【聚合avg+count+分组+截取小数点】


分析:


select cname 要查询的课程


TRUNCATE(AVG(degree),2) 对该列进行 计算平均分并截取小数点


FROM score s , course c 要查询的表,并写明表的别名


WHERE s.cno = c.cno 条件查询,将两个表根据对应的外键进行两表相连


GROUP BY cname 对课程名进行分组,平均分就可计算分组后的课程单 列平均分


HAVING COUNT(degree) >= 5 对其分组后进行条件约束,只对其满足条件的分组进行计数单列平均分

-- 19、查询Score表中至少有5个成绩记录的课程的平均分数。
SELECT cname , TRUNCATE(AVG(degree),2) FROM score s , course c WHERE s.cno = c.cno GROUP BY cname HAVING COUNT(degree) >= 5 ; 


相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
2月前
|
NoSQL 关系型数据库 MySQL
2024Mysql And Redis基础与进阶操作系列(4-2)作者——LJS[含MySQL非空、唯一性、PRIMARY KEY、自增列/自增约束举例说明等详解步骤及常见报错问题对应的解决方法]
24MySQL非空、唯一性、PRIMARY KEY、自增列/自增约束举例说明等详解步骤及常见报错问题对应的解决方法(4-2) 学不会你来砍我!!!
|
9天前
|
存储 SQL 关系型数据库
【MySQL基础篇】MySQL约束语法
文章介绍了MySQL中表的约束概念,包括非空、唯一、主键、默认和外键约束,以及如何在创建和修改表时指定这些约束。外键约束用于保持数据的一致性和完整性,文章通过示例展示了添加、删除外键的语法,并讨论了不同的删除/更新行为,如CASCADE和SETNULL。
【MySQL基础篇】MySQL约束语法
|
2天前
|
存储 数据库 对象存储
新版本发布:查询更快,兼容更强,TDengine 3.3.4.3 功能解析
经过 TDengine 研发团队的精心打磨,TDengine 3.3.4.3 版本正式发布。作为时序数据库领域的领先产品,TDengine 一直致力于为用户提供高效、稳定、易用的解决方案。本次版本更新延续了一贯的高标准,为用户带来了多项实用的新特性,并对系统性能进行了深度优化。
12 3
|
10天前
|
存储 关系型数据库 MySQL
10个案例告诉你mysql不使用子查询的原因
大家好,我是V哥。上周与朋友讨论数据库子查询问题,深受启发。为此,我整理了10个案例,详细说明如何通过优化子查询提升MySQL性能。主要问题包括性能瓶颈、索引失效、查询优化器复杂度及数据传输开销等。解决方案涵盖使用EXISTS、JOIN、IN操作符、窗口函数、临时表及索引优化等。希望通过这些案例,帮助大家在实际开发中选择更高效的查询方式,提升系统性能。关注V哥,一起探讨技术,欢迎点赞支持!
|
24天前
|
关系型数据库 MySQL 数据库
数据库数据恢复—MYSQL数据库文件损坏的数据恢复案例
mysql数据库文件ibdata1、MYI、MYD损坏。 故障表现:1、数据库无法进行查询等操作;2、使用mysqlcheck和myisamchk无法修复数据库。
|
7天前
|
存储 关系型数据库 MySQL
MySQL(条件约束)
为了校验数据,让数据的正确性能够得到保证,约束,能够引进更多的检查操作,但是也会增加系统的成本开销
|
2月前
|
关系型数据库 MySQL 数据处理
MySQL函数与约束
MySQL 提供了丰富的函数和强大的约束机制,用于数据处理和完整性维护。通过掌握这些工具,可以有效地管理和分析数据库中的数据,确保数据的一致性和准确性。无论是在日常数据查询中使用内置函数,还是在数据库设计中应用各种约束,都是确保数据库系统稳定、高效运行的关键。希望本文对您理解和应用 MySQL 函数与约束有所帮助。
35 1
|
3月前
|
关系型数据库 MySQL 数据库
一个 MySQL 数据库死锁的案例和解决方案
本文介绍了一个 MySQL 数据库死锁的案例和解决方案。
196 3
|
3月前
|
存储 关系型数据库 MySQL
基于案例分析 MySQL 权限认证中的具体优先原则
【10月更文挑战第26天】本文通过具体案例分析了MySQL权限认证中的优先原则,包括全局权限、数据库级别权限和表级别权限的设置与优先级。全局权限优先于数据库级别权限,后者又优先于表级别权限。在权限冲突时,更严格的权限将被优先执行,确保数据库的安全性与资源合理分配。
|
10天前
|
存储 Oracle 关系型数据库
数据库传奇:MySQL创世之父的两千金My、Maria
《数据库传奇:MySQL创世之父的两千金My、Maria》介绍了MySQL的发展历程及其分支MariaDB。MySQL由Michael Widenius等人于1994年创建,现归Oracle所有,广泛应用于阿里巴巴、腾讯等企业。2009年,Widenius因担心Oracle收购影响MySQL的开源性,创建了MariaDB,提供额外功能和改进。维基百科、Google等已逐步替换为MariaDB,以确保更好的性能和社区支持。掌握MariaDB作为备用方案,对未来发展至关重要。
35 3

推荐镜像

更多