数据库SQL Server2012笔记(二)——表的管理
1、表名和列的命名规则
1)必须字母、下划线开头
2)长度不能超过128个字符
3)不要使用sql server 保留字
4)仅仅能使用字符:A~Z,a~z,0~9,$,#。_等。
2、经常使用编码
1)Unicode码:可表示英文字母和汉字,用两个字节i宝石一个字符(英文、汉字)。
2)非Unicode码:用一个字节表示一个英文字母。两个字节表示一个汉字。
3)big5
4)ISO-8859-1:欧。
5)GB2312:国标码(针对中国汉字)。
6)GBK:能够支持很多其它的汉字。
3、支持的数据类型
1)字符型
- char 定长,最大8000字符(非Unicode编码)。eg: char(10):若字符不够,自己主动补全为“空格”。
- varchar 可变长度。最大8000字符(非Unicode编码)。eg: char(10):节省空间,按需分配。
注意:若字段长度确定,选择char,查询效率高。
- ntext 可变长度,Unicode编码。最大长度为2^30-1。
- text 可变长度,非Unicode编码,最大长度2^31-1.
差别:
- ntext 多字节格式 存储 Unicode,即存储各种蚊子用。
- text 字节格式 存储 英文,也可存储中文。但有时显示乱码。
- nchar 定长,最大4000字符。(Unicode编码 )
- nvarchar 变长,最大4000字符(Unicode编码 )
特别说明:
- 一般,带有汉字的字段用nvarchar,全英文或符号选择varchar。
由于nvarchar为unicode字符集。不管汉字或字母均占两个字节;varchar。字母占一个字节,汉字占两个字节。
- nvarchar处理汉字比varchar块。
- 特殊字符用varchar。
2)数字型(范围)
- bit 0~1
- int 4个字节
- bigint 8个字节
- float 小数。不推荐使用
- numeric 小数:若存放小数。建议使用numeric
3)日期类型
- datatime(表示日期):可表示到ms级。
- timestamp(时间戳)
sql server提供专门的时间函数getdate()
4)图片
- image保存图片,但用的比較少。
- 一般用路径保存图片。在软件公司往往使用图片server和图床技术。
- 对图片有安全要求时,能够考虑放入数据库,但图片不要太大。
5)视频
- binary字段可存放,但往往将视频文件保存在文件服务器上,sql server中仅仅保留文件路径,存取效率高。
3、加入数据
1)主键必须赋值,且不能为空。主键可改动,但不能和已有反复。
2)全部字段都插入:
insert into xxx value(x,x,x)
3)插入部分字段。须要在表名后指端字段列表:
insert into xxx (字段1。字段2,...) values (xx,xx,...)
4)改动一个字段:
update 表名 set 字段名=‘新值’ where 字段名=‘值’
5)改动多个字段
6)改动含有NULL值的语句:
update 表名 set 字段名=‘新值’ where 字段名 is null
4、删除数据
1)删除所有数据:
delete from 表名
2)删除指定数据:
delete from 表名 where 字段名=‘值’ and/or 字段名=‘值’
5、表的查询
1)主键创建:
create table 表名(字段名 类型 primary key)
2)外键创建:
create table 表名(字段名 类型 foreign key references 外表名(外键名))
注:
- 外键仅仅能指向主键
- 外键和主键的数据类型一致
3)查询全部列:
select * from 表名 where 条件
4)查询指定列:
select 字段1。字段2 from 表名 where 条件
5)取消反复行:
select distinct 字段 from 表名 where 条件(distinct仅仅能消除全然一样的行。保留一行)
6)使用算数表达式。使用列的别名,别名可加引號,也可不加。且不区分单双引號:
select 表达式 [别名] from 表名
注:处理字段值为“NULL”的问题:isnull(字段名。0)
7)使用where语句
- 查找关于日期。条件加单引號。
eg: select * from 表名 where hiredate>'1982-1-1'
- between的使用:select * from 表名 where sal between 2000 and 5000
注:between——>=and<=(包含等于)
8)使用like操作符(模糊查询)
- %:表示0~多个字符
- _:表示单个字符
- eg: select * from 表名 where 字段名 like 条件
9)在where条件中用in
eg: select * from 表名 where 字段名 (值1。值2,值3)10)使用is null操作符
11)使用逻辑操作符号
12)使用order by语句默认升序:
- 默认升序
- 多个标准排序:
select * from 表名 order by 字段名 1 (asc升序/desc降序)。字段名 2 (asc升序/desc降序)
13)使用列的别名排序
select * from 表名 order by 别名
14)分页查询
浙公网安备 33010602011771号