【程序员与DBA】

DBA需要花很多时间在数据库的备份、授权、调优、修复、监控等内容上,而程序员则应该去掌握SQL语句的使用,而且为了简化系统开发难度,应该学会使用数据库函数、子查询、表联接、开窗函数等高级的SQL特性。

【数据库的引入】

在数据库出现以前,处理数据,开发人员需要熟悉操作磁盘文件的函数、编写复杂的搜寻算法才能快速的把数据从文件中检索出来,当数据格式发生变化的时候要编写复杂的文件格式升级程序、很难控制并发修改。

数据库可以将我们从复杂的数据处理事务中解脱出来,从而专注于业务。

【数据库】

数据库:存储数据的仓库。

数据库能够帮助我们存储、组织和检索数据。

【数据库管理系统】

数据库管理系统DBMS,是一种操纵和管理数据库的系统软件,用于建立、使用和维护数据库。用户通过DBMS访问数据库中的数据,DBA也通过DBMS进行数据库的维护工作。

主流数据库管理系统有:DB2、Oracle、Microsoft SQL Server、Sybase SQL Server、Informix、MySQL等。

1、  DB2

应用程序可以通过使用微软的ODBC接口、Java的JDBC接口或者CORBA接口代理来访问DB2数据库。另外,DB2被称为“最难用的数据库系统”。

2、  Oracle

Oracle在功能、性能、可用性都非常好。

3、  Microsoft SQL Server

Microsoft SQL Server的可用性做的非常好,提供了很多外围工具来帮助用户对数据库进行管理,用户甚至无需直接执行任何SQL语句就可以完成数据库的创建、数据表的创建、数据的备份/恢复等工作。但它只能运行于Windows操作系统之上,而且在大数据量和大交易量的环境中的表现都是不尽人意的,当企业的业务量达到一个水平后就要考虑升级到Oracle或者DB2了。

4、  MySQL

一个小型关系型数据库管理系统。目前Internet上流行的网站架构方式时LAMP(linux+Apach+MySQL+PHP)。MySQL在国内没有足够的技术支持力量。

【基础概念】

1、  Catalog(Database)

数据库既然是一个数据的仓库,就要对不同类别的数据分类存储,如HR数据库、核心业务数据库BIZ。不同的数据就叫做Catalog或Database。

2、  表Table

区别了不同的类别,还要区别不同的类型。如核心业务中的客户资料、商品资料、销售员资料等。不同类型的资料应放到不同的区域中,称为“表”Table。

3、  列Column

也叫“字段”Field,每个列描述了数据的一个特性。

4、  数据类型DataType

规定了一个列中能填写什么类型的数据。

5、  记录Record

又称为行Row,它是数据表中的一行数据。表是由行和列组成的一张二维表,这就是关系数据库中最基本的数据模型。

6、  主键PrimaryKey

如员工表中的每一行代表一个员工,而名字可能是重复的,这时需要为每个员工分配一个唯一的工号,来唯一的标示员工,大多数DBMS中并没有强制规定一个表必须有主键,但是为一个数据表指定一个主键是一个非常好的习惯。

7、  表关联

为了避免表中的重复信息,将两张表通过字段关联起来的方式称为“表关联”,关联到其他表主键的字段被称为“外键”。

8、  索引

可以把索引想象成汉语字典的按笔画查找,如将笔画为5的汉字列出来,将笔画为18的汉字列出来等。索引可以提高数据查询的速度,但它占据了一定的磁盘空间,减慢了数据插入和删除的速度,因为每次插入和删除的时候都需要更新索引,一个表拥有的索引越多,则写操作的平均性能下降就越大。

【数据库语言SQL】

SQL是专为数据库而建立的操作命令集,是一种功能齐全的数据库语言。使用SQL,只要发出“做什么”的命令,“怎么做”是不用使用者考虑的。

SQL全称是Structured QueryLanguage,SQL是高级的非过程化编程语言,允许用户在高层数据结构上工作,SQL语句可以嵌套使用。

SQL语句具有4个主要功能:

1、  创建数据库并定义表的结构;

2、  查询需要的数据;

3、  更新或者删除指定的数据;

4、  控制数据库的安全。

我们可以通过三种方式执行SQL:

1、  在工具中执行

如:各个DBMS几乎都提供了工具用于执行SQL语句,比如MicrosoftSQL Server的Management Studio、DB2的命令中心、Oracle的SqlPlus或者MySQL的QueryBrowser。

2、  以编译的方式嵌入到语言中

把SQL直接写到代码中,在编译的时候由编译器来决定和数据库的交互方式。

3、  以字符串的形式嵌入到语言中。

写到代码中,由代码将其提交到DBMS,并且分析返回的结果。

【增删改查】

插入

Insert into Table () values ();

删除

Delete from Table where parameter=xx;

更新

Update Table set parameter=xx;

查询

Select * from Table;

为列指定别名

select FName AS Name, FAge AS Age,FSalary AS Salary from [master].[dbo].[T_Employee]

【数据汇总】

SQL中提供了聚合函数来完成计算统计结果集条数、某个字段的最大值、某个字段的最小值、某个字段的平均值以及某个字段的合计值等数据统计的功能。SQL标准中规定了下面几种聚合函数:

函数名

说明

MAX

计算字段最大值

MIN

计算字段最小值

AVG

计算字段平均值

SUM

计算字段合计值

COUNT

统计数据条数

【高级数据过滤】

1、  通配符过滤:SQL中的通配符过滤使用LIKE关键字

1.1  单通配符过滤:使用半角下划线“_”

1.2  多字符匹配:使用半角百分号“%”

1.3  集合匹配:使用“[]”,还可以使用否定符“^”来对集合取反。如“[^bt]%”代表,匹配第一个字符不为b或者t、长度不限的字符串。

集合匹配只在MSSQLServer上提供支持,不过在其他数据库中我们可以通过变通手段来实现相同的效果。

通配符过滤是一个非常强大的功能,不过在使用通配符过滤进行检索的时候,数据库系统会对全表进行扫描,所以执行速度非常慢。

2、  多值检测

使用方法为“IN (值1,值2,值3)”

3、  数据分组

数据分组用啦将数据分为多个逻辑组,从而可以对每个组进行聚合运算。SQL语句中使用GROUP BY子句进行分组。

4、  HAVING语句

有的时候需要对部分分组进行过滤,HAVING语句能够使用的语法和where几乎是一样的。

【限制结果集行数】

如:MSSQLServer 2000中提供了TOP关键字用来返回结果集中的前N条记录。

【数据库分页】

在进行信息检索的时候,检索结果的数量通常会非常多,达到成百上千条。甚至更多,这么多的检索结果同时显示在同一个界面中,不仅查看起来非常麻烦,而且过多的数据显示在界面上也会造成占用过多的系统资源。解决这个问题的最常用方案就是数据库分页。

【抑制数据重复】

DISTINCT关键字是用来进行重复数据抑制的最简单的功能,而且所有的数据库系统都支持DISTINCT,DISTINCT的使用也非常简单,只要在SELECT之后增加DISTINCT即可。

待续。

读《程序员的SQL金典》相关推荐

  1. 读《Android 安全架构深究》

    Android 安全架构深究 安全是一个非常立体而丰富得概念.在不同的场景下,安全有着不同的含义. 比如对于网络传输,安全指的是传输的数据不会被其他人看到.篡改.伪造及仿冒,传输的数据不会遭到破坏,数 ...

  2. 《最强Android书 架构大剖析》读书笔记

    文章目录 第一章 Android 体系结构的变革之路 1.2 Android系统源码目录 与Linux的异同 Android的框架 原生二进制可执行文件 Android 的原生库 核心(core)库 ...

  3. Android Jetpack架构组件之 Room(使用、源码篇)

    2019独角兽企业重金招聘Python工程师标准>>> 1.前言 最近简单看了下google推出的框架Jetpack,感觉此框架的内容可以对平时的开发有很大的帮助,也可以解决很多开发 ...

  4. 抖音、美团等大厂千万级用户的Android客户端架构演进之路—

    在移动开发中,对开发者来说不同的人具有不同的能力.就像读一本书一样,一千个读者,有一千个哈姆雷特.但不管怎样,只要你是个软件开发者你就必须学习windows或Linux等操作系统的运行原理.Andro ...

  5. Android 图形架构之一 ——概述

    前言 本系列的文章,可以让你明白,一个View最终是如何显示到屏幕上的,从应用层到硬件抽象层.对分析app的卡顿,掉帧等 有很大帮助. 由于图形架构的涉及到的代码量很大,所以本篇先来个总体的概述,有个 ...

  6. Android display架构分析-SW架构分析(1-8)

    参考: Android display架构分析二-SW架构分析 Android display架构分析三-Kernel Space Display架构介绍 Android display架构分析四-m ...

  7. 高通Android display架构分析

    目录(?)[-] Kernel Space Display架构介绍 函数和数据结构介绍 函数和数据结构介绍 函数和数据结构介绍 数据流分析 初始化过程分析 User Space display接口 K ...

  8. [Android] Android MVP 架构下 最简单的 代码实现

    Android  MVP 架构下  最简单的 代码实现 首先看图: 上图是MVP,下图是MVC MVP和MVC的区别,在于以前的View层不仅要和model层交互,还要和controller层交互.而 ...

  9. Android系统架构-[Android取经之路]

    摘要:本节主要来讲解Android的系统架构 阅读本文大约需要花费10分钟. 文章首发微信公众号:IngresGe 专注于Android系统级源码分析,Android的平台设计,欢迎关注我,谢谢! 欢 ...

  10. Android系统架构图及简单的系统架构介绍

    2019独角兽企业重金招聘Python工程师标准>>> ndroid的系统架构和其操作系统一样,采用了分层的架构.从架构图看,android分为四个层,从高层到低层分别是应用程序层. ...

最新文章

  1. 人工智能在医疗行业应用面临的五大挑战
  2. Spring boot优点
  3. 算法:图(Graph)的遍历、最小生成树和拓扑排序
  4. ZOJ 1295——Reverse Text
  5. 博客园的神回复,程序猿的奇葩神回复[连载][二]
  6. FPGA实验2:ADDA测试
  7. 软件项目管理 实验二
  8. java setproperty 未生效_Java System类setProperty()方法及示例
  9. 坑向总结 | 树莓派调用打印机打印
  10. 作者:Scott Hanselman首席工程师
  11. docker 镜像制作
  12. 停车还能360全方位影像_360°全景倒车影像、自适应巡航买的时候觉得没用,现在发现错了...
  13. tar -d 选项 比较归档文件与文件系统中的内容
  14. OSChina 周二乱弹 ——程序员吹完牛逼 都自己加班去了
  15. 联想Y400win10基础上在安装win7
  16. cygwin git mysql_msysgit和Cygwin git之间的区别?
  17. Java实现飞机大战(有图片素材)
  18. C语言 读入中文文本文件txt乱码问题-应该设置为ANSI编码
  19. java夏普_多媒体与JAVA、拍照_夏普 SH6010C_手机其它OS-中关村在线
  20. 物联网小白入门式教学,如何快速接入一个云平台① YeeLink(重点讲解小白学习思路,高手忽略)

热门文章

  1. 教你如何辨别苹果真假配件
  2. 亚信科技 HVV面试复盘
  3. Maven项目混淆、瘦身、打包exe
  4. python安装库考虑是网速的原因,采用国内的镜像源来加速
  5. 简历要求(推荐格式)
  6. cvHoughLines2霍夫直线检测函数详解及源码解析
  7. 20200405——java之jvm 垃圾回收器和内存分配策略 二
  8. 2023 外贸进出口公司网站静态模板html源码
  9. torch.sum()的用法
  10. 掌握函数的逆向思维竟然这么可怕!