【数据库】《SQL必知必会 4th》部分笔记

9.汇总数据

count(*) 包括空

count(name) 不包括空

 

10.分组数据

group by 分组

having 过滤分组

where 过滤行

11.子查询

select .. from .. where in (select ...)

由内向外处理

A.子查询过滤

作为子查询的语句只能查询单个列。

B.作为计算字段使用子查询

select

cust_name,

cust_state,

(select count(*) from orders where orders.cust_id=customer.cust_id))as orders

from customers

order by cust_name;

12.联结

A.cross join(叉连接)

没有where的话,会返回笛卡尔积。

B.inner join(内连接)首选。

连接处理耗费资源,连接的表越多,性能下降越厉害。

但是,处理连接比处理子查询快得多。

C.self join(自连接)

D.natural join(自然连接)

E.out join(外连接)

  left join

  right join

  full outer join

注意:1).一般使用内连接

   2).总是提供连接条件,否则笛卡尔积。

   3).采用不同的连接(inner left right)条件测试,排查故障方便。

14.组合查询(UNION)

15.插入数据

A.插入检索出的数据(到已有的表)

  INSERT INTO

B.从一个表复制到另一个表(新表)

  SELECT INTO  

  select * into custCopy from customers

16.更新与删除数据

A.使用update、delete一定不要忘了where!!!

B.有的update、delete需要权限。

C.一定要使用update、delete之前,要先select看看!!!

17.创建和操纵表

create table student

(

id int not null, 

name varchar(20)

);

ALTER TABLE student add age int;

ALTER TABLE student drop column age;

DROP TABLE student;

18.视图。

A.什么使用视图?

  1).重用sql

  2).简化sql操作

  3).使用表的一部分而不是整个表

  4).保护数据

  5).更改数据格式和表示。

  视图可以返回与底层表的表示和格式不同的数据。

B.视图规则与限制

C.创建视图

CREATE VIEW studentView as (select ...)

  1)简化复杂连接

  2)格式化检索出的数据

  3)过滤不想要的数据

19.存储过程。

A.简介

  一些复杂的操作需要多条语句才能完成。

  可将其视为批文件,虽然他们的作用不仅限于批处理。

B.为什么?

  1)通过把处理封装在一个易用的单元中,简化复杂的操作。

  2)由于不要求反复建立一系列处理步骤,保证了数据的一致性。防止错误。步骤越多,出错的可能性越大。

    如果所有开发人员都是用同一存储过程,则所使用的代码都是相同的。

  3)简化对变动的管理。安全性。

  4)存储过程通常以编译过的形式存储,提高性能。

  5)编写更灵活的代码

C.好处

  简单、安全、高性能

D.缺陷

  1)不易移植

  2)编写存储过程比编写基本sql复杂,需要更高的技能,更丰富的经验。

 

E.执行存储过程

  EXECUTE

F.创建存储过程

  create procedure mailingListCount(ListCount out Integer)

  is v_rows Integer;

  begin 

    select count(*) into v_rows

    from customers

    where not cust_email is null;

    ListCount :=vrows;

  end;

var ReturnValue Number

exec mailingListCount(:ReturnValue);

select ReturnValue; 

20.管理事务处理

事务处理是一种机制,用来管理必须成批执行的sql操作,保证数据库不包含不完整的操作结果。

A.事务处理

事务(transaction)

回退(rollback)

提交(commit)

保留点(savepoint)

B.控制事务处理

 

21.使用游标

22.高级sql特性

(22.1)约束

  A.主键约束

  B.外键约束

    1)外键是表中的一列,其值必须列在灵异表的主键中。

    2)外键是保证引用完整性的及其重要部分。

    3)定义

      alter table orders 

      add constraint foreign key(cust_id)

      references customers(cust_id)

    4)外键有助防止意外删除

    5)级联删除

  C.唯一约束

  D.检查约束

(22.2)索引

索引用来排序数据以加快搜索和排序操作的速度。想象一本书后的索引。

可以在一个或多个列上定义索引,使DBMS保存其内容的一个“排过序”的列表。

A.索引改善查询select操作性能,降低insert、update、delete操作性能,在执行这些操作时,DBMS必须动态更新索引。

B.索引可能占用大量存储空间。

C.并非所有数据都适合做索引。取值不多的数据不需要索引。

D.索引用于数据过滤和数据排序。经常排序数据适合索引。

E.索引可以定义多个列。

F.用法:

create index product_name_index

on products(product_name);

G.索引必须唯一命名

H.索引效率岁数据增加而变化,过去创建的某个理想的索引经过几个月的数据处理后可能变得不再理想。

  最好定期检查索引,并根据需要调整更新索引。

(22.3)触发器

触发器是特殊的存储过程,他在特定的数据库活动发生时自动执行。触发器可以与特定表上的insert、update、delete操作相关联。

A.触发器可以在特定操作执行之前或之后执行。

B.用途:

  1)保证数据一致

  2)基于某个表的变动在其他表上执行活动。

    比如,更新或删除一行时将跟踪记录写入某个日记表。

  3)进行额外的验证并根据需要回退数据。

  4)计算计算列的值或更新时间戳。

C.写法

  create trigger customer_state

  on customers for insert,update

  as update customers set....

(22.4)数据库安全

 

 

 

 

 

 

 

转载于:https://www.cnblogs.com/CESC4/p/8481894.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/250923.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

微软认知服务应用秘籍 – 漫画翻译篇

概述 微软认知服务包括了影像、语音、语言、搜索、知识五大领域,通过对这些认知服务的独立或者组合使用,可以解决很多现实世界中的问题。作为AI小白,我们可以选择艰难地攀登崇山峻岭,也可以选择像牛顿一样站在巨人的肩膀上。本章节…

01 React初步认知、React元素、渲染、工程化

定义 react:用于构建用户界面的 JavaScript 库 (仅负责View层渲染、应在视图上体现交互逻辑)vue:渐进式JavaScript 框架(MVVM) 使用 引入CDN脚本添加根容器 div #app创建React组件 ReactDOM.render Re…

node --- 在express中配置使用模板引擎(art-template)

下载依赖: npm install --save art-template express-art-template配置: // app.js const express require("express"); const app express(); app.engine("html", require("express-art-template"));使用: 例如处理浏览器GET请求 /students…

PAM认证机制

一、PAM简介 Sun公司1995年开发的一种与认证相关的通用框架机制,PAM只关注如何为服务验证用户的API,通过提供一些动态链接库和一套统一的API,将系统提供的服务和该服务的认证方式分开;PAM只是一个框架而已,自身不做认证…

02 JSX学习

使用vite处理jsx vite引入的脚本必须是ESM的 npm init -y yarn add vite package.json 添加vite命令 index.html引入jsxJSX是什么 一种标签语法,在JS基础上进行的语法扩展不是字符串、也不是HTML是描述UI呈现与交互的直观的表现形式JSX被编译后会生成React元素 &am…

使用FreeCookies 控制浏览器cookies及修改http响应内容

FreeCookies 插件安装 1:您的计算机需要已经安装Fiddler (如未安装,请至官网下载安装 http://docs.telerik.com/fiddler/configure-fiddler/tasks/configurefiddler) 2:进入Fiddler安装目录下的Scripts目录下&#xff…

node --- 使用node连接mysql

1.确保下载了mysql,且mysql处于打开状态. 2.确保下载了node,并成功安装:https://nodejs.org/en/ (小黑窗 node -v 查看) 3.安装node操作mysql的依赖包: # 命令行 npm install --save -mysql# 注:如果没有package.json 建议先使用 npm init -y 初始化正题 // app.js// 1. 引…

03 渲染元素ReactDOM.render

React与ReactDOM是2个不同的库,根节点内的所有内容(和DOM更新、渲染相关)由ReactDOM来管理一个React应用只有一个根节点用ReactDOM.render将React元素渲染到根节点 ReactDOM.render 参数1 React元素(React.createElement(类组件/…

javascript --- 异步按顺序执行

使用promise可以很优雅的封装一个异步函数,使其按指定顺序执行: // 异步读取文件操作 const fs require("fs"); function promiseReadFile(url) {return new Promise(function (resolve, reject) {fs.readFile(url, function(err, data) {if(err) {reject(err);} e…

web提高:负载均衡

1、集群 1、为什么建议在阿里云购买负载均衡 非常便宜,又好用,有稳定,有简单。自己搭建不了负载均衡,因为共有云不支持组播跑不了vrp协议。你不会集群的概念,你还是蒙蒙的。2、为什么使用集群? 1、小规模 …

node --- 一个很好用的包json-server

这个第三方包,可以将json文件暴露出来,用http获取. (data.json如下) 下载依赖: npm install --g json-server查看是否含有json-server json -sever --version启动json-server 参考:https://www.npmjs.com/package/json-server

04 组件与Props

一些概念 组件:视图的片段、内部管理数据集合(state)外部传入配置结合(props)包含: 1. 视图标记(React的JSX、Vue的template)需要经过转换而成为真实的DOM 事件 数据 逻辑&#x…

利用ionic3进行上一行和左一行不动,中间移动的功能

首先在html中的写法是 <ion-header><ion-navbar><ion-title>历史数据</ion-title></ion-navbar></ion-header><ion-content ><div style"display:flex;width:625px;"><div class"head">地区</di…

05 state与setState、单向数据流

声明周期与组件卸载 props配置&#xff1a;使用组件时传入数据state私有数据&#xff1a;组件内部使用的数据 state的使用注意事项 必须使用setState方法来更改state多个setState会合并调用props和state更新数据要谨慎&#xff08;有可能在异步程序中更新&#xff09;setState…

HDU 3342 Legal or Not(拓扑排序)

描述 ACM-DIY is a large QQ group where many excellent acmers get together. It is so harmonious that just like a big family. Every day,many "holy cows" like HH, hh, AC, ZT, lcc, BF, Qinz and so on chat on-line to exchange their ideas. When someone…

jquery --- 阻止表单默认的提交行为,标准化表单的数据

表单如下: // .html <form id"topics_new_form" method"post" action"/topics/new"><div class"form-group"><label for"exampleInputEmail1">选择模块</label><selecet class"form-contr…

javascript --- spa初体验

首先使用express创建一个简单的服务器 创建文件夹 be-project # (确保安装了node,并配置好了环境) 在be-project目录下(命令行执行) npm init -y npm install --save express body-parse npm install --global nodemon// app.js const express require("express");…

vuex复习笔记

npm install vuex --save 进行安装 vuex import Vuex from vuex 新建一个vuex文件夹&#xff08;这个不是必须的&#xff09;&#xff0c;并在文件夹下新建store.js文件&#xff0c;文件中引入我们的vue和vuex。 转载于:https://www.cnblogs.com/jinsuo/p/8508699.html

python学习HTML之CSS(2)

1、边框的属性设置 PS&#xff1a;边框的高度和宽度可以采用百分比&#xff0c;但是高度方向的百分比基本无用&#xff0c;因为基数没定&#xff0c;参考没意义&#xff01;&#xff01; 2、内边距和外边距 3、在右下角添加一个“回顶部”的标签。 <div></div>中的…

06 事件处理函数绑定与事件对象

事件处理函数绑定 DOM事件处理 addEventListener or onclick function(){} 纯小写React元素也采用了类似DOM0标准中的事件属性定义的方法 小驼峰 JSX <button onClick{ this.doSth }></button>直接创建React元素 React.createElement(button,{onClick: { this.…