User-Defined Variables

 1 mysql> SET @w := SELECT COUNT(*) FROM course WHERE cteacher=‘程军‘;
 2 ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version
 3  the right syntax to use near ‘SELECT COUNT(*) FROM course WHERE cteacher=‘程军‘‘ at line 1
 4 mysql> SELECT @w;
 5 +------+
 6 | @w   |
 7 +------+
 8 | NULL |
 9 +------+
10 1 row in set (0.00 sec)
11
12 mysql> SET @w := (SELECT COUNT(*) FROM course WHERE cteacher=‘程军‘);
13 Query OK, 0 rows affected (0.00 sec)
14
15 mysql> SELECT @w;
16 +------+
17 | @w   |
18 +------+
19 |    2 |
20 +------+
21 1 row in set (0.00 sec)
22
23 mysql>
 1 SHOW TABLES;
 2 DROP TABLE IF EXISTS student;
 3 SHOW TABLES;
 4 CREATE TABLE IF NOT EXISTS student
 5 (
 6     sno int primary key,
 7     sname VARCHAR(20) CHARACTER SET gbk,
 8     sage TINYINT,
 9     shair ENUM(‘黑‘,‘白‘) CHARACTER SET gbk
10 );
11 INSERT INTO student VALUES(‘1‘,‘李强‘,23,‘黑‘);
12 INSERT INTO student VALUES(‘2‘,‘刘丽‘,22,‘白‘);
13 INSERT INTO student VALUES(‘5‘,‘张友‘,22,‘黑‘);
14 SELECT * FROM student;
15
16 SHOW TABLES;
17 DROP TABLE IF EXISTS course;
18 SHOW TABLES;
19 CREATE TABLE IF NOT EXISTS course
20 (
21     cno VARCHAR(10) primary key,
22     cname VARCHAR(20) CHARACTER SET gbk,
23     cteacher  VARCHAR(20) CHARACTER SET gbk
24 );
25 INSERT INTO course VALUES(‘k1‘,‘c语言‘,‘王华‘);
26 INSERT INTO course VALUES(‘k5‘,‘数据库原理‘,‘程军‘);
27 INSERT INTO course VALUES(‘k8‘,‘编译原理‘,‘程军‘);
28 SELECT * FROM course;
29
30 SHOW TABLES;
31 DROP TABLE IF EXISTS sc;
32 SHOW TABLES;
33 CREATE TABLE IF NOT EXISTS sc
34 (
35     fk_sno INT NOT NULL,
36     fk_cno VARCHAR(10) NOT NULL,
37     score INT NOT NULL,
38     PRIMARY KEY(fk_sno,fk_cno),
39     FOREIGN KEY(fk_sno) REFERENCES student(sno),
40     FOREIGN KEY(fk_cno) REFERENCES course(cno)
41 );
42 INSERT INTO sc VALUES(‘1‘,‘K1‘,83);
43 INSERT INTO sc VALUES(‘2‘,‘K1‘,85);
44 INSERT INTO sc VALUES(‘5‘,‘K1‘,92);
45 INSERT INTO sc VALUES(‘2‘,‘K5‘,90);
46 INSERT INTO sc VALUES(‘5‘,‘K5‘,84);
47 INSERT INTO sc VALUES(‘5‘,‘K8‘,80);
48 SELECT * FROM sc;

1-检索至少选修"程军"老师所授全部课程的学生姓名(SNAME)
检索选修了“程军”老师所授全部课程的学生姓名

0-检索选修了“程军”老师所授课程的学生

1 SELECT * FROM sc RIGHT JOIN course ON  sc.fk_cno=course.cno;
2 SELECT * FROM (SELECT * FROM sc RIGHT JOIN course ON  sc.fk_cno=course.cno) w RIGHT JOIN student ON w.fk_sno=student.sno;
3 SELECT * FROM (SELECT * FROM sc RIGHT JOIN course ON  sc.fk_cno=course.cno) w RIGHT JOIN student ON w.fk_sno=student.sno WHERE cteacher=‘程军‘;

集合子集,逐步精确,缩小范围 1-是学生-2-选程老师的课-3-选了程老师所有的课

/*

假定

“ 某学生选程老师的课程门数等于程老师所开门数”等价于“该学生至少选了程老师的所有的课程”。

*/

 1             SELECT sname FROM student
 2             WHERE
 3             (
 4                 SELECT COUNT(*) FROM
 5                 (
 6                     SELECT  * FROM (SELECT * FROM sc RIGHT JOIN course ON  sc.fk_cno=course.cno) w RIGHT JOIN student ON w.fk_sno=student.sno
 7                     WHERE cteacher = ‘程军‘
 8                 ) wb
 9                 WHERE wb.sname = student.sname
10             )
11             =
12             (SELECT COUNT(*) FROM course WHERE cteacher=‘程军‘);

/* 0-澄清问题:找出至少选了程老师全部课程的学生:学生-没有选程老师的课+学生选了程老师的部分的课+学生选了程老师全部的课

等价转化:找出选了程老师部分的课或者没有选程老师的课的学生

数据关系:学生和老师没有数据关系,是两个完全独立的数据对象,分数是桥梁

等价转化:

  选了部分程老师的课 ,NOT EXISTS (SELECT * FROM sc WHERE sc.sno = student AND sc.cno=course.cno)->FALSE (内层SELECT不空,TRUE,退出)

  没有选程老师的课 teacher=‘程军‘->FALSE ,后边的不用看了(中层SELECT空,FALSE,退出)

  外中内-三层SELECT,外层返回的是最终的结果

  最外层选得的最终量result,学生姓名,它的措施是将各个学生名称带入,逐个检测

1-程序表达: */

 1 SELECT sname FROM student
 2 WHERE NOT EXISTS
 3 (
 4    SELECT * FROM course
 5    WHERE cteacher=‘程军‘ AND NOT EXISTS
 6    (
 7        SELECT * FROM sc
 8        WHERE sc.fk_sno = student.sno AND sc.fk_cno = course.cno
 9     )
10 ) ;

http://blog.csdn.net/wolfofsiberian/article/details/39346781

发问:

0-语言只是工具而已,不是解决问题方法的源泉,怎么减少对接语法API的时间?

时间: 08-11

User-Defined Variables的相关文章

JMeter学习参数化User Defined Variables与User Parameters

偶然发现JMeter中有两个元件(User Defined Variables与User Parameters)很相近,刚开始时我也没注意,两者有什么不同.使用时却发现两者使用场景有些不同,现在小结一下. 相同点:二者都是进行参数化的. 一.User Defined Variables 1.添加方法:选择“线程组”,右键点击添加-Config Element-User Defined Variables,在这个控件中,定义你所需要的参数,如 2.使用方法:在对应的需要使用参数的位置,使用${ho

【jmeter】参数化User Defined Variables与User Parameters

偶然发现JMeter中有两个元件(User Defined Variables与User Parameters)很相近,刚开始时我也没注意,两者有什么不同.使用时却发现两者使用场景有些不同,现在小结一下. 相同点:二者都是进行参数化的. 一.User Defined Variables 1.添加方法:选择“线程组”,右键点击添加-Config Element-User Defined Variables,在这个控件中,定义你所需要的参数,如 2.使用方法:在对应的需要使用参数的位置,使用${ho

Jmeter配置元件User Defined Variables与前置处理器User Parameters的区别

区别在于: 前置处理器在请求之前会执行,而配置元件只是取值 如下例: 1.配置元件 2.前置处理器 两个变量的值一样,都是由函数助手取值组成,在java请求运行前后结果如下: 运行前: 运行后: 说明:前置处理器变量的值会执行得到结果,而配置元件不会执行 所以,在编写脚本时,如果是固定的值,可以用配置元件,如果是函数助手或需要执行的值,用前置处理器. 踩过的坑,记录一下,相互学习! 原文地址:https://www.cnblogs.com/pinktest/p/12268151.html

PowerShell Remove all user defined variable in PowerShell

When PS scripts executes, it is possibly create much user defined variables. So, sometimes these varibales may confuse us a lot. Here's a workaound: Most of the standard variables can be found in System.Management.Automation.SpecialVariables. If you

Jmeter性能测试 入门

Jmeter是一款优秀的开源测试工具, 是每个资深测试工程师,必须掌握的测试工具,熟练使用Jmeter能大大提高工作效率. 熟练使用Jmeter后, 能用Jmeter搞定的事情,你就不会使用LoadRunner了. [小坦克Jmeter教程],将会覆盖Jmeter的各个功能,并且会通过丰富的实例,让读者快速掌握Jmeter的各种用法 . 本文将通过一个实际的测试例子, 来讲解Jmeter的基本用法.本文的最后提供了本篇文章的脚本. 不喜欢看文章的同学直接看脚本也能看懂 阅读目录 Jmeter介绍

iOS 开发者旅途中的指南针 - LLDB 调试技术

文章转载于:iOS 开发者旅途中的指南针 - LLDB 调试技术 今天给大家介绍的内容,无关乎任何功能性开发技术,但又对开发的效率影响至深,这就是调试技术. 何为调试呢,比如我们用 print 函数在指定位置进行输出,来定位某些节点的变量内的取值: 12345 let result = parseJSON("[1,2,3]");print(result); result = parseJSON("error");print(result);4 相信我们大家看到类似这

How to build .apk file from command line(转)

How to build .apk file from command line Created on Wednesday, 29 June 2011 14:32 If you don’t want to install a number of programs for building your Android project, this article is for you. You will need only JDK, the Android SDK platform tools and

JMeter学习笔记--详解JMeter逻辑控制器

JMeter使用逻辑控制器来决定采样器的处理顺序 简单控制器(Simple Controller):存储设备(将某些采样器归组) 循环控制器(Loop Controller:设置循环次数 仅一次控制器(Once Only Controller) 交替控制器(Interleave Controller) 随机控制器(Random Controller) 随机顺序控制器(Random Order Controller): 每个子测试元件都至多执行一次,但是执行顺序是随机的 吞吐量控制器(Throug

Oracle RAMN 备份解决方案一例

以前在博客里面介绍了RMAN备份脚本一列分享,通过RMAN备份到本地路径,然后通过FTP将备份文件上传到FTP服务器. 下面简单介绍另外一例RMAN备份解决方案,下面是我简单画的一个图(很少画图,感觉有点粗制滥造). 首先将数据库备份到本地服务器的一个目录下(目录是按日期格式生成,本地备份保留周期视存储情况而定.一般一天即可). 然后将备份文件通过Symantec Backup Exec 2012 Agent 将本地备份上传到磁带设备(容灾备份,磁带备份保留90天). 最后清理本地备份路径下的备

jmeter的参数化方法汇总

一.User Defined Variable 1.添加的位置 Add->Config Element->User Defined Variable 2.使用 变量phone添加成功后,在所有的Sample中用参数${phone}代替 3.特点 User Defined Variable中定义的所有参数的值在Test Plan的执行过程中不能发生取值的改变. 一般仅将Test Plan中不需要随迭代发生改变的参数(只取一次值的参数)设置在此处 二. User Parameters 1.添加的位