摘要:
联接分类 内部联接(典型的联接运算,使用类似于 = 或 的比较运算符)。内部联接包括同等联接和自然联接。 内部联接通过比较相等的值的字段(被连接的表所共同拥有的),将匹配的行作为结果集(即将两个表都满足条件的记录作为结果集)。 A:内连接是SQLServer默认的连接方式,可以把INNER JOIN简写成JOIN B:连接的条件中不要指定空值,因为空值和其他值都不会相等 外部联接 外部联接可以是左向外部联接、右向外部联接或完整外部联接。 外部联接会返回 FROM 子句中提到的至少一个表或视图中的所有行,只要这些行...
阅读全文
posted @ 2009-11-11 14:23
o(∩_∩)o...
阅读(560)
推荐(0)
摘要:
子查询是一个嵌套在 SELECT、INSERT、UPDATE 或 DELETE 语句或其他子查询中的查询。任何允许使用表达式的地方都可以使用子查询。 子查询类型 (1)使用别名。 (2)使用 IN 或 NOT IN。 (3)在 UPDATE、DELETE 和 INSERT 语句中。 (4)使用比较运算符。 (5)使用 ANY、SOME 或 ALL。 (6)使用 EXISTS 或 NOT EXISTS。 (7)代替表达式。 (1)在通过 IN 或由 ANY 或 ALL 修改的比较运算符引入的列表上操作。 (2)通过未修改的比较运算...
阅读全文
posted @ 2009-11-11 10:57
o(∩_∩)o...
阅读(451)
推荐(0)
摘要:
1、数据类型转换: (1)两种转换场合: A:当两个结果集之间的数据进行比较或联和(union)的时候,如果两个结果集的数据类型不同时必须进行转换。 B:将Transact-SQL 得结果集返回给程序中的变量时,须将结果集的类型从SQL Server数据类型转换为变量的数据类型。 (2)两种转换方式: A:自动进行的隐性转换(对于用户是不可见的)。 如:一个 smallint 变量和 int 变量比较时,将smallint 变量在比较前被隐性转换成 int 变量。 B:用户提供的显式转换(使用 CAST 或 CONVERT 函数进行显式转换)。 2、...
阅读全文
posted @ 2009-11-10 17:05
o(∩_∩)o...
阅读(840)
推荐(0)
摘要:
UNION 运算符将多个 SELECT 语句的结果组合成一个结果集。 (1)使用 UNION 须满足以下条件: A:所有查询中必须具有相同的结构(即查询中的的列数和列的顺序必须相同)。 B:对应列的数据类型可以不同但是必须兼容(所谓的兼容是指两种类型之间可以进行隐式转换,不能进行隐式转换则报错)。也可以用显式转换为相同的数据类型。 (当数据类型不同时,则根据数据类型优先级规则确定所产生的数据类型。如果类型相同,但精度、小数位数或长度不同,则根据用于合并表达式的相同规则来确定结果)(参照MSDN:数据类型优先级) C:如果为XML数据类型则列必须等价(所有列都必须类型化为 XML 架构...
阅读全文
posted @ 2009-11-10 15:34
o(∩_∩)o...
阅读(785)
推荐(0)
摘要:
六、其他的线程同步函数1、异步设备I/O异步设备I/O使得线程能够启动一个读操作或写操作,但是不必等待读操作或写操作完成。设备对象是可以同步的内核对象,可以调用WaitForSingleObject函数传递文件、套接字和通信端口的句柄。当系统执行异步I/O时,设备对象处于未通知状态。一旦操作完成,系统就将对象的状态改为已通知状态,该线程就知道操作已经完成。线程就可以继续运行。2、DWORD WaitForInputIdle(HANDLE hProcess, DWORD dwMilliseconds)使线程一直等待,直到hProcess标识的进程在创建应用程序的第一个窗口的线程中已经没有尚未处理
阅读全文
posted @ 2009-05-30 10:24
o(∩_∩)o...
阅读(197)
推荐(0)
摘要:
五、互斥对象内核对象互斥对象内核对象,能够确保线程拥有对单个资源的互斥访问权。互斥对象包含使用计数、线程ID(用于标识系统中的哪个线程当前拥有互斥对象)、递归计数器(用于指明该线程拥有互斥对象的次数)。互斥对象的行为特性与关键代码段相同,但是互斥对象属于内核对象(不同进程中的多个线程能够访问单个互斥对象,并且线程在等待访问资源时可以设定一个超时值)。而关键代码段则属于用户方式对象。互斥对象的运行速度比关键代码段要慢。互斥对象内核对象用于保护由多个线程访问的内存块。保证访问内存块的任何线程拥有对该内存块的独占访问权,这样就能够保证数据的完整性。互斥对象的使用规则:线程ID=0,互斥对象不为任何线
阅读全文
posted @ 2009-05-30 10:23
o(∩_∩)o...
阅读(145)
推荐(0)
摘要:
四、信标内核对象信标内核对象用于资源进行计数。包含:引用计数、最大资源数量(用于标识信标能够控制的资源的最大数量)、当期资源数量(用于标识当前可以使用的资源的数量)。信标的使用规则:当前资源数量大于0,则发出信标信号。0<=前资源数量<=最大资源数量1、创建信标内核对象HANDLE CreateSemaphore(PSECURITY_ATTRIBUTE psa, //安全属性LONG lInitialCount, //资源初始值(即可供使用的资源数)LONG lMaximumCount, //最大资源数量PCTSTR pszName) //命名2、其它线程打开现有信标HANDLE
阅读全文
posted @ 2009-05-30 10:20
o(∩_∩)o...
阅读(177)
推荐(0)
摘要:
三、等待定时器内核对象等待定时器,是在某个时间或按规定的间隔时间发出自己的信号通知的内核对象。通常用来在某个时间执行某个操作。创建等待定时器内核对象HANDLE CreateWaitableTimer(PSECURITY_ATTRIBUTES psa, BOOL fManualReset, PCTSTR pszName); //参数同CreateEvent当发出人工重置的定时器信号通知时,等待该定时器的所有线程均变为可调度线程。当发出自动重置的定时器信号通知时,只有一个等待的线程变为可调度线程。HANDLE OpenWaitableTimer(DWORD dwDesiredAccess, BO
阅读全文
posted @ 2009-05-30 10:19
o(∩_∩)o...
阅读(235)
推荐(0)
摘要:
二、事件内核对象事件内核对象是所有的内核对象中最基本的对象。包含一个使用计数(与所有内核对象一样) ,一个用于指明该事件是自动重置的事件还是人工重置的事件的布尔值。一个用于指明该事件处于已通知状态还是未通知状态的布尔值。事件内核对象的类型:人工重置的事件内核对象,事件得到通知时,等待该事件的所有线程均变为可调度线程。自动重置的事件内核对象,事件得到通知时,等待该事件的线程中只有一个线程变为可调度线程。事件的使用(一个线程执行初始化操作,然后通知另一个线程执行剩余操作时用得最多)事件初始化为未通知状态,然后,当该线程完成它的初始化操作后,它就将事件设置为已通知状态。这时,一直在等待该事件的另一个
阅读全文
posted @ 2009-05-30 10:17
o(∩_∩)o...
阅读(218)
推荐(0)
摘要:
进程内核对象,是一个BOOBLE值,进程运行的时候内核对象处于未通知状态(FALSE),当进程终止的时候处于已通知状态(TRUE)。当线程等待的内核对象处于未通知状态时,线程不可调度。当内核对象变为已通知状态时线程立即变为可调度状态并投入运行。可处于已通知态和为通知态的内和对象:进程、线程、作业、文件、控制台输入、文件修改通知、事件、可等待计时器、信标、互斥对象一、等待函数等待函数可使线程自愿进入等待状态,直到一个特定的内核对象变为已通知状态为止。DWORD WaitForSingleObject(HANDLE hObject, DWORD dwMilliseconds);hObject标识一
阅读全文
posted @ 2009-05-30 10:15
o(∩_∩)o...
阅读(247)
推荐(0)