1、sql numberic(m,n) m是总位数 n 是小数位 identity(1,1)自动从1开始编号插一行系统自动加1
2、grant all privileges(所有权限) on *.*(所有数据库) to monty(用户名) @ localhost identified by 'somthing' with grant option(通过something 密码登录,并可以将自己的权限授予他人)
3、分页的两个语句,都是带有condition的
/// <summary>
/// sql语句构造
/// </summary>
/// <param name="fieldlist">查询字段列表</param>
/// <param name="condition">条件</param>
/// <param name="pkey">主键</param>
/// <param name="tablename">表名</param>
/// <param name="sort">排序:0表示降序,1表示升序</param>
/// <param name="pagesize">每页大小</param>
/// <param name="cpage">当前页码</param>
/// <returns></returns>
降序
sql = "select top " + pagesize.ToString() + " " + fieldlist + " from " + tablename + " where " + condition + " and " + pkey + " <(select min(sortc) from (select top " + (pagesize * (cpage - 1)).ToString() + " " + pkey + " as sortc from " + tablename + " where " + condition + " order by " + pkey + " desc " + " ) as sorttable ) order by " + pkey + " desc ";
sample:select top 15 ID from db_user where ID <10000 and ID <(select MIN(sortc) from (select top 15 ID as sortc from db_user where ID<10000 order by ID desc )as sorttable ) order by ID desc
升序
sql = "select top " + pagesize.ToString() + " " + fieldlist + " from " + tablename + " where " + condition + " and " + pkey + " >(select max(sortc) from (select top " + (pagesize * (cpage - 1)).ToString() + " " + pkey + " as sortc from " + tablename + " where " + condition + " order by " + pkey + " asc " + " ) as sorttable ) order by " + pkey + " asc ";
sample:select top 15 ID from db_user where ID <10000 and ID >(select MAX(sortc) from (select top 15 ID as sortc from db_user where ID<10000 order by ID asc )as sorttable ) order by ID asc
4、添加约束 alter table tablename add constraint 约束名 unique(id,id1)
5、sql语句去掉重复列
Select Top 15 columnName,max(ID) as ID from tableName Group By columnName Order By ID Desc
6、对于自增量标识的获取
select SCOPE_IDENTITY()
返回上面操作的数据表最后row的IDENTITY 列的值;
返回插入到同一作用域中的 IDENTITY 列内的最后一个 IDENTITY 值。一个作用域就是一个模块——存储过程、触发器、函数或批处理。因此,如果两个语句处于同一个存储过程、函数或批处理中,则它们位于相同的作用域中。
SELECT @@IDENTITY
返回上面操作最后一个数据表的最后row的IDENTITY 列的值;
创建表:

插入数据:

存储过程:




IDENT_CURRENT 返回为任何会话和任何作用域中的特定表最后生成的标识值。
@@IDENTITY 返回为当前会话的所有作用域中的任何表最后生成的标识值。
SCOPE_IDENTITY 返回为当前会话和当前作用域中的任何表最后生成的标识值。(防止返回触发器中的insert的IDENTITY值)
用前两个可能会有并发问题
而且 注意写法,不要写SELECT @id = SCOPE_IDENTITY() FROM tb 而用SELECT @id = SCOPE_IDENTITY()
下面是例子
SQL code
SET NOCOUNT ON;
INSERT INTO TB(COL) VALUES ('TEST');
SELECT SCOPE_IDENTITY()
7.C
在查询分析器中执行下面语句可以得到SQL Server中支持的所有排序规则
select * from ::fn_helpcollations()
8.任何时候,会话中只有一个表的 IDENTITY_INSERT 属性可以设置为 ON。如果某个表已将此属性设置为 ON,并且为另一个表发出了 SET IDENTITY_INSERT
ON 语句,则 Microsoft SQL Server; 返回一个错误信息,指出 SET IDENTITY_INSERT 已设置为 ON 并报告此属性已设置为 ON 的表。
如果插入值大于表的当前标识值,则 SQL Server 自动将新插入值作为当前标识值使用。 SET IDENTITY_INSERT 的设置是在执行或运行时设置,而不是在分析时设
置。
强行往标志列中插入值只会破坏表中数据的唯一性
建议不包括标志列字段插入:(假设field1为标志列)
insert into wzgl2004..kc(field2,field3...) select (field2,field3,...) from wzgl2003..kc
9、
在SQL Server的数据库中,经常出现:
ON PRIMARY
TEXTIMAGE_ON PRIMARY
之类的短语。
这是什么意思呢?
这其实是指定数据库对象建在什么文件空间中,PRIMARY是指主文件。
对于小的数据库表,不必要考虑优化问题。
大的数据库,如果将所有内容,都放在一个空间中,可能会引起效率、管理等问题。
那么我们就多建立一些文件空间,将索引、TEXT、IMAGE等内容,分别放在不同的空间中,这样势必会优化管理,提高执行效率。
10、IGNORE_DUP_KEY = OFF的作用是在向表中插入数据的时候,如果遇到表中已经存在主键的值,insert语句就会失败,并且回滚整个insert语句
11、在写存储过程的时候,变量需要进行初始化