作为一枚数据产品经理,需要掌握基本的SQL查询语句技能,之后才能进一步了解与搭建数据仓库、元数据、指标字典体系。本文首先介绍MySQL基本知识。
一、了解数据库
模式:关于数据库和表的布局及特性的信息;行是表中的记录,列是字段;主键列中的值不能修改,且不能重用;数据库中包含表及其它相关sql结构。
二、检索数据
2.1select语句
检索所有列:select*fromproducts
2.2排序检索数据
orderby:selectprod_namefromproductsorderbyprod_name。
注意:orderby的子句必须是select语句的最后一个子句。
按多个列排序:selectprod_id,prod_name,prod_pricefromproductsorderbyprod_price,prod_name。那么输出结果先按prod_price排序,然后再将排序后的结果按prod_name排序。
按列位置排序:selectprod_id,prod_name,prod_pricefromproductsorderby2,3。语句与上一句结果相同。
降序排序(系统默认升序):orderbyprod_priceDSC,prod_name。则结果先按prod_price降序排序,再按price_name升序排序。
三、过滤数据
(1)使用where子句(在from之后)
范围值检查:betweenand:whereprod_pricebetween5and10。空值检查:whereprod_priceisNULL。语句返回没有价格的所有产品(空字段,不是价格为0)
(2)使用组合where子句
AND操作符:wherevendANDprod_price=4#检索由供应商DLL01制造且产品价格低于4美元的所有产品注意AND用在where子句中的关键字,用来指示检索满足所给定条件的行。OR操作符:whereOROR用在where子句中的关键字,用来表示检索匹配任一给定条件的行。AND,OR相结合(AND优先级比OR高):所以注意使用圆括号,where(vendorvend)andprod_price=10。IN操作符:wherevend_idin(‘DLL01′,’BRS01’),其功能与whereor相当。NOT:否定跟在它之后的任何条件(mysql不支持此操作符),whereNOTvend#检索除DLL01之外所有供应商的产品(此句等价于wherevend_id‘DLL01’)#NOT一定要紧跟在where后。
(3)用通配符进行过滤(通配符:用来匹配值的一部分的特殊字符,用于“字符串”),使用LIKE+通配符
百分号(%):whereprod_namelike‘Fish%’#检索任意以Fish起头的词(匹配单个或多个字符)。下划线(_):whereprod_namelike‘Fish__’#检索出的字符必须为Fish+两个字符(与%能匹配0个字符不一样,_必须匹配一个字符,不能多也不能少)。方括号([]):wherecontactlike[JM]%#[JM]匹配任何以J,M开头的人名,但它也只能匹配单个字符,为此在后加%,则可匹配多个字符。(若改为[^JM],则为检索不以J,M起头的任意联系人名,等价于:whereNOTcontactlike[JM]%)。
四、创建计算字段
(1)拼接字段(将值联结到一起构成单个值)
concat函数(mysql用):selectconcat(vend_id,’(‘,vend_country,’)’)#select语句联结以上4个元素。‘+’号(Access,SQLServer,Sybase使用):selectvend_id+‘(‘+vend_country+‘)’。‘
’号(DB2,Oracle使用):selectvend_id
‘(‘
vend_country
‘)’。TRIM函数:RTRIM去掉值右边所有空格,LTRIM去掉值左边所有空格,TRIM去掉值两边所有空格。AS关键字:给联结字段取别名。完整联结字段语句:selectRTRIM(vend_id)+‘(‘+TRIRM(vend_country)+‘)’ASvendor_titleFROMVendorsORDERBYvend_name。
(2)执行算数计算
五、使用视图
视图是虚拟的表,视图本身不包含数据,因此它们返回的数据是从其他表中检索出来的,在更改这些表中的数据时,视图将返回改变过后的数据。
(1)视图的规则和限制
视图可以嵌套;禁止在视图查询时使用ORDERBY语句。
(2)创建视图(creatview)
利用视图简化复杂的联结;用视图重新格式化检索出的数据;用视图过滤不想要的数据(where子句);使用视图与计算字段。
六、使用存储过程
为以后的使用而存储一条或多条SQL语句的集合。
七、管理事务处理
(1)什么是事务处理
事务管理用来管理必须成批执行的SQL操作,以保证数据库不包含不完整的操作结果。利用事务处理,可以保证一组数据不会中途停止,它们或者作为整体执行,或者完全不执行(除非明确指示)。
如果没有错误发生,则整组语句写到数据库表,如果发生错误,则进行回退(撤销)以恢复数据库到某个已知且安全的状态。
(2)几个术语
事务(transction):一组SQL语句;回退(rollback):指撤销指定SQL语句的过程;提交(