导读: 简短的语句篇一《简单sql语句》 SQL基 ...
本文是中国招生考试网(www.chinazhaokao.com)成考报名频道为大家整理的《简短的语句》,供大家学习参考。
简短的语句篇一
《简单sql语句》
SQL基本语句来自:SQL编程技巧 掌握SQL四条最基本的数据操作语句:Insert,Select,Update和Delete。 练掌握SQL是数据库用户的宝贵财 富。在本文中,我们将引导你掌握四条最基本的数据操作语句—SQL的核心功能—来依次介绍比较操作符、选择断言以及三值逻辑。当你完成这些学习后,显然你已经开始算是精通SQL了。 在我们开始之前,先使用CREATE TABLE语句来创建一个表(如图1所示)。DDL语句对数据库对象如表、列和视进行定义。它们并不对表中的行进行处理,这是因为DDL语句并不处理数据库中实际的数据。这些工作由另一类SQL语句—数据操作语言(DML)语句进行处理。 SQL中有四种基本的DML操作:INSERT,SELECT,UPDATE和DELETE。由于这是大多数SQL用户经常用到的,我们有必要在此对它们进行一一说明。在图1中我们给出了一个名为EMPLOYEES的表。其中的每一行对应一个特定的雇员记录。请熟悉这张表,我们在后面的例子中将要用到它。 INSERT语句 用户可以用INSERT语句将一行记录插入到指定的一个表中。例如,要将雇员John Smith的记录插入到本例的表中,可以使用如下语句: INSERT INTO EMPLOYEES VALUES ('Smith','John','1980-06-10', 'Los Angles',16,45000); 通过这样的INSERT语句,系统将试着将这些值填入到相应的列中。这些列按照我们创建表时定义的顺序排列。在本例中,第一个值“Smith”将填到第一个列LAST_NAME中;第二个值“John”将填到第二列FIRST_NAME中……以此类推。 我们说过系统会“试着”将值填入,除了执行规则之外它还要进行类型检查。如果类型不符(如将一个字符串填入到类型为数字的列中),系统将拒绝这一次操作并返回一个错误信息。 如果SQL拒绝了你所填入的一列值,语句中其他各列的值也不会填入。这是因为SQL提供对事务的支持。一次事务将数据库从一种一致性转移到另一种一致性。如果事务的某一部分失败,则整个事务都会失败,系统将会被恢复(或称之为回退)到此事务之前的状态。 回到原来的INSERT的例子,请注意所有的整形十进制数都不需要用单引号引起来,而字符串和日期类型的值都要用单引号来区别。为了增加可读性而在数字间插入逗号将会引起错误。记住,在SQL中逗号是元素的分隔符。 同样要注意输入文字值时要使用单引号。双引号用来封装限界标识符。 对于日期类型,我们必须使用SQL标准日期格式(yyyy-mm-dd),但是在系统中可以进行定义,以接受其他的格式。当然,2000年临近
,请你最好还是使用四位来表示年份。 既然你已经理解了INSERT语句是怎样工作的了,让我们转到EMPLOYEES表中的其他部分: INSERT INTO EMPLOYEES VALUES ('Bunyan','Paul','1970-07-04', 'Boston',12,70000); INSERT INTO EMPLOYEES VALUES ('John','Adams','1992-01-21', 'Boston',20,100000); INSERT INTO EMPLOYEES VALUES ('Smith','Pocahontas','1976-04-06', 'Los Angles',12,100000); INSERT INTO EMPLOYEES VALUES ('Smith','Bessie','1940-05-02', 'Boston',5,200000); INSERT INTO EMPLOYEES VALUES ('Jones','Davy','1970-10-10', 'Boston',8,45000); INSERT INTO EMPLOYEES VALUES ('Jones','Indiana','1992-02-01', 'Chicago',NULL,NULL); 在最后一项中,我们不知道Jones先生的工薪级别和年薪,所以我们输入NULL(不要引号)。NULL是SQL中的一种特殊情况,我们以后将进行详细的讨论。现在我们只需认为NULL表示一种未知的值。 有时,像我们刚才所讨论的情况,我们可能希望对某一些而不是全部的列进行赋值。除了对要省略的列输入NULL外,还可以采用另外一种INSERT语句,如下: INSERT INTO EMPLOYEES( FIRST_NAME, LAST_NAME, HIRE_DATE, BRANCH_OFFICE) VALUE( 'Indiana','Jones', '1992-02-01','Indianapolis'); 这样,我们先在表名之后列出一系列列名。未列出的列中将自动填入缺省值,如果没有设置缺省值则填入NULL。请注意我们改变了列的顺序,而值的顺序要对应新的列的顺序。如果该语句中省略了FIRST_NAME和LAST_NAME项(这两项规定不能为空),SQL操作将失败。 让我们来看一看上述INSERT语句的语法图: INSERT INTO table [(column { ,column})] VALUES (columnvalue [{,columnvalue}]); 和前一篇文章中一样,我们用方括号来表示可选项,大括号表示可以重复任意次数的项(不能在实际的SQL语句中使用这些特殊字符)。VALUE子句和可选的列名列表中必须使用圆括号。 SELECT语句 SELECT语句可以从一个或多个表中选取特定的行和列。因为查询和检索数据是数据库管理中最重要的功能,所以SELECT语句在SQL中是工作量最大的部分。实际上,仅仅是访问数据库来分析数据并生成报表的人可以对其他SQL语句一窍不通。 SELECT语句的结果通常是生成另外一个表。在执行过程中系统根据用户的标准从数据库中选出匹配的行和列,并将结果放到临时的表中。在直接SQL(direct SQL)中,它将结果显示在终
端的显示屏上,或者将结果送到打印机或文件中。也可以结合其他SQL语句来将结果放到一个已知名称的表中。 SELECT语句功能强大。虽然表面上看来它只用来完成本文第一部分中提到的关系代数运算“选择”(或称“限制”),但实际上它也可以完成其他两种关系运算—“投影”和“连接”,SELECT语句还可以完成聚合计算并对数据进行排序。 SELECT语句最简单的语法如下: SELECT columns FROM tables; 当我们以这种形式执行一条SELECT语句时,系统返回由所选择的列以及用户选择的表中所有指定的行组成的一个结果表。这就是实现关系投影运算的一个形式。 让我们看一下使用图1中EMPLOYEES表的一些例子(这个表是我们以后所有SELECT语句实例都要使用的。而我们在图2和图3中给出了查询的实际结果。我们将在其他的例子中使用这些结果)。 假设你想查看雇员工作部门的列表。那下面就是你所需要编写的SQL查询: SELECT BRANCH_OFFICE FROM EMPLOYEES; 以上SELECT语句的执行将产生如图2中表2所示的结果。 由于我们在SELECT语句中只指定了一个列,所以我们的结果表中也只有一个列。注意结果表中具有重复的行,这是因为有多个雇员在同一部门工作(记住SQL从所选的所有行中将值返回)。要消除结果中的重复行,只要在SELECT语句中加上DISTINCT子句: SELECT DISTINCT BRANCH_OFFICE FROM EMPLOYEES; 这次查询的结果如表3所示。 现在已经消除了重复的行,但结果并不是按照顺序排列的。如果你希望以字母表顺序将结果列出又该怎么做呢?只要使用ORDER BY子句就可以按照升序或降序来排列结果: SELECT DISTINCT BRANCH_OFFICE FROM EMPLOYEES ORDER BY BRANCH_OFFICE ASC; 这一查询的结果如表4所示。请注意在ORDER BY之后是如何放置列名BRANCH _OFFICE的,这就是我们想要对其进行排序的列。为什么即使是结果表中只有一个列时我们也必须指出列名呢?这是因为我们还能够按照表中其他列进行排序,即使它们并不显示出来。列名BRANCH_ OFFICE之后的关键字ASC表示按照升序排列。如果你希望以降序排列,那么可以用关键字DESC。 同样我们应该指出ORDER BY子句只将临时表中的结果进行排序;并不影响原来的表。 假设我们希望得到按部门排序并从工资最高的雇员到工资最低的雇员排列的列表。除了工资括号中的内容,我们还希望看到按照聘用时间从最近聘用的雇员开始列出的列表。以下是你将要用到的语句: SELECT BRANCH_OFFICE,FIRST_NAME
, LAST_NAME,SALARY,HIRE_DATE FROM EMPLOYEES ORDER BY SALARY DESC, HIRE_DATE DESC; 这里我们进行了多列的选择和排序。排序的优先级由语句中的列名顺序所决定。SQL将先对列出的第一个列进行排序。如果在第一个列中出现了重复的行时,这些行将被按照第二列进行排序,如果在第二列中又出现了重复的行时,这些行又将被按照第三列进行排序……如此类推。这次查询的结果如表5所示。 将一个很长的表中的所有列名写出来是一件相当麻烦的事,所以SQL允许在选择表中所有的列时使用*号: SELECT * FROM EMPLOYEES; 这次查询返回整个EMPLOYEES表,如表1所示。 下面我们对开始时给出的SELECT语句的语法进行一下更新(竖直线表示一个可选项,允许在其中选择一项。): SELECT [DISTINCT] (column [{, columns}])| * FROM table [ {, table}] [ORDER BY column [ASC] | DESC [ {, column [ASC] | DESC }]]; 定义选择标准 在我们目前所介绍的SELECT语句中,我们对结果表中的列作出了选择但返回的是表中所有的行。让我们看一下如何对SELECT语句进行限制使得它只返回希望得到的行: SELECT columns FROM tables [WHERE predicates]; WHERE子句对条件进行了设置,只有满足条件的行才被包括到结果表中。这些条件由断言(predicate)进行指定(断言指出了关于某件事情的一种可能的事实)。如果该断言对于某个给定的行成立,该行将被包括到结果表中,否则该行被忽略。在SQL语句中断言通常通过比较来表示。例如,假如你需要查询所有姓为Jones的职员,则可以使用以下SELECT语句: SELECT * FROM EMPLOYEES WHERE LAST_NAME = 'Jones'; LAST_NAME = 'Jones'部分就是断言。在执行该语句时,SQL将每一行的LAST_NAME列与“Jones”进行比较。如果某一职员的姓为“Jones”,即断言成立,该职员的信息将被包括到结果表中(见表6)。 使用最多的六种比较 我们上例中的断言包括一种基于“等值”的比较(LAST_NAME = 'Jones'),但是SQL断言还可以包含其他几种类型的比较。其中最常用的为: 等于 = 不等于 <> 小于 < 大于 > 小于或等于 <= 大于或等于 >= 下面给出了不是基于等值比较的一个例子: SELECT * FROM EMPLOYEES WHERE SALARY > 50000; 这一查询将返回年薪高于$50,000.00的职员(参见表7)。 逻辑连接符 有时我们需要定义一条不止一种断言的SE
LECT语句。举例来说,如果你仅仅想查看Davy Jones的信息的话,表6中的结果将是不正确的。为了进一步定义一个WHERE子句,用户可以使用逻辑连接符AND,OR和NOT。为了只得到职员Davy Jones的记录,用户可以输入如下语句: SELECT * FROM EMPLOYEES WHERE LAST_NAME = 'Jones' AND FIRST_NAME = 'Davy'; 在本例中,我们通过逻辑连接符AND将两个断言连接起来。只有两个断言都满足时整个表达式才会满足。如果用户需要定义一个SELECT语句来使得当其中任何一项成立就满足条件时,可以使用OR连接符: SELECT * FROM EMPLOYEES WHERE LAST_NAME = 'Jones' OR LAST_NAME = 'Smith'; 有时定义一个断言的最好方法是通过相反的描述来说明。如果你想要查看除了Boston办事处的职员以外的其他所有职员的信息时,你可以进行如下的查询: SELECT * FROM EMPLOYEES WHERE NOT(BRANCH_OFFICE = 'Boston'); 关键字NOT后面跟着用圆括号括起来的比较表达式。其结果是对结果取否定。如果某一职员所在部门的办事处在Boston,括号内的表达式返回true,但是NOT操作符将该值取反,所以该行将不被选中。 断言可以与其他的断言嵌套使用。为了保证它们以正确的顺序进行求值,可以用括号将它们括起来: SELECT * FROM EMPLOYEES WHERE (LAST_NAME = 'Jones' AND FIRST_NAME = 'Indiana') OR (LAST_NAME = 'Smith' AND FIRST_NAME = 'Bessie'); SQL沿用数学上标准的表达式求值的约定—圆括号内的表达式将最先进行求值,其他表达式将从左到右进行求值。 以上对逻辑连接符进行了说明,在对下面的内容进行说明之前,我们再一次对SELECT语句的语法进行更新: SELECT [DISTINCT] (column [{, column } ] )| * FROM table [ { , table} ] [ORDER BY column [ASC] | [DESC [{ , column [ASC] | [DESC } ] ] WHERE predicate [ { logical-connector predicate } ]; NULL和三值逻辑 在SQL中NULL是一个复杂的话题,关于NULL的详细描述更适合于在SQL的高级教程而不是现在的入门教程中进行介绍。但由于NULL需要进行特殊处理,并且你也很可能会遇到它,所以我们还是简略地进行一下说明。 首先,在断言中进行NULL判断时需要特殊的语法。例如,如果用户需要显示所有年薪未知的职员的全部信息,用户可以使用如下SELECT语句: SELECT * FROM EMPLOYEES WHERE SALARY IS NULL; 相反,如果用户需要所有已知年薪数据的职员的信息,你可以使用以下语句: SELECT * FROM EMPLOYEES
简短的语句篇二
《SQL简单语句》
创建数据库
创建之前判断该数据库是否存在
if exists (select * from sysdatabases where name='databaseName') drop database databaseName
go
Create DATABASE database-name
删除数据库
drop database dbname
备份sql server
--- 创建备份数据的 device
USE master
EXEC sp_addumpdevice 'disk', 'testBack',
'c:\mssql7backup\MyNwind_1.dat'
--- 开始备份
BACKUP DATABASE pubs TO testBack
创建新表
create table tabname(col1 type1 [not null] [primary key],col2 type2 [not null],..)
根据已有的表创建新表:
A:go
use 原数据库名
go
select * into 目的数据库名.dbo.目的表名 from 原表名(使用旧表创建新表)
B:create table tab_new as select col1,col2„ from tab_old definition only
创建序列
create sequence SIMON_SEQUENCE
minvalue 1 -- 最小值
maxvalue 999999999999999999999999999 -- 最大值
start with 1 -- 开始值
increment by 1 -- 每次加几
cache 20;
删除新表
drop table tabname
增加一个列
Alter table tabname add colname coltype
删除一个列
Alter table tabname drop column colname
添加主键
Alter table tabname add primary key(col)
说明:删除主键:Alter table tabname drop primary key(col) 创建索引
create [unique] index idxname on tabname(col„。)
删除索引:drop index idxname on tabname
注:索引是不可更改的,想更改必须删除重新建。
创建视图
create view viewname as select statement
删除视图:drop view viewname
简单基本的sql语句
(1) 数据记录筛选:
sql="select * from 数据表 where 字段名=字段值 order by 字段名
[desc]"
sql="select * from 数据表 where 字段名 like '%字段值%' order by 字段名 [desc]"
sql="select top 10 * from 数据表 where 字段名 order by 字段名
[desc]"
sql="select * from 数据表 where 字段名 in ('值1','值2','值3')"
sql="select * from 数据表 where 字段名 between 值1 and 值2"
(2) 更新数据记录:
sql="update 数据表 set 字段名=字段值 where 条件表达式"
sql="update 数据表 set 字段1=值1,字段2=值2 „„ 字段n=值n where 条件表达式"
(3) 删除数据记录:
sql="delete from 数据表 where 条件表达式"
sql="delete from 数据表" (将数据表所有记录删除)
(4) 添加数据记录:
sql="insert into 数据表 (字段1,字段2,字段3 „) values (值1,值2,值3 „)"
sql="insert into 目标数据表 select * from 源数据表" (把源数据表的记录添加到目标数据表)
(5) 数据记录统计函数:
AVG(字段名) 得出一个表格栏平均值
COUNT(*;字段名) 对数据行数的统计或对某一栏有值的数据行数统计 MAX(字段名) 取得一个表格栏最大的值
MIN(字段名) 取得一个表格栏最小的值
SUM(字段名) 把数据栏的值相加
引用以上函数的方法:
sql="select sum(字段名) as 别名 from 数据表 where 条件表达式" set rs=conn.excute(sql)
用 rs("别名") 获取统计的值,其它函数运用同上。
查询去除重复值:select distinct * from table1
(5) 数据表的建立和删除:
CREATE TABLE 数据表名称(字段1 类型1(长度),字段2 类型2(长度) „„ )
几个高级查询运算词
A:UNION 运算符
UNION 运算符通过组合其他两个结果表(例如TABLE1 和TABLE2)并消去表中任何重复行而派生出一个结果表。当 ALL 随UNION 一起使用时(即UNION ALL),不消除重复行。两种情况下,派生表的每一行不是来自TABLE1 就是来自TABLE2。
B: EXCEPT 运算符
EXCEPT 运算符通过包括所有在TABLE1 中但不在TABLE2 中的行并消除所有重复行而派生出一个结果表。当ALL 随EXCEPT 一起使用时(EXCEPT ALL),不消除重复行。
C:INTERSECT 运算符
INTERSECT 运算符通过只包括TABLE1 和TABLE2 中都有的行并消除所有重复行而派生出一个结果表。当ALL 随INTERSECT 一起使用时
(INTERSECT ALL),不消除重复行。
注:使用运算词的几个查询结果行必须是一致的。
使用外连接
A、left outer join:
左外连接(左连接):结果集既包括连接表的匹配行,也包括左连接表的所有行。
SQL: select a.a, a.b, a.c, b.c, b.d, b.f from a LEFT OUT JOIN b ON a.a = b.c
B:right outer join:
右外连接(右连接):结果集既包括连接表的匹配连接行,也包括右连接表的所有行。
C:full outer join:
全外连接:不仅包括符号连接表的匹配行,还包括两个连接表中的所有记录。
编辑本段判断对象是否存在 判断数据库是否存在
if exists (select* from sysdatabases wherename= '数据库名') dropdatabase[数据库名]
判断表是否存在
if not exists (select * from sysobjects where [name] = '表名' and xtype='U')
begin
--这里创建表
end
判断存储过程是否存在
if exists (select* from sysobjects whereid = object_id(N'[存储过程名]') and OBJECTPROPERTY(id, N'IsProcedure') = 1) dropprocedure[存储过程名]
判断临时表是否存在
if object_id('tempdb..#临时表名') isnot null
droptable#临时表名
判断视图是否存在
--SQL Server 2000
IF EXISTS (SELECT* FROM sysviews WHEREobject_id = '[dbo].[视图名]'
--SQL Server 2005
IF EXISTS (SELECT* FROM sys.views WHEREobject_id = '[dbo].[视图名]'
判断函数是否存在
if exists (select* from dbo.sysobjects whereid =
object_id(N'[dbo].[函数名]') and xtype in (N'FN', N'IF', N'TF')) dropfunction[dbo].[函数名]
获取创建信息
SELECT[name],[id],crdate FROM sysobjects where xtype='U' /*
xtype 的表示参数类型,通常包括如下这些 C = CHECK约束 D = 默认值或DEFAULT约束 F = FOREIGNKEY约束 L = 日志 FN = 标量函数 IF = 内嵌表函数 P = 存储过程 PK = PRIMARYKEY约束(类型是K) RF = 复制筛选存储过程 S = 系统表 TF = 表函数 TR = 触发器U = 用户表 UQ = UNIQUE约束(类型是K) V = 视图 X = 扩展存储过程 */
判断列是否存在
if exists(select* from syscolumns whereid=object_id('表名') and name='列名')
altertable表名dropcolumn列名
判断列是否自增列
if columnproperty(object_id('table'),'col','IsIdentity')=1 print '自增列'
else
print '不是自增列'
SELECT* FROM sys.columns WHEREobject_id=OBJECT_ID('表名') AND is_identity=1
判断表中是否存在索引
if exists(select* from sysindexes whereid=object_id('表名') and name='索引名')
print '存在'
else
print '不存在
简短的语句篇三
《几个简单的基本的sql语句》
几个简单的基本的sql语句
(1) 数据记录筛选:
sql="select * from 数据表 where 字段名=字段值 order by 字段名
[desc]"
sql="select * from 数据表 where 字段名 like '%字段值%' order by 字段名 [desc]"
sql="select top 10 * from 数据表 where 字段名 order by 字段名
[desc]"
sql="select * from 数据表 where 字段名 in ('值1','值2','值3')"
sql="select * from 数据表 where 字段名 between 值1 and 值2"
(2) 更新数据记录:
sql="update 数据表 set 字段名=字段值 where 条件表达式"
sql="update 数据表 set 字段1=值1,字段2=值2 …… 字段n=值n where 条件表达式"
(3) 删除数据记录:
sql="delete from 数据表 where 条件表达式"
sql="delete from 数据表" (将数据表所有记录删除)
(4) 添加数据记录:
sql="insert into 数据表 (字段1,字段2,字段3 …) values (值1,值2,值3 …)"
sql="insert into 目标数据表 select * from 源数据表" (把源数据表的记录添加到目标数据表)
(5) 数据记录统计函数:
AVG(字段名) 得出一个表格栏平均值
COUNT(*¦字段名) 对数据行数的统计或对某一栏有值的数据行数统计
MAX(字段名) 取得一个表格栏最大的值
MIN(字段名) 取得一个表格栏最小的值
SUM(字段名) 把数据栏的值相加
引用以上函数的方法:
sql="select sum(字段名) as 别名 from 数据表 where 条件表达式" set rs=conn.excute(sql)
用 rs("别名") 获取统计的值,其它函数运用同上。
查询去除重复值:select distinct * from table1
(5) 数据表的建立和删除:
CREATE TABLE 数据表名称(字段1 类型1(长度),字段2 类型2(长度) …… )
简短的语句篇四
《【原创】最简单的SQL语句》
【67】SQL
最好的汽车手自一体,最好的系统手自一体,最好的程序员不但善于运用框架、平台中现有的技术减少开发工作量提升系统稳定性,同时,当框架、平台无法满足需求时,还会用Notepad写代码,手工写SQL,命令行下的基本调试。
一、基本DDL语句,必须会手写。
(1)INSERT INTO订单商品表(商品ID,数量) VALUES(’A47’,’2012-10-01’)
这是最简单的语句,同时又是其他操作的数据来源,基础中的基础,所以一定要会。
(2)SELECT 商品ID,数量 FROM 订单商品表 WHERE订单日期>=’2012-10-01’
最灵活最常用的那20%,就是这个SELECT语句。
(3)UPDATE 订单商品表SET数量=数量+(100.0) WHERE数量 IS NOT NULL,UPDATE语句使用原则:(1)不要在生产库中使用,这个原则同样适用于下面的DELETE语句,否则造成的损失可能导致公司破产。(2)UPDATE语句也可以多表关联操作(JOIN),但不建议使用。张三曾经在一个著名大型数据库的新版本上执行了一个关联语句,结果就造成了数据库实例停止服务,这充分说明了那80%不常用的功能真的很脆弱,想让自己的作品天长地久的运行下去,就尽量用大道边上的功能,知道回字的四种写法并不意味着自己水平比别人高,会写繁体字却是有文化的表现。
(4)DELETE FROM 订单表WHERE订单日期>=’2012-10-01’
这里的表名和字段名都是中文只是为了看得更清楚,并不是倡导这么做,当然,公司规范要求用中文的话,没有任何问题的。
二、常用的关键字,排名不分先后,尽量熟练应用之,至少要知道是干啥的。
(10)ISNULL(NVL、COALESCE)、IS、 NOT、 NULL,关于空值的处理。空值是数据库和代码中都有的内容,都是需要特殊处理的一个特殊数据。“空不异色,色不异空”,圣人不我欺。
(20)LENGTH(LEN),判断字段值得长度,注意NULL和空格等不可见的值。
(30)SUBSTRING ,字符串处理,取数组的一部分值,注意数组长度。
(40)TRIM ,删空格,本书有专门章节介绍。
(50)CAST(CONVERT),类型转换,什么类型?我们说过,就是数值和字符串,当然可以继续细分下去,别分的太细,我们是工程师,不是科学家。
(60)CASE WHEN(DECODE),根据读到的值处理为自己想要的值,注意DEFAULT处理,防范逻辑漏洞,最好有测试用例。
(70)DATEDIFF,日期函数的代表,还有其它的函数,请参考相关文献。
(80)DISTINCT,严重影响效率,尽量不用。不管SQL多复杂,嵌套了多少层,只在最外层用一次。
(90)
(100)SUM / COUNT / AVG 、GROUP BY、HAVING
(110)INNER JOIN / LEFT OUTER JOIN,关系型数据库,就是一堆二维表格,表格里的数据往往是精简的,存储效率比较高的,直接看是看不懂的,为了达到人类能直接看懂的效果,需要把表格“关联”起来展示。比如:供应商表格里有供应商的ID和名称,订单表里只有供应商的ID,显示订单的时候,供应商的名称是从供应商表里读到的,这就是“关系户”。使用关联的口诀是,只有内关联和左关联,做过项目的你可能明白这句话的含义,如果不明白,请阅读本书的专题章节。
(120)UNION ALL, 表格不但可以“横向”关联,还可以纵向拼凑,甚至可以把没有任何“关联”关系的表凑成一张表。反正SQL处理的就是一张二维表,至于这张表是“物理的”
(数据库中的实际表,比如供应商,订单),还是“逻辑的”(子查询,是一个SQL查询的
结果)无所谓。
(130)EXISTS / IN,对结果集的判断,返回一个布尔型值,既然如此,很显然只能出现在
WHERE子句中。
(140)AS ,别名,很重要,不只是为了可读,更重要的是可以“无中生有”的搞出若干
列,比如:0.0 AS number,表示增加了一个叫number的新列,这个列在当前FROM的数据
表中并不存在,我们创造了这个列。我们还可以用SQL创造一个表。
(150)ORDER BY,排序,费时但是值得,在这里不排序,也要调用代码进行排序。和DISTINCT
一样,只需要在最外层调用一次;和DISTINCT不同,调用多次数据库会提示错误,因为那
实在没有必要。
请看下面这个最简单的SQL语句,看明白了,你的SQL基本就过关了:
Any suggest,write to me :wang.nai.jun@gmail.com
SELECT psn.psnname, dept.deptname, inv.invcode, inv.invname, bizmonth, ISNULL(SUM(salenumber),
0.0) AS salenumber, ISNULL(SUM(purnumber),0.0) AS purnumber FROM
(SELECT s.psnid,d.invid,SUBSTRING(s.bizdate,1,7) AS bizmonth,ISNULL(d.salenumber,0.0)-300.0,CAST(0.0 AS DECIMAL(20,6)) AS purnumber
FROM saleorder s,saleorder_detail d WHERE s.pk_saleorder=d.pk_saleorder AND s.bizdate>='2010-01-01' AND s.bizdate<='2010-05-31' AND biztypeid IN (SELECT biztypeid FROM biztype WHERE fbizflag=1) )
UNION ALL (SELECT p.psnid,d.invid, SUBSTRING(p.bizdate,1,7) AS bizmonth, CAST(0.0 AS DECIMAL(20,6)) AS salenumber,CASE WHEN d.purnumber>0.0 THEN
d.purnumber+100.0 WHEN d.purnumber<0.0 THEN d.purnumber-100.0 ELSE
0.0 END AS purnumber
FROM purorder p,purorder_detail d
p.pk_saleorder=d.pk_saleorder AND p.bizdate>='2010-01-01' AND WHERE
p.bizdate<='2010-05-31') AND P.biztype IS NOT NULL AND EXISTS(SELECT invid FROM planorder WHERE bizdate>='2010-01-01' AND bizdate<='2010-05-31' AND LENGTH(p.billcode)>9 AND SUBSTRING(p.billcode,1,4)=’FGHJ’)
) AS ORDER
INNER JOIN invdoc inv ON ORDER.invid=inv.invid
LEFT OUTER JOIN psndoc psn ON ORDER.psnid=psn.psnid
LEFT OUTER JOIN deptdoc dept ON ORDER.deptid=dept.deptid
GROUP BY psn.psnname,dept.deptname,inv.invcode,inv.invname, bizmonth
HAVING SUM(salenumber)>1000000.0 AND SUM(purnumber)<=200000.0
ORDER BY psn.psnname DESC,dept.deptname ,inv.invcode DESC
简短的语句篇五
《简短的几句话》
简短的几句话——三言两语
随意乱说——胡言乱语
态度温和,小声说——轻言细语
想说又不说--吞言吐语
充满英雄气概的话——豪言壮语
欺骗性的话——花言巧语
1.(三)言(两)语:简短的话。
2.(花)言(巧)语:虚伪而动听的话。
3.(甜)言(蜜)语:为讨人喜欢或哄骗人而说的十分动听的话。
4.(风)言(风)语:背后制造,散布的污蔑,诽谤之类的话。
5.(千)言(万)语:很多的话。
6.(豪)言(壮)语:豪迈雄壮的话。
7.(轻)言(细)语:说话的声音轻柔,语气温和。
8.(恶)言(恶)语:用恶毒的话骂人或凶恶的语气说话
9.(流)言(蜚)语:背后散布的难听的话。
10.(污)言(秽)语:粗鲁,肮脏的话。
1、“(中心句 )”在寓言故事中往往是指作者用一句精辟的话点明故事的寓意。
2、观察字形变化,猜一个成语。例:沙——砂(水落石出)
(1)道——邈( 道貌岸然)(2)睡——陲(以耳代目 )(3)倩——睛( 引人注目)
(4)咕——吟( 从古到今)(5)杭——航( 木已成舟)(6)亚——哑( 有口难言)
3\我不会,你再单独提问
4、我们要和干旱、洪水、地震等自然灾害作斗争。(修改病句)
5、25名同学一起去郊游,每人只买1瓶饮料,如果3个空瓶换1个瓶饮料,那么他们最多可以喝到多少饮料? 先25瓶,用25个空瓶换8瓶,加上多下来的一个空瓶,又可换3瓶。再换一瓶。共25+8+3+1=37
7、描写美丽景色的词语:(灯火斓珊 )、(晴空万里 )、(水天一色 ) 表现美好景象的词语:( 欣欣向荣)、(
简短的语句篇六
《简单SQL语句查询》
简单SQL语句查询
这一章是对SQL结构化查询语句的一个入门介绍,SQL是ANSI标准的关系数据库语言,用于管理数据和安全性。本章讨论基本的SQL语句和命令。通过学习,你可以访问、操作你的数据,可以学会如何检索、增加、更新、删除数据表中的数据,还可学到两种创建新表的方法。
这一章的所有例子都查询公司信息公话数据中心系统正在使用的routon数据库中的表。下图描述了这些表的结构,这些表是:终端档案表ctarchives,终端类型表kindid。通过学习本章内容希望各管理员能达到在告之表名的情况下,能进行一些简单的日常操作。
1. 基本SQL语句概述
最重要的SQL语句是:
命令
Select
Insert
Update
Delete
Create table
Select into 描述 从一个或多个表中检索列和行 向一个表增加行 更新表中已存在行的某几列 从一个表中删除行 根据特定的表模式创建一个新表 根据一个SELECT语句输出的和和列创建一个新表
这些命令看起来简单,但你会在下的例子中看到,它们的确以执行许多复杂的功能。
2 SELECT
Select 语句指明了你想检索的数据列,这些列的存储位置,返回的数据必须满足标准和应用
于数据的排序。一个select语句能够进一步把结合在一起的数据行分组,并在组的层次上设定检索标准。
组件
Select
From
Where
Group by
Having
Order by 描述 指明要检索的数据列 指明从哪几个表中检索行 指明返回数据必须满足的标准 对于集合查询,指明返回的列数据通过这些列来形成组 对于集合查询,指明返回的集合值必须满足的标准 指明返回行的排序顺序
3 简单的select语句
下面的例子查询表的几列:
select IDCard , installplace ,registerdate, ManState from ctarchives
说明:本例是查询话机档案表中的终端ID码、安装地点、安装日期和话机管理状态的语句
4 添加where子句
用同样的基本select语句,再加入where子句,便可缩小结果范围。假设你只想知道最近一个月新增加的终端话机数据,便可写成:
select IDCard , installplace ,registerdate, ManState from ctarchives
where RegisterDate >(convert(char(8),getdate()-30,112))
5 添加order by 子句
还可以进一步用一个简单的查询步骤,按号码对结果排序。要完成此功能,应添加一个order by子句。
select IDCard , installplace ,registerdate, ManState from ctarchives
where RegisterDate >(convert(char(8),getdate()-30,112) ) order by IDCard
结果行是以IDCard字段,按数值升序排序记录。
你也可以使用DESC关键字以某一字段的降序排序记录。假设先以telno升序,再以通信成功时间。下列SQL语句便可实现这一功能。
select IDCard , installplace ,registerdate, ManState from ctarchives
where RegisterDate >(convert(char(8),getdate()-30,112) )
order by IDCard desc
6 使用where子句来连接表
通过上述几例,我们已经看到了几种使用SQL SELECT语句查看cttarchives表中数据的方法。然而,在现实世界中,我们每一次只想从一个表中查看数据吗?回答大多数是不。在Ctarchives表中的数据与routon数据库中其他表的数据是有关系的。例如,如果你想知道这些话机是什么型号时,单独的Ctarchives是不会告诉你的。你必需搜索交叉引用表CTkind(话机种类表),它通过kindid 和id列把两个表连接起来。我们可以用where子句来实现:
select ctarchives.IDCard , ctarchives.installplace ,ctarchives.registerdate,
ctarchives.ManState ,ctkind.model
from ctarchives , ctkind
where ctarchives.ctkindid=ctkind.id and
RegisterDate >(convert(char(8),getdate()-30,112) )
order by IDCard desc
说明:本句在上例的基础上,加上了话机的种类。
注意:当在一个语句中从多个表检索数据时,为避免模棱两可,对于列名字出现在from子句
中超过一个表时,必须对列名用相关联在的表名作前缀。也许你注意到这将导致长的SQL语句。而使用一个表别名,便可以缩短SQL语句,并且使阅读和输入都变得更加容易。比较一下前面的SQL语句例子,在这里,别名代替了表名: select a.IDCard , a.installplace ,a.registerdate, a.ManState ,b.model
from ctarchives a,ctkind b where a.ctkindid=b.id and
a.RegisterDate >(convert(char(8),getdate()-30,112) )
order by IDCard desc
7 使用连接操作来连接表
另一种连接表的方法是使用连接操作符。使用连接操作来连接表语法:
select column1,column2,column3 from table1 join operator table2 on join
例如:上述语句可以改写连接为:
select a.IDCard , a.installplace ,a.registerdate, a.ManState ,b.model
from ctarchives a right join ctkind b on a.ctkindid=b.id where
a.RegisterDate >(convert(char(8),getdate()-30,112) )
order by IDCard desc
8 SQL语句中的集合函数
集合函数以总和、记录数、平均值等形式返回指定列或表达式的集合结果。集合函数可以对查
简短的语句篇七
《优美语句摘抄》
优美语句摘抄
1、上天只保佑那些肯帮助自己的人。
2、如果不坚强,懦弱给谁看?
3、人生是美好的,又是短暂的。有的人生寂寞,有的人生多彩,不同的人有着不同的人生追求;人生是一条没有回程的单行线,每个人都用自己的所有时光前行。
4、与其去排斥已成的事实,不如主动接受它。
5、用无所谓的态度,过好随遇而安的生话。
6、生活是一部大百科全书,包罗万象;生活是一把六弦琴,弹奏出多重美妙的旋律:生活是一座飞马牌大钟,上紧发条,便会使人获得浓缩的生命。
7、生活,就是面对现实微笑,就是越过障碍注视未来;生活,就是专心灵之剪,在人生之路上裁出叶绿的枝头;生活,就是面对困惑或黑暗时,灵魂深处燃起豆大却明亮且微笑的灯展。
8、人生如一本书,应该多一些出色的细节,少一些乏味的字眼;人生如一支歌,应该多一些昂扬的旋律,少一些忧伤的音符;人生如一幅画,应该多一些亮丽的色彩,少一些昏暗的色调。
9、人生就像一座山,重要的不是它的高低,而在于灵秀;人生就像一场雨,重要的不是它的大小,而在于及时。
10、人生的路漫长而多彩,就像在天边的大海上航行,有时会风平浪静,行驶顺利;而有时却会是惊涛骇浪,行驶艰难。但只要我们心中的灯塔不熄灭,就能沿着自己的航线继续航行。人生的路漫长而多彩:在阳光中我学会欢笑,在阴云中我学会坚强;在狂风中我抓紧希看,在暴雨中我抓紧理想;当我站在中点回看,我走出了一条属于我的生之路。
11、能像看别人的缺点一样,准确发现自己的缺点,你的生命将会不平凡。
12、能为别人设想的人,永远不寂寞。
13、过去的不再回来,回来的不再完美。
14、带着复杂的心情,看复杂的人生,走复杂的路。
15、成熟是一种明亮而不刺眼的光辉,一种圆润而不腻耳的音响,一种不需要对别人察颜观色的从容,一种终于停止了向四周申诉求告的大气,一种不理会哄闹的微笑,一种洗刷了偏激的淡漠,一种无须声张的厚实,一种并不陡峭的高度。
16、不是我们不合适,而是你们更适合。
17、偶尔的回忆过去,让我觉得我的人生在退步。
18、逆境是成长必经的过程,能勇于接受逆境的人,生命就会日渐茁壮。
19、你要感谢那些告诉你缺点的人。
1、音乐是思维着的声音。
2、音乐是热情洋溢的自由艺术,是室外的艺术,象自然那样无边无际,象风,象天空,象海洋。绝不能把音乐关在屋子里,成为学院派艺术。
3、音乐是灵魂的完美表现。
4、最好的音乐是这种音乐,它能够使最优秀、最有教养的人快乐,特别是使那个在品
德和修养上最为卓越的一个人快乐。
5、在真正的音乐中,充满了一千种心灵的感受,比言词更好得多。
6、音乐是万德胚胎的源泉。不为音乐所动的人,我必定把他比做木石。假使身充教师而不会唱歌,那简直没有为人师的资格。
7、音乐是比一切智慧、一切哲学更高的启示,谁能渗透我音乐的意义,便能超脱寻常人无以自拔的苦难。
8、音乐家的艺术不在于直接描绘形象,而在于把心灵置于这些对象能够在心灵里创造的情绪中去。
9、音乐常使死亡迟延。
10、音乐表达的是无法用语言描述,却又不可能对其保持沉默的东西。
11、艺术正如生活那样,它是无穷无尽的。因此枣也不可能有什么能使我们认为还有比本身就是时代的海洋的音乐更美好的东西。
12、一首我喜爱的乐曲,所传给我的思想和意义是不能用语言表达的。
13、欣赏音乐,需要有辨别音律的耳朵,对于不辨音乐的耳朵说来,最美的音乐也毫无意义。
14、我深信:质朴和真实是一切艺术作品的美的原则。
15、通过与诗的内在联系,音乐获得了新生。
16、通过音乐并在音乐中教育我们的孩子。
17、难道音乐家不应该象诗人和画家一样地研究大自然吗?事实上,他能够研究人——大自然最杰出的创造物。
18、没有音乐,生命是没有价值的。
19、当我坐在那架破旧古钢琴旁边的时候,我对最幸福的国王也不羡慕。
20、体操和音乐两个方面并重,才能够成为完全的人格。因为体操能锻炼身体,音乐可以陶冶精神。
21、世界在音乐中得到了完整的再现和表达。它是各种艺术当中第一位的,帝王式的艺术,能够成为音乐那样,则是一切艺术的目的。
1、只有远离这种清新,才成了一种奢侈的享受,用心去感受……未来如此美好。
2、有时候,听到一首歌,会突然想起一个人;有时候,走过熟悉的街角,道路旁我憧憬美好未来。
3、一辈子的朋友就是:理解你的过去,相信你的未来,并包容你的现在的人。
4、一般情况下,不想三年以后的事,只想现在的事。(现在有成就,以后才能更辉煌)
5、幸福是每天都要有的,像空气、水和盐一样,不能把它们都留在未来。还好,很多细微的事情能给我们带来幸福。这个世界上,谁都可以闲下来的,记住,有闲才能产生幸福,别把自己逼得太急。
6、相信优美的生命,就是一曲无字的挽歌,漫过心际的孤独,早已蔚然成冰,而你是这个季节里最美的音符。
7、无论如何选择,只要是自己的选择,就不存在对错更无须后悔。过去的你不会让现在的你满意,现在的你也不会让未来的你满意。若当初有胆量去选择 , 就应该有勇气将后果承受。
8、思念是一种幸福的忧伤,是一种甜蜜的惆怅,是一种温馨的痛苦。思念是对昨日悠长的沉湎和对未来美好的向往。
9、三军可夺帅也,匹夫不可夺志也。
10、如果有那么一天,你不再记得,我不再记得,时光一定会替我们记得。 最辛苦的不是两地相隔,而是明明相爱,却不敢想未来。
11、融入银河,就安谧地和明月为伴照亮长天;没入草莽,就微笑着同清风合力染绿大地,这样才算善待生命,不负年华。
12、人生不能缺乏的是雨夜,淅沥地,独自的雨夜。这样的雨夜里,天有泪,烛有泪,天泪有声,烛泪有形,唯有斯人面上簌簌流下的,是点点无声无行的热泪。
13、你若对未来充满希望和自信,你就会发现它真的如你期待的那样了。
14、你能看到多远的过去,就能看到多远的未来。
15、莫愁前路无知己,天下谁人不识君?
16、明日复明日,明日何其多?我生待明日,万事成蹉跎。
17、每个圣人都有过去,每个罪人都有未来。
18、做人须简单,不沉迷幻想,不茫然未来,走今天的路,过当下的生活;不慕繁华,不必雕琢,对人朴实,做事踏实,要懂得取舍,要学会付出;不负重心灵,不伪装精神,让脚步轻盈,让快乐常在;不贪功急进,不张扬自我,成功时低调,失败后洒脱。简单是我们人生的底色。
本文由优美语句网精心整理总结,更多优美语句请直接访问
简短的语句篇八
《简短的日常祝福语句》
简短的日常祝福语句
> 痛苦最好是别人的,快乐才是自己的;麻烦将是暂时的,朋友总是永恒的;爱情是用心经营的,世界上没有什么大不了的;祝开心
"真情祝福语句:朋友是一辈子的! !"
风是透明的,雨是滴答的,云是流动的,歌是自由的,爱是用心的,恋是疯狂的,天是永恒的,你是难忘的。
家是避风的港湾,朋友是鼓风的海岸。家遮挡了苦雨风霜,朋友送来艳阳里一瓣心香。无家透心凉,有友透心亮。
见到你很开心,星空里万颗星,有一颗是我心,想我时看星星,失眠时数星星,许愿时等流星,好朋友天天要开心。
金色的太阳,辐射着友情;银色的月亮,传递着友情。友谊是沉甸甸的稻穗,友谊是郁葱葱的森林。
看见你的笑是世上最幸福的,看见你的泪是世上最回味的,看见你的怒是世上最难忘的,但看不到你的信息是世上最可怜的!
人世间一切荣华富贵不如一个知心朋友。在这辞旧迎新的日子里,祝你一切都好! 天给你温暖,地给你温馨,我给你祝福。祝你运气像雨点一样密集!烦恼像流云一样飞去,忧愁像恐龙一样灭绝,幸福像蜂蜜一样甜美。
托鸿雁将我的思念捎给你,请明月将我的问候带给你,让短信将我的祝福送给你.一生无忧!
微笑并且流泪的日子永远是属于青春的时光,不要拒绝含泪的微笑,也不要拒绝含笑的眼泪。微笑并且流泪的花朵在青春的季节里永不会凋谢。
我送你一颗忘忧草,再为你逮只幸福鸟,当幸福鸟含着忘忧草像你飞来时,请把你的心整理好,那是我对你最好的祝福,只希望你能快乐到老幸福到老!
无论时光如何绵延,让真情永远;无论世事如何变迁,让宽容永远,无论咫尺还是天涯,让美好永远,快乐长伴.
新春又来到,新年问个好,办事步步高,生活乐陶陶,好运天天交,越长越俊俏,家里出黄金,墙上长钞票。
新年到、新年到,贴春联、放花炮,喜气洋洋真热闹!发个短信问声好,升官发财步步高!
新年的钟声就要响起,愿这吉祥的钟声能为您及家人带来平安、幸福、健康和快乐!祝新年快乐,万事如意!一年又比一年强。
新年新气象,新春节日到!节日快乐!愿你在2013年,天天开怀,时时快乐,分分精彩,秒秒幸福。
一年一年开心过,开开心心,一生快快乐乐,一世平平安安,一家和和睦睦,愿你生命中的每一个愿望全能得到实现!新春快乐!
一切暂别都要重逢,一切遗憾都来圆满,一切看来隔离的,都不可分开。 友情是装在瓶里的佳酿,无色无味,多年后开启溢出的是那浓浓的情。
友谊是一杯愈陈愈香的酒,其中酒溶液的分子就是你和我,一种亲和力将我们结合在一起。友谊是一棵树,它的成长需要阳光、热情与真挚,也同样需要土壤、朴实和坦诚。
简短的语句篇九
《SQL简单语句小结 数据库菜鸟不可不看》
数据库菜鸟不可不看简单SQL语句小结
为了大家更容易理解我举出的SQL语句,本文假定已经建立了一个学生成绩管理数据库,全文均以学生成绩的管理为例来描述。
1.在查询结果中显示列名:
a.用as关键字:select name as '姓名' from students order by age
b.直接表示:select name '姓名' from students order by age
2.精确查找:
a.用in限定范围:select * from students where native in ('湖南', '四川')
b.between...and:select * from students where age between 20 and 30
c.“=”:select * from students where name = '李山'
d.like:select * from students where name like '李%' (注意查询条件中有“%”,则说明是部分匹配,而且还有先后信息在里面,即查找以“李”开头的匹配项。所以若查询有“李”的所有对象,应该命令:'%李%';若是第二个字为李,则应为'_李%'或'_李'或'_李_'。)
e.[]匹配检查符:select * from courses where cno like '[AC]%' (表示或的关系,与"in(...)"类似,而且"[]"可以表示范围,如:select * from courses where cno like '[A-C]%')
3.对于时间类型变量的处理
a.smalldatetime:直接按照字符串处理的方式进行处理,例如:
select * from students where birth > = '1980-1-1' and birth <= '1980-12-31'
4.集函数
a.count()求和,如:select count(*) from students (求学生总人数)
b.avg(列)求平均,如:select avg(mark) from grades where cno=’B2’
c.max(列)和min(列),求最大与最小 5.分组group
常用于统计时,如分组查总数: selectgender,count(sno)
发表日期:2004-7-23
from students group by gender (查看男女学生各有多少)
注意:从哪种角度分组就从哪列"group by" 对于多重分组,只需将分组规则罗列。比如查询各届各专业的男女同学人数,那么分组规则有:届别(grade)、专业(mno)和性别(gender),所以有"group by grade, mno, gender"
select grade, mno, gender, count(*) from students
group by grade, mno, gender
通常group还和having联用,比如查询1门课以上不及格的学生,则按学号(sno)分类有:
selectsno,count(*) from grades where mark<60 group by sno having count(*)>1 6.UNION联合 合并查询结果,如: SELECT * FROM students WHERE name like ‘张%’ UNION [ALL]
SELECT * FROM students WHERE name like ‘李%’ 7.多表查询 a.内连接
selectg.sno,s.name,c.coursename
from grades g JOIN students s ON g.sno=s.sno JOIN courses c ON g.cno=c.cno (注意可以引用别名) b.外连接 b1.左连接
selectcourses.cno,max(coursename),count(sno) from courses LEFT JOIN
grades
ON
courses.cno=grades.cno
group by courses.cno
左连接特点:显示全部左边表中的所有项目,即使其中有些项中的数据未填写完全。
左外连接返回那些存在于左表而右表中却没有的行,再加上内连接的行。
b2.右连接 与左连接类似 b3.全连接
selectsno,name,major from students FULL JOIN
majors
ON
students.mno=majors.mno
两边表中的内容全部显示 c.自身连接
select
c1.cno,c1.coursename,c1.pno,c2.coursename
from courses c1,courses c2 where c1.pno=c2.cno 采用别名解决问题。 d.交叉连接
selectlastname+firstname from lastname CROSS JOIN firstanme
相当于做笛卡儿积 8.嵌套查询
a.用关键字IN,如查询李山的同乡: select * from students
where native in (select native from students where name=’李山’)
b.使用关键字EXIST,比如,下面两句是等价的: select * from students
wheresno in (select sno from grades where cno=’B2’)
select * from students where exists (select * from grades where
grades.sno=students.sno AND cno=’B2’) 9.关于排序order
a.对于排序order,有两种方法:asc升序和desc降序
b.对于排序order,可以按照查询条件中的某项排列,而且这项可用数字表示,如:
selectsno,count(*) ,avg(mark) from grades group by sno havingavg(mark)>85 order by 3 10.其他
a.对于有空格的识别名称,应该用"[]"括住。 b.对于某列中没有数据的特定查询可以用null判断,如select sno,courseno from grades where mark IS NULL
c.注意区分在嵌套查询中使用的any与all的区别,any相当于逻辑运算“||”而all则相当于逻辑运算“&&”
d.注意在做否定意义的查询是小心进入陷阱: 如,没有选修‘B2’课程的学生: select students.* from students, grades wherestudents.sno=grades.sno AND grades.cno<> ’B2’
上面的查询方式是错误的,正确方式见下方: select * from students
where not exists (select * from grades wheregrades.sno=students.sno AND cno='B2') 11.关于有难度多重嵌套查询的解决思想: 如,选修了全部课程的学生: select * from students
where not exists ( select * from courses where NOT EXISTS (select * from grades
wheresno=students.sno AND cno=courses.cno))
最外一重:从学生表中选,排除那些有课没选的。用not exist。由于讨论对象是课程,所以第二重查询从course表中找,排除那些选了课的即可。
最新推荐成考报名
更多- 歇后语_歇后语大全_歇后语大全及答案_爆笑歇后语
- 大学排名_大学排名2018排行_大学查询_中国大学名单
- 成语大全_四字成语_在线成语词典_成语查询
- 成语接龙大全查询,成语接龙游戏,在线成语接龙
- 全国安全教育平台入口_学校安全教育平台
- 社保查询网-社会保障卡查询,社会保险查询,社保网上查询
- 汉字简体繁体转换_在线繁体字转换工具
- 数字大写转换|人民币金额(数字)大小写转换在线工具
- 年龄计算器实际岁数计算器 - 周岁虚岁计算器
- 产假计算器-算产假计算器在线2018-2018年产假自动计算器
- 预产期计算器-怀孕孕期计算器-怀孕天数计算
- 中国文库网-教育资源网-范文文章
- 邮编区号查询网
- 致富商机网-致富点子_创业项目
- 创业项目网--最热门的投资项目
- 中国邮政邮编查询号码
- 电话区号查询
- 全国车牌号归属地大全
- 在线网速测试|宽带速度测试
- 人民币汇率查询
- ●理财有没有风险 金融互联网理财
- ●qq网名
- ●2016最新伤感说说
- ●谈笑风生造句
- ●读书的名言
- ●资产清查报告
- ●贫困户申请书
- ●财务自查报告
- ●离婚起诉书
- ●赞美老师的演讲稿
- ●车间管理
- ●车辆购置税
- ●跨越百年的美丽读后感
- ●跟女友离别的话
- ●超市管理制度
- ●起诉状范本
- ●赠别诗大全
- ●描写夏天的句子
- ●描写友谊的诗句
- ●迁户口申请书
- ●转正申请表范本
- ●这个杀手不太冷台词
- ●运动会稿子精选
- ●那么那么造句
- ●送给男朋友的情话大全
- ●钳工实训报告
- ●霸气说说大全
- ●骂人不带脏字的
- ●幼儿园见习个人总结
- ●追女孩子的短信