数据库系统操作备忘(一)

原创 2016年08月29日 13:53:59
  • 选择需要的列
SELECT prod_name FROM products;
SELECT prod_id,prod_name,prod_price FROM products;
  • 按顺序排列
SELECT prod_id,prod_name,prod_price
FROM products
ORDER BY prod_name,prod_price

以上,默认升序,先按名字排列,相同的再按价格排列
若要降序,则需:

ORDER BY prod_name DESC,prod_price
  • WHERE条件筛选
WHERE prod_price <= 10 ;
WHERE vend_id <> 'DLL01'; //不匹配检查

WHERE vend_id = 'DLL01' AND prod_price <= 10 ; //逻辑AND
WHERE vend_id = 'DLL01' OR  vend_id = 'BRS01'; //逻辑OR

要注意的是,同时使用WHERE与ORDER BY时,应将WHERE置于之前。
并且AND与OR联合使用时,AND优先级要高于OR。使用时注意加括号。

  • IN操作符用于指定条件范围清单
WHERE vend_id IN ('DLL01','BRS01')
ORDER BY prod_name;
  • 通配符LIKE(只能用于文本字串)

    1. 百分号%,表示任何字符出现任意次数
    2. 下划线_ ,用途与%一样,但是只表示单个字符
    3. 方括号[],用来指定一个字符集,它必须匹配指定位置的单个字符
WHERE prod_name LIKE 'fish%'; //以fish开头的所有项
WHERE prod_name LIKE '%bean bag%'; //之中含有bean bag的所有项
WHERE prod_name LIKE '__ inch teddy bear';//匹配两个关键字符
WHERE cust_contact LIKE '[JM]%';//名字以J或M开头的联系人

要注意的是,通配符搜索时间代价比较大,不要过分使用,不要把其置于搜索模式的开始处,要特别注意通配符位置放置的正确性。

  • 计算字段 :用于对数据库中的元素进行特定的操作

    1. 拼接操作, + 或者 || 。RTRIM(vend_name) ,此方法可以去除输出串右边的空格
    2. 赋予别名,AS vend_title。
    3. 算术运算,quantity * item_ price AS expanded_price
SELECT vend_name || '(' || vend_country || ')' FROM…… //拼接格式为:供应商名字(国家)
SELECT CONACT ( vend_name || '(' || vend_country || ')' ) //MYSQL专用
AS vend_title //加在串格式之后,可以对新生成的串起一个别名,方便程序调用
  • 函数

    1. 文本处理函数。LEFT() ; LENGTH() ; LOWER() ; LTRIM() ; RIGHT() ; RTRIM() ; SOUNDEX() ; UPPER()
    2. 日期和时间处理函数
    3. 数值处理函数。ABS() ; COS() ; EXP() ; PI() ; SIN() ; SQRT() ; TAN()
SELECT vend_name,UPPER(vend_name) AS vend_name_upcase //将vend_name字串转为大写
WHERE SOUNDEX(cust_contact) = SOUNDEX("Michael Green") //寻找发音类似"Michael Green"的项,预防因数据库录入错误而导致搜索为空

WHERE DATEPART('yyyy',order_date) = 2004 ;//DATEPART(返回的成分,过滤项),此函数返回日期的一部分。
WHERE YEAR(order_date) = 2004 ;//MYSQL里使用的函数
WHERE order_date BETWEEN to_date('01-JAN-2004') AND to_date('31-DEC-2004') ; // Oracle 里 将字符转转换为日期 
  • 汇总数据(确定满足特定条件的行数、获得表中行组的和、找出表列最大最小及均值)

    1. AVG() , 返回某列平均值
    2. COUNT() ,返回某列行数,COUNT(*)返回列所有计数,包括NULL。COUNT(colum)则忽略NULL。
    3. MAX(),返回某列最大值
    4. MIN(),返回某列最小值
    5. SUM(),返回某列之和

    6. DISTINCT 参数可用在()里参数的前边,例如DISTINCT prod_price,这样它筛选价格只会取不同值,相同的值会被过滤只留下一个

    7. 以上函数均可组合使用,每使用一次就用AS指定一个别名。
SELECT AVG(prod_price) AS avg_price //可加WHERE筛选条件,若要多个列,必须使用多个AVG()
SELECT COUNT( * ) AS num_cust FROM Customers; //返回Customers的所有
SELECT COUNT(cust_email) AS num_cust FROM Customers; //只对拥有电子邮件地址的客户计数
SELECT MAX(prod_price) AS max_price //返回最值,MIN()函数同理,MIN()会自动忽略值为NULL的行
SELECT SUM(item_price * quantity) AS total_price FROM orderItems WHERE order_num = 2005; //统计2005年订单的总价
  • 分组语句: GROUP BY
    GROUP BY语句必须出现在WHERE子句之后,ORDER BY子句之前。
SELECT vend_id,COUNT( * ) AS num_prods FROM Proudcts GROUP BY vend_id //按vend_id分类来统计数目
  • HAVING,分组过滤
    WHERE过滤行,HAVING用于过滤分组。
    WHERE在数据分组前进行过滤,HAVING在数据分组后进行过滤。
SELECT cust_id,COUNT( * ) AS orders FROM Orders GROUP BY cust_id
HAVING COUNT( * ) >= 2   //过滤分组后,orders大于2 的顾客
ORDER BY orders  //可以添加ORDER BY 语句
  • 总结SELECT子句出现的顺序

这里写图片描述

  • 子查询

    1. 可以进行SELECT的嵌套,将里层的SELECT的结果,作为外层SELECT的筛选条件,用在WHERE···IN (SELECT ···) 中。
    2. 用子查询语句来筛选统计在两张表里的信息。例如,要统计客户信息以及每个客户的订单总数:
SELECT cust_id
FROM Orders
WHERE order_num IN (SELECT order_num 
                    FROM OrderItems
                    WHERE prod_id = 'RGAN01')
SELECT cust_name,(SELECT COUNT(*)
                  FROM Orders
                  WHERE Orders.cust_id=Customers.cust_id) AS orders
FROM Customers
ORDER BY cust_name;
版权声明:本文为博主原创文章,未经博主允许不得转载。

eclipse设置备忘

前人之述备矣 http://yuanzhifei89.iteye.com/blog/974082
  • Iamplusplusc
  • Iamplusplusc
  • 2015年11月02日 17:20
  • 263

linux 命令\操作 备忘录

1、Linux挂载Winodws共享文件夹 2、查看http的并发请求数及其TCP连接状态: 3、用tcpdump嗅探80端口的访问看看谁最高 4、统计/var/log/下文件个数 ...
  • wangcg123
  • wangcg123
  • 2017年03月24日 09:39
  • 258

iOS App 性能备忘

iOS App 性能备忘 APR 27TH, 2014 | COMMENTS 本文译自这里. 本备忘收集了很多可以提高 iOS 中 Objective-C 代码性能的代码片段和配...
  • ys410900345
  • ys410900345
  • 2016年05月20日 17:52
  • 550

数据库系统操作备忘(二)

联结(join)表相同的数据在一张表内出现多次不是一件好事,此因素是关系型数据库设计的基础。关系表的设计就是要保证把信息分解成多个表。 FROM···WHERE···可换为FROM···INNER J...
  • wy250229163
  • wy250229163
  • 2016年09月11日 13:37
  • 206

一个非常好用的桌面备忘录

因为本人的记性不大,忘性非常大,工作中经常忘记一些重要内容,看代码是前边看后边忘记,每次都要将代码重新看过,欲哭无泪 万幸后来发现一个很好用的桌面便笺工具,效能桌面便笺,界面非常简洁直观,来张图先 ...
  • u013284604
  • u013284604
  • 2013年12月27日 14:04
  • 2348

数据库系统操作备忘(三)

管理事务处理用来维护数据库的完整性,保证成批的SQL操作要么完全执行,要么完全不执行。(因为有可能数据添加了一半出故障,导致数据不完整而不知情) 所谓事务,实际就是指一组SQL语句。 可以添加占位符,...
  • wy250229163
  • wy250229163
  • 2016年09月19日 13:39
  • 171

git 快速上手备忘录

安装git 安装tortiseGit 登录https://github.com/,新建仓库,在新建的仓库代码右上角点击 “clone or download” https: 点击“USEHTT...
  • anewboyz
  • anewboyz
  • 2016年08月31日 16:36
  • 236

企业协同那些坑:TeamToy备忘录

原创文章,作者:Easy,如若转载,请注明出处:http://36kr.com/p/200533.html 作者介绍:[@Easy][1] ,新浪云资深产品架构师陈理捷,方糖气球(ftqq.com)博...
  • dj0379
  • dj0379
  • 2016年11月17日 10:32
  • 340

在C/C++中调用python的简单笔记part 1

开发平台是Visual Studio 2013 (15我还未装呢) 首先是配置 第一是安装python2.7.x版本的 然后在VS新建C++控制台程序 然后对着项目右键,点属性,打开属性框,点...
  • svowwc
  • svowwc
  • 2015年09月27日 11:28
  • 530

细谈递归,备忘录递归,动态规划,三种算法思想和运行原理

大家都知道,数值稍大的递归运行时间对于开发者来说就是场灾难,我们总是想方设法在优化递归,或者说不用递归,此文中从空间时间角度详细剖析以上三种算法的区别,以及运行原理,以斐波那契数为例, 编程语言jav...
  • qq_39046727
  • qq_39046727
  • 2018年01月03日 22:08
  • 25
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:数据库系统操作备忘(一)
举报原因:
原因补充:

(最多只允许输入30个字)