SQL中varchar和nvarchar的基本介绍及其区别 varchar(n) 长度为 n 个字节的可变长度且非 Unicode 的字符数据.n 必须是一个介于 1 和 8,000 之间的数值.存储大小为输入数据的字节的实际长度,而不是 n 个字节. nvarchar(n) 包含 n 个字符的可变长度 Unicode 字符数据.n 的值必须介于 1 与 4,000 之间.字节的存储大小是所输入字符个数的两倍. 两字段分别有字段值:我和coffee 那么varchar字段占2×2+6=10个字节…
熟练使用SQL Server中的各种用法会给查询带来很多方便.今天就介绍一下EXCEPT和INTERSECT.注意此语法仅在SQL Server 2005及以上版本支持. EXCEPT是指在第一个集合中存在,但是不存在于第二个集合中的数据. 就是两个集中不重复的部分.例如SELECT * FROM AEXCEPTSELECT * FROM B这个的意思是,凡是不出现在B表中的A表的行 INTERSECT是指在两个集合中都存在的数据. 就是两个集中共同的部分.例如SELECT * FROM AIN…
union  操作符用于合并两个或多个 SELECT 语句的结果集,并且去除重复数据,按照数据库字段的顺序进行排序. 例 SELECT NAME FROM TABLE1UNIONSELECT EMP_NAME FROM TABLE2; union all 操作符用于合并两个或多个 SELECT 语句的结果集,不去除重复数据,不排序. 例 SELECT NAME FROM TABLE1UNION ALLSELECT EMP_NAME FROM TABLE2; 总结 需要连接的表的列名可以不一样,但…
0x00 建表准备 相信很多人在刚开始使用数据库的INNER JOIN.LEFT JOIN和RIGHT JOIN时,都不太能明确区分和正确使用这三种JOIN操作,本文通过一个简单的例子通俗易懂的讲解这三者的区别,希望对大家能带来帮助. 首先,我们创建示例数据库和表.同时也要明确一个概念:A INNER/LEFT/RIGHT JOIN B操作中,A表被称为左表,B表被称为右表. 创建示例数据库school,在数据库school下创建两张示例表:STUDENT.PUNISHMENT. 创建学生基本信…
select UserName as 用户名,PassWord as 密码 from user 与 select UserName 用户名,PassWord 密码 from user 中as用于不用的区别 可以省略,是没有任何问题的.要说有点区别的话,加上as可读性会好一点,尤其是比较长的sql语句,这样就不会显得混乱吧. ---------------------------------------------------------------------------------------…
执行效果: 1.  count(1) and count(*) 当表的数据量大些时,对表作分析之后,使用count(1)还要比使用count(*)用时多了! 从执行计划来看,count(1)和count(*)的效果是一样的. 但是在表做过分析之后,count(1)会比count(*)的用时少些(1w以内数据量),不过差不了多少.  如果count(1)是聚索引,id,那肯定是count(1)快.但是差的很小的. 因为count(*),自动会优化指定到那一个字段.所以没必要去count(1),用c…
if() 把salary表中的女改成男,男改成女: update salary set sex = if( sex = '男','女','男'); if(true,a,b),  if(false,a,b) 这个就是第一个如果是true,就等于a,false就等于b,有点像三元表达式 ifnull(null, a),ifnull(a,b),    ifnull里有两个数,如果第一个不是null,是a非null,就都等于a, 如果a=Null,就都为a. eg: SELECT IFNULL(NULL…
连接式指的是对数据的操作在 conn.Open() 与 conn.Close()之间: 断开式连接指的是 conn.Open()打开连接之后,先将数据放入adapter中,然后关闭连接(conn.Close()),接着利用adapter对数据进行操作. 连接式: sqlConn.Open(); SqlDataReader dr=sqlComm.ExcuteReader(); while(dr.Read()) { for (int i=0; i<dr.FieldCount; i++) { Cons…
通俗来讲: 听名字就知道区别了 表值函数返回的是一张表结果,就和一个select查询语句一样,只不过里面带入了参数或者很复杂:标量值函数返回的只是一个值 一 .表值函数又分为内联函数与多语句函数 (1)内联函数就是没有函数主体表是单个 SELECT. 下面是一个不带输入参数的表值函数 create function tvpoints() returns table as return ( select * from tb_users ); 调用-这个结果返回的是一张表: select * fro…
count(*)和count(列)根本就是不等价的,count(*)是针对于全表的,而count(列)是针对于某一列的,如果此列值为空的话,count(列)是不会统计这一行的. 也就是说count(列)会用到索引,并且会过滤掉该列为null的那行. 而count(*)是全表扫描,并且只要某一条数据有一列不为null,那就会统计到这条数据. count(1)可以理解为表里有一列数据都为1的列. count(*),执行时会把星号翻译成字段的具体名字,效果也是一样的,不过多了一个翻译的动作,比固定值的…