数据库系统操作备忘(一)
2016-08-29 13:53
381 查看
选择需要的列
按顺序排列
以上,默认升序,先按名字排列,相同的再按价格排列
若要降序,则需:
WHERE条件筛选
要注意的是,同时使用WHERE与ORDER BY时,应将WHERE置于之前。
并且AND与OR联合使用时,AND优先级要高于OR。使用时注意加括号。
IN操作符用于指定条件范围清单
通配符LIKE(只能用于文本字串)
百分号%,表示任何字符出现任意次数
下划线_ ,用途与%一样,但是只表示单个字符
方括号[],用来指定一个字符集,它必须匹配指定位置的单个字符
要注意的是,通配符搜索时间代价比较大,不要过分使用,不要把其置于搜索模式的开始处,要特别注意通配符位置放置的正确性。
计算字段 :用于对数据库中的元素进行特定的操作
拼接操作, + 或者 || 。RTRIM(vend_name) ,此方法可以去除输出串右边的空格
赋予别名,AS vend_title。
算术运算,quantity * item_ price AS expanded_price
函数
文本处理函数。LEFT() ; LENGTH() ; LOWER() ; LTRIM() ; RIGHT() ; RTRIM() ; SOUNDEX() ; UPPER()
日期和时间处理函数
数值处理函数。ABS() ; COS() ; EXP() ; PI() ; SIN() ; SQRT() ; TAN()
汇总数据(确定满足特定条件的行数、获得表中行组的和、找出表列最大最小及均值)
AVG() , 返回某列平均值
COUNT() ,返回某列行数,COUNT(*)返回列所有计数,包括NULL。COUNT(colum)则忽略NULL。
MAX(),返回某列最大值
MIN(),返回某列最小值
SUM(),返回某列之和
DISTINCT 参数可用在()里参数的前边,例如DISTINCT prod_price,这样它筛选价格只会取不同值,相同的值会被过滤只留下一个
以上函数均可组合使用,每使用一次就用AS指定一个别名。
分组语句: GROUP BY
GROUP BY语句必须出现在WHERE子句之后,ORDER BY子句之前。
HAVING,分组过滤
WHERE过滤行,HAVING用于过滤分组。
WHERE在数据分组前进行过滤,HAVING在数据分组后进行过滤。
总结SELECT子句出现的顺序:
![](https://img-blog.csdn.net/20160908191224684)
子查询
可以进行SELECT的嵌套,将里层的SELECT的结果,作为外层SELECT的筛选条件,用在WHERE···IN (SELECT ···) 中。
用子查询语句来筛选统计在两张表里的信息。例如,要统计客户信息以及每个客户的订单总数
c125
:
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(只能用于文本字串)
百分号%,表示任何字符出现任意次数
下划线_ ,用途与%一样,但是只表示单个字符
方括号[],用来指定一个字符集,它必须匹配指定位置的单个字符
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开头的联系人
要注意的是,通配符搜索时间代价比较大,不要过分使用,不要把其置于搜索模式的开始处,要特别注意通配符位置放置的正确性。
计算字段 :用于对数据库中的元素进行特定的操作
拼接操作, + 或者 || 。RTRIM(vend_name) ,此方法可以去除输出串右边的空格
赋予别名,AS vend_title。
算术运算,quantity * item_ price AS expanded_price
SELECT vend_name || '(' || vend_country || ')' FROM…… //拼接格式为:供应商名字(国家) SELECT CONACT ( vend_name || '(' || vend_country || ')' ) //MYSQL专用 AS vend_title //加在串格式之后,可以对新生成的串起一个别名,方便程序调用
函数
文本处理函数。LEFT() ; LENGTH() ; LOWER() ; LTRIM() ; RIGHT() ; RTRIM() ; SOUNDEX() ; UPPER()
日期和时间处理函数
数值处理函数。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 里 将字符转转换为日期
汇总数据(确定满足特定条件的行数、获得表中行组的和、找出表列最大最小及均值)
AVG() , 返回某列平均值
COUNT() ,返回某列行数,COUNT(*)返回列所有计数,包括NULL。COUNT(colum)则忽略NULL。
MAX(),返回某列最大值
MIN(),返回某列最小值
SUM(),返回某列之和
DISTINCT 参数可用在()里参数的前边,例如DISTINCT prod_price,这样它筛选价格只会取不同值,相同的值会被过滤只留下一个
以上函数均可组合使用,每使用一次就用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子句出现的顺序:
子查询
可以进行SELECT的嵌套,将里层的SELECT的结果,作为外层SELECT的筛选条件,用在WHERE···IN (SELECT ···) 中。
用子查询语句来筛选统计在两张表里的信息。例如,要统计客户信息以及每个客户的订单总数
c125
:
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;
相关文章推荐
- Android之获取手机上的图片和视频缩略图thumbnails
- 数据库链接字符串查询网站
- DB2实例管理
- DB2实例管理
- 保障MySQL数据安全的14个最佳方法
- mysql问答汇集
- 第三章 数据库备份和还原
- 创建一个空的IBM DB2 ECO数据库的方法
- Access 2000 数据库 80 万记录通用快速分页类
- 开通一个数据库失败的原因的和解决办法
- 一个简单的asp数据库操作类
- CentOS下DB2数据库安装过程详解
- EasyASP v1.5发布(包含数据库操作类,原clsDbCtrl.asp)第1/2页
- sql2008 还原数据库解决方案
- Oracle 数据库自动存储管理-安装配置
- Oracle数据库执行脚本常用命令小结
- Oracle 数据库 临时数据的处理方法
- 数据库分页查询语句数据库查询
- 最近比较流行的数据库挂马