0%

杂乱笔记2

1
2
3
4
5
 string.Empty; 
//String.Empty是string类的一个静态常量;
//string.Empty只是让代码好读,防止代码产生歧义
//如果判断一个字符串是否是空串,使用
//if(s==String.Empty)和if(s==””)的效率是一样的,但是最高效的写法是if(s.Length==0)

析构函数

首先析构函数的基本形式如下:

~ 标识符(就是类名啦) { /* 析构函数体 */ }

说明几点:

析构函数不能有程序显示的调用,是由系统在释放对象之前调用。
析构函数在C#中充当鸡肋的作用,因为C#有垃圾回收器清理资源。
析构函数是在垃圾回收器回收对象的空间之前调用的,最终会调用 System.Object的 Finalize()方法。
觉得析构函数也啥可说的,C#其实提供了 Dispose()和Close()方法来回收内存,三者的区别就如下啦:

1
2
3
4
5
6
7
8
public class ResourceHolder 
{
......
~ResourceHolder()
{
// 这里是清理非托管资源的用户代码段
}
}

SQL中PK、UK、DF、CK、FK的意思

PK 主键

1
constraint primary key

UK 唯一约束

1
constraint unique key

DF 约束默认

1
constrint default for

CK 检查约束

1
constraint check()

FK 主外键关系

1
constraint foreign references

SQL 检查约束整理

运算符:对于所有的运算符,可分为单目运算符和双目运算符。
目:操作数

一、数学运算符:+ - * / %

+5 -8
4+5 8-89
数学运算的结果仍是一个数字。

二、比较运算符:

< <= >= = (!= <>)
比较运算符都是双目运算符。
比较运算的结果是一个布尔值,即真或假,两者必居其一。

三、逻辑运算符:

and or not // && || !也叫逻辑运算的“与、或、非”运算。
三个逻辑运算符的操作数必须是布尔值。
三个运算符中,其中and和or 运算符是双目或多目,而not为单目

cheeck语句例子

1.检查只能是男或者女

add const ck_sex check(sex in(‘男,女’)),

add const ck_sex check(sex =’男’ or sex =’女’)

2.在一个范围中间

constraint ch_age check(sage>0 and sage<120),

add const ck_age check(age between 12 and 30)

3.长度大于某个值

add const ck_lenght check(len(lenght)>6)

4.数大于某个值

add const ck_number ckeck(number>1)

5.只能是8位字符,前两位是 0 ,34位为数字,第 5 位为下划线,68位为字母

alter table 表名

add constraint chkk check((字段 like ‘00[0-9][0-9]/_[a-z,A-Z][a-z,A-Z][a-z,A-Z]%’ escape ‘/‘)and(len(字段)=8) )

或者是

alter table 表名

add constraint chkk check((字段 like ‘00[0-9][0-9][_][a-z,A-Z][a-z,A-Z][a-z,A-Z]%’)and(len(字段)=8) )

6.电子邮箱要含有@符号

check(字段like ‘%@%’)

7.SQL中用check约束一列的首字母为’s’

check(col1 like ‘s%’)

8.检查约束前3位和后8位均为数字字符:

check(col2 like ‘[0-9][0-9][0-9]%[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]’)

9.如何建立检查身份证的约束,身份证是18位,最后一位还有可能是X

select 身份证号 from 表名

where len(身份证号) = 18 and (right(身份证号,17) like ‘[0-9]’or right(身份证号,17) like ‘x’)

10.如何设置区号由0-9之间的数字组成

CONSTRAINT quhao CHECK (quhao LIKE ‘[0-9][0-9][0-9]’

or quhao LIKE ‘[0-9][0-9][0-9][0-9]’or quhao LIKE ‘[0-9][0-9][0-9][0-9][0-9]’));

解释: 其中quhao LIKE ‘[0-9]…[0-9]’的号码由表示n位从0到9中的数组成。

quhao LIKE ‘[0-9][0-9][0-9]’ 表示3位的区号,如北京010;quhao LIKE ‘[0-9][0-9][0-9][0-9]’表示4位的区号,如三门峡0398; quhao LIKE

‘[0-9][0-9][0-9][0-9][0-9]’表示5位的区号,如香港00852

11.最后回复时间 TLastClickT 发贴时间 TTime

最后回复时间 必须晚于 发贴时间 并且小于等于当前时间 使用GetDate()函数获取当前时间

设计表

在TLastClickT上右击

选择约束,新建,填入

([TLastClickT] > [TTime] and [TLastClickT] < GetDate())

或者

TiastReply(回帖时间)大于Ttime(发帖时间)在创表的同时

创建表的时候应该还没有回帖吧,为什么要用默认值?

可以添加一个约束 alter table topic alter column add check(TlastReply is null or TlastReply > Ttime)

12.定义前八位为数字或者 -

一共是15位,为CHAR型

alter table 表名

add constraint chk check(字段 like’[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]%’),

constraint chklen check(len(字段)=15)

13.如何限制varchar字段不允许出现单引号的检查约束 !!!

设表为TALBENAME,不能有引号的字段为FIELDNAME 则:

ALTER TABLE tablename ADD CONSTRAINT CK_fieldname CHECK (not fieldname like ‘%’’%’)

14.在表中的某列中通过检查约束,让其有某些固定的值

check(sid like ‘bd[0-9][0-9][0-9][0-9][0-9][0-9]’)

add const ck_num check(num like ‘[1][2] [4][_] [0-9][0-9] [0-9][a-z]’)

15.如何限制varchar字段不允许出现字符串的检查约束 !!!

设表名为TABLENAME,VARCHAR类型的字段为VAR_FIELD.则有:

ALTER TABLE [dbo].[TABLENAME] ADD CONSTRAINT [CK_TABLENAME] CHECK (isnumeric([VAR_FIELD]) = 1)

这样,在VAR_FIELD只要出现字段一旦出现非数字内容就会报告错误。

16.电话号码的格式必须为xxxx-xxxxxxxx或手机号11位

alter 表名 add constraint ck_字段名 check (字段 like ‘[0-9][0-9][0-9][0-9]_[0-9]……’ or len(字段)=11)

17.身份证号是18位且唯一的

alter 表名 add

constraint ck_字段名 check (len(字段名)=18 ),

constraint uk_字段名 unique(字段名)

sqlserver的四种分页方式

第一种:ROW_NUMBER() OVER()方式

1
2
3
4
5
6
select * from ( 
    select *, ROW_NUMBER() OVER(Order by ArtistId ) AS RowId from ArtistModels
  ) as b

where RowId between 10 and 20
  ---where RowId BETWEEN 当前页数-1*条数 and 页数*条数---

第二种方式:offset fetch next方式(SQL2012以上的版本才支持:推荐使用 )

1
2
3
select * from ArtistModels  order by ArtistId offset 4 rows fetch next 5 rows only
--order by ArtistId offset 页数 rows fetch next 条数 rows only --

第三种方式:–top not in方式 (适应于数据库2012以下的版本)

1
2
3
4
5
select top 3 * from ArtistModels 
where ArtistId not in (select top 15 ArtistId from ArtistModels)

------where Id not in (select top 条数*页数 ArtistId from ArtistModels)

第四种方式:用存储过程的方式进行分页

1
2
3
4
5
6
7
8
9
10
11
12
13
14
CREATE procedure page_Demo
@tablename varchar(20),
@pageSize int,
@page int
AS
declare @newspage int,
@res varchar(100)
begin
set @newspage=@pageSize*(@page - 1)
set @res='select * from ' +@tablename+ ' order by ArtistId offset '+CAST(@newspage as varchar(10)) +' rows fetch next '+ CAST(@pageSize as varchar(10)) +' rows only'
exec(@res)
end
EXEC page_Demo @tablename='ArtistModels',@pageSize=3,@page=5

sql重置标识符

imgDBCC CHECKIDENT (‘table_name’, RESEED, 0)