begin

数据库的一些概念

淺唱寂寞╮ 提交于 2019-11-28 07:57:13
视图   什么是视图   视图是一张虚拟表,比如内连接产生的虚拟表   保存下来,下次可以直接使用,而不是下次再重复写一下内连接​​​    为什么要用视图   如果要频繁使用一张虚拟表,使用视图就不用重复查询    如何使用视图   关键字view 和as   ​create view teacher2course as   select * from teacher inner join course on teacher_id = teacher.tid​    强调   1. 在硬盘中,视图只有表结构文件,没有表数据文件   2. 视图通常适用于查询,尽量不要修改视图中的数据   3. 一般情况下不会频繁使用视图:   开发过程中如果项目中大量使用到了视图,   ​那意味着后期想扩张某个功能的时候,恰巧有需要对视图进行修改​​​;   也就意味着需要先在驶入修改,再去SQL语句修改;​   也就意味着涉及跨部门沟通。   所以通常不会使用视图,而是通过重新修改SQL语句来扩展功能​​ 触发器   什么是触发器   达到某种条件,自动触发的功能   例如对某张表的增删改时,自动触发SQL代码执行​    触发器语法     固定语法结构 create trigger 触发器的名字 ​ after/before insert/update/delete ​on 表名 for

Oracle - Trigger

我怕爱的太早我们不能终老 提交于 2019-11-28 07:28:55
A: 数据插入之前更新 CREATE OR REPLACE TRIGGER TablesNameID before insert ON TablesName for each row begin --业务逻辑 end TablesNameID; B:数据插入之后更新 CREATE OR REPLACE TRIGGER TablesNameID after insert ON TablesName for each row begin --业务逻辑 end TablesNameID; C:数据更新之后更新   CREATE OR REPLACE TRIGGER TableNamesAfterUpdate after UPDATE ON TableNames FOR EACH ROW begin --业务逻辑 end; D:数据更新之前更新 CREATE OR REPLACE TRIGGER TableNamesBeforeUpdate before UPDATE ON TableNames FOR EACH ROW begin --业务逻辑 end; C:混合情况下的自动触发 CREATE OR REPLACE TRIGGER TabelNameTrigger before INSERT OR UPDATE ON TableName FOR EACH ROW DECLARE --参数

反转字符串

独自空忆成欢 提交于 2019-11-28 07:25:51
【问题】牛客最近来了一个新员工Fish,每天早晨总是会拿着一本英文杂志,写些句子在本子上。同事Cat对Fish写的内容颇感兴趣,有一天他向Fish借来翻看,但却读不懂它的意思。例如,“student. a am I”。后来才意识到,这家伙原来把句子单词的顺序翻转了,正确的句子应该是“I am a student.”。Cat对一一的翻转这些单词顺序可不在行,你能帮助他么? 【思路】使用STL中的find函数来查找每个空格的位置,由于find函数只能查找一个位置,因此我们 使用循环,每当查找结束后,将查找的出发点begin赋值为end+1 , 接着就可以查找到下一个空格的位置了,这样就可以得到STL版的split函数,虽然比较麻烦,但是C++标准库是没有split函数的,必须这么写!接着 就是 reverse函数进行反转,可以直接使用库函数!当然自己也可以使用swap函数利用首尾指针实现! class Solution { public: string ReverseSentence(string str) { reverse(str.begin(), str.end()); // 整体反转 int begin = 0, end; while((end=str.find(' ', begin)) != string::npos){ reverse(str.begin()+begin,

小案例之随机点名系统

本秂侑毒 提交于 2019-11-28 06:16:14
   随机点名系统    近日,本人学习了对象和计时器,就想写一个小案例随机点名系统,这个小案例其实很简单只需要生成随机下标,从数组中取值并运用innerHTML方法将获取到的信息显示到网页上(这里有人会提出疑问,字符串也可以遍历为什么不用字符串呢?原因很简单字符串无法分隔每个名字。)话不多说直接上代码。 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> <script src="public.js" type="text/javascript" charset="utf-8"></script> <style> #name{ font-size: 60px; text-align: center; margin: 100px auto; } #start{ width: 180px; height: 60px; border: none; background: dodgerblue; display: block; margin: 0 auto; color: #fff; font-size: 30px; border-radius: 6px; text-align: center; line-height: 60px; cursor: pointer; } #start:active{

和为S的两个数

China☆狼群 提交于 2019-11-28 05:40:30
【问题】输入一个递增排序的数组和一个数字S,在数组中查找两个数,使得他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的。 输出描述: 对应每个测试案例,输出两个数,小的先输出。 【思路】这里我们还是使用双指针的思想,一个指向开头,另一个指向末尾,那为什么和连续正数序列不同呢?这是由于题目要输出两个数乘积最小的那组,有一个定理是: 当两个数的总和相同时,两个数相差越多,那么它的乘积就越小!反之相差越小,乘积越大,因此从两头遍历得到的第一组数一定是乘积最小的! class Solution { public: vector<int> FindNumbersWithSum(vector<int> array,int sum) { int begin = 0, end = array.size()-1; vector<int> res; while(begin < end){ if(array[begin] + array[end] == sum){ res.push_back(array[begin]); res.push_back(array[end]); break; } while(begin < end && array[begin] + array[end] > sum) --end; while(begin < end && array[begin] +

全排列问题(字符串)

拥有回忆 提交于 2019-11-28 05:36:54
输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba 链接: https://www.nowcoder.com/questionTerminal/fe6b651b66ae47d7acce78ffdd9a96c7?toCommentId=2846264 来源:牛客网 思路: 递归法,问题转换为先固定第一个字符,求剩余字符的排列;求剩余字符排列时跟原问题一样。 (1) 遍历出所有可能出现在第一个位置的字符 (即:依次将第一个字符同后面所有字符交换); (2) 固定第一个字符,求后面字符的排列 (即:在第1步的遍历过程中,插入递归进行实现)。 需要注意的几点: (1) 先确定 递归结束的条件 ,例如本题中可设begin == str.size() - 1; (2) 形如 aba 或 aa 等特殊测试用例的情况,vector在进行push_back时是不考虑重复情况的,需要自行控制; (3) 输出的排列可能 不是按字典顺序排列 的,可能导致无法完全通过测试用例,考虑输出前排序,或者递归之后取消复位操作。 class Solution { public: vector<string> Permutation(string str) { vector<string>

test2

跟風遠走 提交于 2019-11-28 02:07:38
create or replace trigger t1 after insert on person declare begin dbms_output.put_line('新员工入职'); end; insert into person values(2,'小红',2); commit; select * from person; set serveroutput on delete from person where pid=1; commit; insert into person values(1,'小明',1); commit; ---- 行级触发器: create or replace trigger t2 before update on emp for each row declare begin if :old.sal>:new.sal then raise_application_error(-20001,'不能给员工降薪'); end if; update emp set sal=sal-1 column where empno=1001; commit; select * from emp; select * from emp; conn sys/oracle as SYSDBA; declare i number(2) := 10; s varchar2

算法实战(三)无重复字符的最长子串

谁说胖子不能爱 提交于 2019-11-28 01:52:28
一.前言   今天开始第三题,这个题目有点绕,我一开始都看错了两次题目,最后面才弄清楚到底是要算什么。我自己先是想了一下思路,用的方法虽然和网上大部分用的不太一样,但是核心思想是一样的(我想到的也是优化的滑动窗口,但是我使用的时StringBulider来存储,没有去使用map,list等,所以耗时更长),下面我们就一起来看看题目。 二.题目   题目:给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。   示例1:输入: "abcabcbb"       输出: 3       解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。   示例2:输入: "bbbbb"       输出: 1       解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。   示例3:输入: "pwwkew"       输出: 3       解释: 因为无重复字符的最长子串是 "wke",所以其长度 为 3。    请注意,你的答案必须是 子串 的长度,"pwke" 是一个子序列,不是子串。 三.解题思路   首先要明白这个题的意思,就是要我们求字符串的不重复的连续子串,首先必须是连续的,不能断开,其次子串中不能有一个字母是重复的。弄清楚了题目的意思后,让我们来看看解法。   1)暴力法:暴力法总是最容易让人明白的方法,首先我们拿到字符串的所有子串

统计数字在排序数组中出现的次数

a 夏天 提交于 2019-11-28 01:28:44
【问题】统计一个数字在排序数组中出现的次数。 【思路】首先要清楚这种看似简单的题目,使用直接遍历是可以,但一般不得分,由于题目给出了排序数组,对于排序数组来说,常用的搜索查找方式为二分查找(binary search)。这里有个巧妙的方法,我们并不是去搜索k这个数,而是去搜索k-0.5和k+0.5这两个小数,进而返回待插入的位置! 比如:1 2 2 2 3 4 且k = 2 则,k+0.5会返回3的索引即4,而k-0.5会返回第一个2的索引即1,两者相减得3,即为最后的结果!二分代码如下,只返回begin位置! class Solution { public: int GetNumberOfK(vector<int> data ,int k) { return biSearch(data, k+0.5) - biSearch(data, k-0.5); } private: int biSearch(vector<int>& data, double num){ int begin = 0, end = data.size() - 1; while(begin <= end){ int mid = begin + (end - begin) / 2; if(data[mid] < num) begin = mid + 1; else if(data[mid] > num) end

[USACO09DEC]音符Music Notes (二分、STL)

南笙酒味 提交于 2019-11-27 21:15:17
https://www.luogu.org/problem/P2969 题目描述 FJ is going to teach his cows how to play a song. The song consists of N (1 <= N <= 50,000) notes, and the i-th note lasts for Bi (1 <= Bi <= 10,000) beats (thus no song is longer than 500,000,000 beats). The cows will begin playing the song at time 0; thus, they will play note 1 from time 0 through just before time B1, note 2 from time B1 through just before time B1 + B2, etc. However, recently the cows have lost interest in the song, as they feel that it is too long and boring. Thus, to make sure his cows are paying attention, he asks them Q (1 <= Q <