1.检索数据
https://www.nowcoder.com/questionTerminal/ec1ca44c62c14ceb990c3c40def1ec6c题解:SELECT * 表示选取所有的行,这里可以还选取一行或者多行;FROM employees 表示所选取的表格(table);后面则表示具体的查询条件。SELECT DISTINCT 表示只返回不同的(唯一)的值,达到了去重的效果。
2. 排序检索结果
题解:ORDER BY表示按照升序排列,后面可以跟一个或多个字段;ORDER BY emp_no DESC,表示按照员工号降序排列,即最大的最前面。这里由于需按照first name的后两个字母,升序排列,所有需要用到substr(x,y,z)函数来截取字母。X表示所要截取的字段,Y表示从何处开始截取(注意:字符串的索引是从1到n,z表示截取字段的长度)。
此题还有另外两种写法,省略z表示,从开始截取到末尾,Y为负数表示从末尾开始数索引,如上所示。
3. 过滤数据
题解:WHERE表示按照制定的条件进行过滤,可以使用=(等于),<>或!=(不等于),BETWEEN···AND(在制定的两个值之间)。
4. 数据过滤
可以使用AND,OR来对WHERE进行组合,如上就使用了AND。
但是SQL(像多数语言一样)在处理OR操作符前,优先处理AND操 作符。此问题的解决方法是使用圆括号明确地分组相应的操作符。
还可以使用IN来表示指定条件范围,。
NOT操作符表示,否定它之后所跟的任何条件。
5. 创建计算字段
(1)拼接字段:将值连接到一起构成一个单个值
使用RTrim函数可以将值右边的所以空格去掉
还可以使用AS对新的字段赋予别名
(2)执行算术计算:对检索出的数据进行算术计算
例如:将单价列乘以数量列,形成新的字段总价
6. 汇总数据
SQL常用的五个聚集函数如下:
聚集函数可以单个使用,也可以组合使用:
7. 分组数据
可以使用GROUP BY子句和HAVING子句将总的数据,按照一定的条件,进行分组。
如上所示,计算出产品的数量,然后按照每个供应商进行分组,即可得到每个供应商提供的产品数目。
如上只是创建了分组,我们还可以对已经分好的组进行过滤,可以使用HAVING进行过滤分组,HAVING非常类似于WHERE。事实上,目前为止所 学过的所有类型的 WHERE 子句都可以用 HAVING 来替代。 唯一的差别是 WHERE过滤行,而HAVING过滤分组。
8. 使用子查询
子查询就是嵌套在其他查询中的查询。
首先在orderitems表中找到产品编号为‘TNT2’的订单,并选取他们的订单号,然后根据查询到的订单号在orders表中找到对应的顾客id。
9. 联接表
(1)创建联接
(2)内部联接
(3 )联接多个表
10. 插入数据
插入一个新客户到Customers表中
11. 更新和删除数据
更新客户10005的电子邮件地址
在customers表中删除一行
12. 创建和操纵表
创建customers表
更新表
为表添加列
删除添加的列
删除表
重命名表
13. 管理事务处理
事务处理是一种 机制,用来管理必须成批执行的MySQL操作,以保证数据库不包含不完 整的操作结果。利用事务处理,可以保证一组操作不会中途停止,它们 或者作为整体执行,或者完全不执行(除非明确指示)。如果没有错误发 生,整组语句提交给(写到)数据库表。如果发生错误,则进行回退(撤 销)以恢复数据库到某个已知且安全的状态。
例如普通为系统添加订单的过程如下:
(1) 检查数据库中是否存在相应的客户(从customers表查询),如果 不存在,添加他/她。
(2) 检索客户的ID。
(3) 添加一行到orders表,把它与客户ID关联。
(4) 检索orders表中赋予的新订单ID。
(5) 对于订购的每个物品在 orderitems表中添加一行, 通过检索 出来的ID把它与 orders表关联(以及通过产品ID与 products表关联)。
如果按照事务处理:
(1) 检查数据库中是否存在相应的客户,如果不存在,添加他/她。
(2) 提交客户信息。
(3) 检索客户的ID。
(4) 添加一行到orders表。
(5) 如果在添加行到orders表时出现故障,回退。
(6) 检索orders表中赋予的新订单ID。
(7) 对于订购的每项物品,添加新行到orderitems表。
(8) 如果在添加新行到 orderitems 时出现故障, 回退所有添加的 orderitems行和orders行。
(9) 提交订单信息。
事务处理的关键词:
事务(transaction)指一组SQL语句;回退(rollback)指撤销指定SQL语句的过程;提交(commit)指将未存储的SQL语句结果写入数据库表;保留点( savepoint )指事务处理中设置的临时占位符(placeholder),你可以对它发布回退(与回退整个事务处理不同)。
网友评论