欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

数据库特训系列1——基础拾遗

程序员文章站 2022-06-23 19:19:51
缘由 每天学习一段时间发现,琐琐碎碎的学习,对日常的工作帮助很大,避免了之前踩过的各种坑; 但,对于这些坑是如何形成的,深挖一会儿就不行了。 思考之下,发现,平时的所学如同学习如何填坑; 系统性的学习,才是,从断面看这个坑,时间跨度上看这个坑的形成和填上,也可以说,是升级我们的铲子; 那句话怎么说来 ......
缘由

每天学习一段时间发现,琐琐碎碎的学习,对日常的工作帮助很大,避免了之前踩过的各种坑;

但,对于这些坑是如何形成的,深挖一会儿就不行了。

思考之下,发现,平时的所学如同学习如何填坑;

系统性的学习,才是,从断面看这个坑,时间跨度上看这个坑的形成和填上,也可以说,是升级我们的铲子;

那句话怎么说来着,手里有了锤子,看什么都是钉子;

所以,我们从基础开始;

之前也写过“必知必会”的读后感,长久不用,现在又需要再拾点东西了

最基础部分

几个问题想一下:

什么是数据库? 什么是sql? 什么是MySQL?

这个其实就是整个数据库最基础的地方,却总是让大神都能卡下壳的时候;

其实简单理解就好:

数据库就是数据的仓库,也就是存储数据的地方(软件?); sql,结构化查询语言,用于和数据库通信; MySQL是一种DBMS

是不是什么都看得懂,又什么都不懂,那就对了;

继续

数据库用于存储数据,存储那种可以具有逻辑关系的数据,在数据库中,所有数据被结构化描述; sql,是一种语言,语句简单但功能强大,用于和数据库通信,实现对数据库的各种操作,是给数据库下命令的方式; MySQL是一种DBMS,DBMS是数据库管理系统,通常就是我们说的数据库;

差不多了吧,那再具体一点,一些其他概念:

列:某一个字段,数据的一个特性; 行:特定某一条数据; 表:=列+行;数据的结构化清单; MySQL是属于基于客户机+服务器的,数据库操作实际发生在服务器,对客户透明;客户机可以是MySQL提供的工具(命令行工具),可以是各种语言:PHP,JAVA等(注意这里概念的理解) SHOW命令的使用:
SHOW DATABASES;
SHOW TABLES;
SHOW STATUS;
## 显示服务器状态
SHOW COLUMNS FORM table_name;
SHOW CREATE database;
SHOW CREATE table;
## 显示创建语句
SHOW WARNINGS;
SHOW ERRORS;
SHOW GRANTS;
## 显示授权用户
SELECT

SELECT是数据库中,最常用的操作了,我们重点说下这个,其他涉及到了的话具体补上;

DISTINCT

DISTINCT是不查到重复的行;

需要注意的是,其对多个列的,是要求每个都不一样的才行,对单一没问题,多个有问题,参考:

2.作用于多列
示例2.1
select distinct name, id from A
执行后结果如下:

数据库特训系列1——基础拾遗

实际上是根据name和id两个字段来去重的,这种方式Access和SQL Server同时支持。

示例2.2
select distinct xing, ming from B
返回如下结果:

数据库特训系列1——基础拾遗

返回的结果为两行,这说明distinct并非是对xing和ming两列“字符串拼接”后再去重的,而是分别作用于了xing和ming列。

指定多个列排序

排序按照所规定的顺序;

比如,按照age,gender两列排序,会按照age先排,然后年龄相同的,再按照gender去排;

IN操作符

IN操作符的功能几乎和OR是一样的,但我们还是推荐使用IN

更直观; 易管理; IN一般比OR清单执行更快(注意条件) 更加适用于子查询情况下 通配符

一般情况下,一定不要放在起始位置,特别慢!!!

GROUP BY等

用到聚集类型的,请一定加上GROUP BY;

使用HAVING来过滤GROUP BY;

由此带来SELECT的顺序问题:

SELECT id,COUNT(count),name
FROM test_table
WHERE id > 100
GROUP BY name
HAVING COUNT(count) > 2
ORDER BY id DESC
LIMIT 100
联结

自联结 = 多个条件查询
自然联结,外部联结什么的好晕,打算留坑

可以开坑的地方 sql中的正则表达式(正则表达式也该复习了。。。) sql的联结 组合查询 全文本搜索 视图 存储过程 游标 触发器 事务处理 全球化和本地化 安全管理 维护 性能优化

每个都能扯一大堆..我们这一个月好好战一下好吧...