2.mysql基本知识(聚合函数,约束等等)

本文探讨了小数精度、主键约束、外键连接、SQL函数应用(包括字符串、日期时间、数学函数),以及SQL查询逻辑。涵盖了数据类型、聚合函数使用、子查询和CASE语句实例,以及MySQL特有的LIMIT指令。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

/*
2:小数位数
4:精度:小数位+整数位
decimal(4,2):100?//numeric 
char(6) 'hello '
varchar(6) 'hello'
*/
/*
主键(primary key):
1.不能为空(null)
2.必须唯一


创建外键,外键一定是创建在外键表上
*//*区分连接查询时两个表有同名的字段,指定表的限定名,
连接本质上是个笛卡尔乘积(查询学生号,学生名,考试成绩)*/


/*
    插入数据的顺序:先插入主键表记录,再插入外键表记录.
    删除数据的顺序:先删除外键表记录,再删除主键表记录.
*/
#字符串函数
SELECT concat('My','S','QL') as concat;#MySQL
SELECT insert('这是SQL Server数据库',3,10,'MySQL');#这是MySQL数据库
SELECT lower('MySQL');
SELECT upper('MySQL');
SELECT substring('JavaMySQLOracle',5,5);
SELECT replace('www.mysql.com', 'w', 'Ww');
#时间日期函数
SELECT CURDATE();
SELECT CURTIME();
select now(),current_timestamp;
SELECT WEEK(NOW());
SELECT YEAR('2008-08-08');
SELECT HOUR(NOW());
SELECT MINUTE(NOW());
SELECT DATEDIFF(NOW(),'2008-8-8');
SELECT ADDDATE(NOW(),-5);
select month(now());
select day(now());
select quarter(now()),quarter('2019-04-04');
#数学函数
SELECT ceil(3.14);
SELECT floor(3.14);
select rand();#[0,1)伪随机数

#聚合函数会忽略null值
avg(),max(),min(),sum()
/*
    select语句执行的逻辑顺序:
    1.from:查询表中的所有记录,生成结果集
    2.join:根据连接条件,生成结果集
    3.where:对第2步生成结果集用where后面的
      条件表达式对每一条记录进行筛选
    4.group by:分组后只能对组进行操作,select子句中只能出现分组的列
        或聚合函数
    5.having:对组进行筛选
    6.select:输出查询结果
    7.order by:对输出的查询结果进行排序
    
    引用自定义名要注意,在查询中不能引用,查询结果后可引用
    
    先看from,再select,
*/
/*查询年级总人数小于3的年级名称(having)----对组进行筛选,作用同where
输出(年级名称,人数)---where不能对组筛选,count里面不为空即可
*/

#可省略
as,inner,outer,asc
#不可省略
desc#降序

#2.子查询,先内后外,多条记录用in

#case语法
select studentname,#需要,

case
    when studentresult >=90 then 'A'#没有,
    when studentresult between 80 and 89 then 'B'
    when studentresult between 70 and 79 then 'C'
    when studentresult between 60 and 69 then 'D'
    else 'E'
end '等级'#相当于查询的字段

from student join result
on student.studentno=result.studentno
join course
on result.subjectno=course.subjectno
where  #result
result.subjectno=
(select subjectno from course where subjectname='java')

and 
examdate=
(select max(examdate) from result join course
on result.subjectno=course.subjectno
where subjectname='java'#Java课程最近一次考试时间
);


#limit的mysql特有
limit m#前m条记录
limit m,n#m代表开始的索引(从0开始),n-查询的记录数
#m=9,即从第10条开始


 

<think>嗯,用户想了解MySQL的基本概念、用途和应用场景,还有为什么要使用它。首先,我需要从基础开始解释什么是MySQL,它是一个关系型数据库管理系统,属于Oracle旗下产品。然后,得说明它的主要用途,比如在Web开发中的应用,作为后端数据库存储数据。应用场景的话,可能包括电子商务、内容管理系统、日志记录等等。 接下来,用户可能想知道为什么选择MySQL而不是其他数据库,比如PostgreSQL或者MongoDB。这时候需要强调MySQL的优势,比如开源、易用性、高可靠性,还有社区支持。另外,结合参考内容里的信息,比如引用[1]提到的Facebook、Twitter、YouTube这些大公司都在用,说明它的市场认可度很高。引用[3]提到支持多种编程语言接口,这也是一个优点,方便集成到不同的应用中。 还要提到MySQL的存储引擎,比如InnoDB和MyISAM,根据引用[4]的内容,不同的存储引擎适用于不同的场景,比如InnoDB支持事务,适合需要ACID特性的应用,而MyISAM适合读多写少的场景。这部分需要详细说明,让用户理解如何根据需求选择合适的存储引擎。 可能用户不太清楚关系型数据库和非关系型的区别,这里可以简单对比一下,比如MySQL的结构化数据存储,适合复杂查询,而NoSQL如MongoDB更适合非结构化数据和水平扩展。不过用户的问题没有直接提到这点,但作为背景知识可能有帮助。 应用场景方面,引用[1]提到Web开发、电子商务、数据分析,这些都需要具体展开。比如在Web开发中,MySQL常与PHP、Python一起使用,处理用户数据、订单等。电子商务中的库存管理、用户行为分析,数据分析中的报表生成等。 使用原因部分,要结合性能和可靠性,比如MySQL的事务支持、数据安全机制,如主从复制、备份恢复工具。引用[4]里的插件式存储引擎也是一个亮点,说明其灵活性。 需要确保回答结构清晰,分点列出基本概念、用途、应用场景、使用原因,每个部分简明扼要。同时,按照系统指令,行内公式用$...$,独立公式用$$...$$,但这里可能涉及较少数学内容,主要关注数据库概念。不过如果有性能相关的公式,比如时间复杂度,可能需要用LaTeX,但用户问题里没有涉及,暂时不需要。 最后,生成相关问题时要围绕MySQL的基本概念、与其他数据库对比、存储引擎选择、优化方法、安装配置等,帮助用户深入理解。确保引用标记正确,比如在提到广泛应用时添加[^1],存储引擎部分添加[^4],编程接口部分引用[^3]。</think>### MySQL 基本概念与核心特性 #### 一、基本概念 MySQL 是一种**开源关系型数据库管理系统(RDBMS)**,基于 SQL(结构化查询语言)实现数据管理。其核心特点包括: - **客户端-服务器架构**:通过客户端工具(如 MySQL Workbench)与服务器交互[^2]。 - **数据表结构**:以行列形式存储结构化数据,支持主键、外键约束。 - **事务支持**:通过 InnoDB 引擎实现 ACID 特性(原子性、一致性、隔离性、持久性)。 #### 二、主要用途 1. **Web 应用后端存储** 管理用户信息、订单数据、日志记录等,例如电商平台的商品库存跟踪: ```sql UPDATE products SET stock = stock - 1 WHERE product_id = 1001; ``` 2. **数据分析与报表** 支持复杂查询(如聚合函数 `SUM()`、窗口函数 `RANK()`),生成销售趋势分析。 #### 三、典型应用场景 | 场景 | 技术实现 | 优势体现 | |---------------|--------------------------------------|------------------------------| | 社交平台 | 存储用户关系图谱 | 高效处理多表关联查询 | | 金融系统 | InnoDB 实现事务回滚 | 数据一致性保障[^4] | | 物联网(IoT) | Memory 引擎缓存实时传感器数据 | 高速读写临时数据[^4] | #### 四、使用原因分析 1. **技术优势** - 支持每秒数万次查询(QPS),通过索引优化实现快速响应 - 提供二进制日志(binlog)实现主从复制,可用性达 99.99%[^4] 2. **生态兼容性** 与 PHP、Python、Java 等语言无缝集成,例如 Python 连接示例: ```python import mysql.connector db = mysql.connector.connect(host="localhost", user="root", database="test") ``` 3. **成本效益** 社区版免费使用,集群方案成本仅为商业数据库的 1/5
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值