select函数

视图、事务、索引,触发器,流程控制。

这一生的挚爱 提交于 2019-12-02 11:31:59
视图、事务、索引,触发器,流程控制。 视图:view 视图与真实表共享数据,视图和真实表的数据会相互映射, 视图的表结构只要存在真实表的数据只要存在,视图就可以使用。 数据依赖:单表emp 1)视图是存在内存中的临时表 2)视图的创建依赖select语句,所有就是select语句操作的结果形参的表 3)视图支持对数据的增删查改 ? 4)视图不允许对视图表的字段做修改 5)视图不仅支持创建,也支持更新与删除 语法:创建视图 mysql>: create view 视图名[(别名们)] as select 语句; eg>: create view v1 as select dep, max(salary) from emp group by dep; # 创建或替换视图 mysql>: create or replace 视图名[(别名们)] as select 语句; mysql>: alter 视图名[(别名们)] as select 语句; eg>: create or replace view v1(dep_name, max_salary) as select dep, max(salary) from emp group by dep; eg>: alter view v1(name, salary) as select dep, max(salary) from emp

IO复用一select, poll, epoll用法说明

…衆ロ難τιáo~ 提交于 2019-12-02 11:02:21
三种IO复用类型 Select系统调用 #include<sys/select.h> int select(int nfds, fd_set* readfds, fd_set* writefds, fd_set* execptfds,struct timeval* timeout); #nfds表示监听的文件描述符总数; #readfds,writefds,execptfds分别表示对应的fd_set类型的集合 可以如下定义:fd_set readfds,writefds,execptfds #timeout表示select函数的超时时间 Struct timeval { Long tv_sec; Long tv_usec; } 如果timeval成员变量均为0,则select立即返回;如果timeout设置为NULL,则select将一直阻塞,直到某个文件描述符就绪。 # FD_ZERO(fd_set *fdset);清楚fdset的所有位,如FD_ZERO(&readfds); #FD_SET(int fd,fd_set* fdset);设置fdset的位,也就是将某个文件描述符加入到fdset中,如FD_SET(0,&readfds),将标准输入加入到fdset中 #int FD_ISSET(int fd,fd_set * fdset);测试fdset的某个位是否被设置

MySQL-------存储过程与存储函数(3)

限于喜欢 提交于 2019-12-02 08:43:44
10.2.1 调用存储过程 存储过程必须使用CALL语句来调用。如果要调用其它数据库的存储过程,需要指定数据库名称。例如 CALL dbname.spname DROP TABLE IF EXISTS t_student; CREATE TABLE t_student ( id INT(11) PRIMARY KEY AUTO_INCREMENT, name VARCHAR(255) NOT NULL, age INT(11), address VARCHAR(255), sex CHAR(2) ); INSERT INTO t_student VALUES(NULL,'大宇',22,'苏州','男'); INSERT INTO t_student VALUES(NULL,'小宇',20,'盐城','男'); INSERT INTO t_student VALUES(NULL,'小雨',20,'盐城','女'); DELIMITER // --存储过程分隔符设定为// CREATE PROCEDURE CountStu(IN stu_sex CHAR,OUT num INT) --stu_sex表示输入,num表示输出 BEGIN SELECT COUNT(*) INTO num FROM t_student WHERE sex = stu_sex; --结果存入num

oracle 随机数及相应函数

三世轮回 提交于 2019-12-02 07:08:04
先贴一段sql: SELECT * FROM check_for_busi_result SAMPLE BLOCK (10) SEED (11) WHERE ROWNUM <= 5; /* 1.sample只对单表生效,不能用于表连接、远程表、视图 2.sample会使SQL自动使用CBO */ /* sample 按记录采样 seed(3) 返回固定的结果集 */ select count(*) from check_for_busi_result sample(18); SELECT * FROM check_for_busi_result SAMPLE (18) WHERE ROWNUM <= 5; /* SAMPLE BLOCK (18) 按数据块采样 “采样表扫描”随机抽取10%的记录,再从中随机查询5条记录 */ select count(*) from check_for_busi_result sample block(18) ; SELECT * FROM check_for_busi_result SAMPLE BLOCK (18) WHERE ROWNUM <= 5; /* 获取一个随机数 --(0-10的整数) */ SELECT TRUNC (DBMS_RANDOM.VALUE (0, 10)) randomNum FROM DUAL; 取表随机数据

oracle中通过正则表达式函数处理逗号分隔的字段

可紊 提交于 2019-12-02 07:06:18
这个题目的确不大好写,其实际含义基于一个场景: 比如在oracle的某张表中,有两个字段 A1 B1 1 A,B,C,D, 2 E,F 假如现在的需求,是要统计A1中,每条记录拥有多少个数目的B1,比如 A1=1的时候,其B1的字段中有4个以逗号分隔的,所以数目为4,A1=2的,有 E,F共2个,所有数目为2 而在ORACLE中,如果使用ORACLE本身的函数,其实也是可以做到这个 效果的,核心是把这些逗号分隔的字符,逐一拆出来,变成一行行,上面的例子来说, 就要想办法变成 A1 B1 1 A 1 B 1 C 1 D 2 E 2 F 读者可能马上想到,这个其实是一对多关联关系的数据库存储方法,也是最常用的, 但有的时候,用A,B,C,D这样的方式也是可以保存一对多关系的,两种之间可以进行转换, 在oracle中有两种方法实现。 1) oracle中的正则表达式的函数REGEXP_SUBSTR oracle中的REGEXP_SUBSTR的用法,先介绍下: 5个参数 第一个是输入的字符串 第二个是正则表达式 第三个是标识从第几个字符开始正则表达式匹配。(默认为1) 第四个是标识第几个匹配组。(默认为1) 第五个是是取值范围: i:大小写不敏感; c:大小写敏感; n:点号 . 不匹配换行符号; m:多行模式; x:扩展模式,忽略正则表达式中的空白字符。 全部测试数据 SQL>

Go标准库Context

半腔热情 提交于 2019-12-02 06:51:57
Go标准库Context 在 Go http包的Server中,每一个请求在都有一个对应的 goroutine 去处理。请求处理函数通常会启动额外的 goroutine 用来访问后端服务,比如数据库和RPC服务。用来处理一个请求的 goroutine 通常需要访问一些与请求特定的数据,比如终端用户的身份认证信息、验证相关的token、请求的截止时间。 当一个请求被取消或超时时,所有用来处理该请求的 goroutine 都应该迅速退出,然后系统才能释放这些 goroutine 占用的资源。 为什么需要Context 基本示例 package main import ( "fmt" "sync" "time" ) var wg sync.WaitGroup // 初始的例子 func worker() { for { fmt.Println("worker") time.Sleep(time.Second) } // 如何接收外部命令实现退出 wg.Done() } func main() { wg.Add(1) go worker() // 如何优雅的实现结束子goroutine wg.Wait() fmt.Println("over") } 全局变量方式 package main import ( "fmt" "sync" "time" ) var wg sync

SQL注入汇总(手注,盲注,报错注入,宽字节,二次编码,http头部){10.22、23 第二十四 二十五天}

Deadly 提交于 2019-12-02 06:46:11
首先什么是SQL注入:   所谓SQL注入,就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。 SQL注入有什么危害?   危害:数据泄露、脱库、篡改网站、破坏数据库、植入后门、getshell(获取网站权限) 为什么会有SQL注入漏洞?   后端代码在执行的过程将用户输入的数据也当做代码来执行,违背一个原则:代码和数据相分离(本质问题)   前段传递的数据可以随意控制,参数可控;后端对前段传递过来的数据没有过滤或者过滤不严谨,最终导致SQL注入(注入的原因) 首先本人现在只学了四五种SQL注入方式,仅作为学习参看,如有错误多多见谅=。= SQL注入本人认为只要能找到注入点就简单了,大不了各种方式往上面试喽,虽然时间成本很大。 所以所只要在有跟数据库进行交互的地方就有可能出现SQL漏洞,在这些地方找注入点就很重要啦。 SQL注入常用的数据库函数及常量 常用的数据库函数以及常量 @@tmpdir 临时目录 @@datadir @@basedir 数据库所在的位置 @@version 版本 @@hostname 当前数据库名字 user() version() 版本 database() 获取数据库 concat() group_concat() concat_wa() substr():oracle,mysql,mssq

mysql中关于时间的总结

主宰稳场 提交于 2019-12-02 05:24:41
1.DATE_SUB(date,INTERVAL expr type)函数 实例:select * from xxx where create_time > DATE_SUB(NOW(),INTERVAL 1 HOUR);   以字段create_time为基准,查询表中 一个小时内的数据未完待续。。。 来源: https://www.cnblogs.com/ncwoniu/p/11731702.html

Linux SPI驱动学习——注册匹配

扶醉桌前 提交于 2019-12-02 02:47:14
目录 博客说明 开发环境 1. Linux SPI概述 1.1 SPI驱动框架 2. SPI 注册匹配 2.1 spi_drive注册 2.2 spi_device注册 只有下面这个程序是本节要单独编写的代码 2.3 SPI的device和driver匹配 附录: @(Linux SPI驱动学习——device、driver注册匹配) 博客说明 撰写日期 2019.10.22 完稿日期 2019.10.23 最近维护 暂无 本文作者 multimicro 联系方式 multimicro@qq.com 资料链接 本文无附件资料 GitHub https://github.com/wifialan/drivers/ 原文链接 https://blog.csdn.net/multimicro/article/details/102685871 开发环境 环境说明 详细信息 备注信息 操作系统 Ubunut 18.04 开发板 JZ2440-V3 Linux内核 linux-3.4.2 1. Linux SPI概述 鄙人通过查看 宋宝华《Linux设备驱动开发详解–基于最新的Linux 4.0内核》 第12章:Linux设备驱动的软件架构思想,初步了解了 总线 、 设备 和 驱动 这三个名词: 总线: 比如4线SPI的总线是四条线,这四条线就构成了SPI总线,但不知道这样解释合不合适,=

从实践角度重新理解BIO和NIO

扶醉桌前 提交于 2019-12-01 22:28:14
前言 这段时间自己在看一些Java中BIO和NIO之类的东西,看了很多博客,发现各种关于NIO的概念说的天花乱坠头头是道,可以说是非常的完整,但是整个看下来之后,自己对NIO还是一知半解的状态,所以这篇文章不会提到很多的概念,而是站在一个实践的角度,写一些我自己关于NIO的见解,站在实践过后的高度下再回去看概念,应该对概念会有一个更好的理解。 实现一个简易单线程服务器 要讲明白BIO和NIO,首先我们应该自己实现一个简易的服务器,不用太复杂,单线程即可。 为什么使用单线程作为演示 因为在单线程环境下可以很好地对比出BIO和NIO的一个区别,当然我也会演示在实际环境中BIO的所谓一个请求对应一个线程的状况。 服务端 public class Server { public static void main(String[] args) { byte[] buffer = new byte[1024]; try { ServerSocket serverSocket = new ServerSocket(8080); System.out.println("服务器已启动并监听8080端口"); while (true) { System.out.println(); System.out.println("服务器正在等待连接..."); Socket socket =