1. char
固定长度,最长n个字符。
2. varchar
最大长度为n的可变字符串。
(n为某一整数,不同数据库,最大长度n不同)
char和varchar区别:
varchar必char节省空间,但在效率上比char稍微差一些。
说varchar比char节省空间,是因为varchar是可变字符串,比如:用varchar(5)存储字符串“abc”,只占用3个字节的存储空间,而用char(5)存储,则占用5个字节(“abc ”)。
说varchar比char效率稍差,是因为,当修改varchar数据时,可能因为数据长度不同,导致数据迁移
3. nvarchar
nvarchar和varchar的不同主要是在对于数据的存储方式上:
1). varchar:按字节存储数据
varchar(6),最多能存储6个字节的数据,比如:“哈哈哈”,“abcdef”......
备注:一个中文字符在数据库里占多少个字节,要看unicode的编码方式,比如:utf8在mysql上占3个字节,sqlserver的Chinese_PRC_CI_AS占2个字节...
2). nvarchar:按字符存储数据
nvarchar(6),最多能存储6个字符/中文数据,比如:"哈哈哈哈哈哈",“abcdef”......
nvarchar(m)最大存储的实际字节长度=n*m(n跟据编码方式而定),如果nvarchar存储的是英文字符,也是根据编码方式存储n的字节长度。也就是说,如果用nvarchar存储英文字符,会浪费一半以上的存储空间.
在大数据量应用中,使用char和nvarchar有可能导致大量的存储空间的浪费
varchar(n)
长度为 n 个字节的可变长度且非 Unicode 的字符数据。n 必须是一个介于 1 和 8,000 之间的数值。存储大小为输入数据的字节的实际长度,而不是 n 个字节。
nvarchar(n)
包含 n 个字符的可变长度 Unicode 字符数据。n 的值必须介于 1 与 4,000 之间。字节的存储大小是所输入字符个数的两倍。
两字段分别有字段值:我和coffee
那么varchar字段占2×2+6=10个字节的存储空间,而nvarchar字段占8×2=16个字节的存储空间。
如字段值只是英文可选择varchar,而字段值存在较多的双字节(中文、韩文等)字符时用nvarchar
上面是一个总结介绍,通过上面的介绍,可以知道。
varchar(4) 可以输入4个字符,也可以输入两个汉字
nvarchar(4) 可以输四个汉字,也可以输4个字母,但最多四个
增
insert into table1 values('fx','fy')
insert into table1(username,passworld) values('admin','123456')
insert into table1 select *from table2
删
delete from table1
delete from table1 where carno=001
改
update table1 set name='abc',passworld='123456' where userid=001
查
select * from table1 where carid=001 order by updatetime desc
select * from table1 where carid like '%001%' order by updatetime ASC
select top 10 number,fx,fy from table1 order by updatetime desc
select top 10 * from table1 where carid=001 order by updatetime desc
select top 10 * from table1 order by updatetime desc
selcet * from table1 where carno in ('001','002','003') and updatetime >=23:12:56
select * from table1 where carno between 001 and 002
select * from tbRegUsers where sNickName='sggn' and sPassword='sggn'
select id ,name from table1
触发器的使用
建立更新触发器
create trigger up_table on student
for update
as
if update(name)or update(sex)
begin
update student2
set username=student.name,usersex=student.sex
from inserted student
where student.sno=student2.Id
end
删除触发器
drop trigger up_table2
更新后两个表的字段都更新
update student set name='wer' where sno=2
建立插入触发器
create trigger in_table on student
for insert
as
begin
insert into student2(username,usersex) select name,sex
from inserted student
end
插入后两个表额字段都插入了数据
insert into student(sno,name,sex) values(3,'sggn','男')