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

简介: 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 ; 


相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
相关文章
|
10月前
|
SQL 缓存 监控
MySQL缓存机制:查询缓存与缓冲池优化
MySQL缓存机制是提升数据库性能的关键。本文深入解析了MySQL的缓存体系,包括已弃用的查询缓存和核心的InnoDB缓冲池,帮助理解缓存优化原理。通过合理配置,可显著提升数据库性能,甚至达到10倍以上的效果。
|
10月前
|
SQL 监控 关系型数据库
SQL优化技巧:让MySQL查询快人一步
本文深入解析了MySQL查询优化的核心技巧,涵盖索引设计、查询重写、分页优化、批量操作、数据类型优化及性能监控等方面,帮助开发者显著提升数据库性能,解决慢查询问题,适用于高并发与大数据场景。
|
10月前
|
SQL 关系型数据库 MySQL
MySQL的查询操作语法要点
储存过程(Stored Procedures) 和 函数(Functions) : 储存过程和函数允许用户编写 SQL 脚本执行复杂任务.
371 14
|
10月前
|
SQL 关系型数据库 MySQL
MySQL的查询操作语法要点
以上概述了MySQL 中常见且重要 的几种 SQL 查询及其相关概念 这些知识点对任何希望有效利用 MySQL 进行数据库管理工作者都至关重要
247 15
|
10月前
|
缓存 关系型数据库 BI
使用MYSQL Report分析数据库性能(下)
使用MYSQL Report分析数据库性能
591 158
|
10月前
|
关系型数据库 MySQL 数据库
自建数据库如何迁移至RDS MySQL实例
数据库迁移是一项复杂且耗时的工程,需考虑数据安全、完整性及业务中断影响。使用阿里云数据传输服务DTS,可快速、平滑完成迁移任务,将应用停机时间降至分钟级。您还可通过全量备份自建数据库并恢复至RDS MySQL实例,实现间接迁移上云。
|
10月前
|
关系型数据库 MySQL 数据库
阿里云数据库RDS费用价格:MySQL、SQL Server、PostgreSQL和MariaDB引擎收费标准
阿里云RDS数据库支持MySQL、SQL Server、PostgreSQL、MariaDB,多种引擎优惠上线!MySQL倚天版88元/年,SQL Server 2核4G仅299元/年,PostgreSQL 227元/年起。高可用、可弹性伸缩,安全稳定。详情见官网活动页。
1578 152
|
10月前
|
关系型数据库 MySQL 数据库
阿里云数据库RDS支持MySQL、SQL Server、PostgreSQL和MariaDB引擎
阿里云数据库RDS支持MySQL、SQL Server、PostgreSQL和MariaDB引擎,提供高性价比、稳定安全的云数据库服务,适用于多种行业与业务场景。
1096 156
|
10月前
|
缓存 监控 关系型数据库
使用MYSQL Report分析数据库性能(中)
使用MYSQL Report分析数据库性能
632 156
|
10月前
|
缓存 监控 关系型数据库
使用MYSQL Report分析数据库性能(上)
最终建议:当前系统是完美的读密集型负载模型,优化重点应放在减少行读取量和提高数据定位效率。通过索引优化、分区策略和内存缓存,预期可降低30%的CPU负载,同时保持100%的缓冲池命中率。建议每百万次查询后刷新统计信息以持续优化
752 161

推荐镜像

更多