日期:2014-05-16  浏览次数:20516 次

MS 数据库的使用备忘
数据库使用
一般不使用汉字作为数据库的名字,
只能使用下划线和字母开头,只能使用A_Z a_z $ # _等
在使用关键字的时候可以使用[name]来使用
这是不推荐的.

临时表
SQL Server 支持临时表。临时表就是那些名称以井号 (#) 开头的表。如果当用户断开连接时没有除去临时表,SQL Server 将自动除去临时表。临时表不存储在当前数据库内,而是存储在系统数据库 tempdb 内。

临时表有两种类型: 

本地临时表 
以一个井号 (#) 开头的那些表名。只有在创建本地临时表的连接上才能看到这些表。

全局临时表 
以 两个井号 (##) 开头的那些表名。在所有连接上都能看到全局临时表。如果在创建全局临时表的连接断开前没有显式地除去这些表,那么只要所有其它任务停止引用它们,这些表即 被除去。当创建全局临时表的连接断开后,新的任务不能再引用它们。当前的语句一执行完,任务与表之间的关联即被除去;因此通常情况下,只要创建全局临时表 的连接断开,全局临时表即被除去。
查询当前数据库所有的表
select   name   from   sysobjects   where   xtype= 'U '
Unicode 编码, 使用两个字节来表示一个字符,对汉字的支持比较好.
非unicode 是用一个字节表示一个字母,用两个字节表示汉字
Big5 支持繁体字.

Char 是定长的,余位会使用空格补全 不是unicode 最多只能使用8000个字节
Varchar 也是最多只能8000个字节,(4000个汉字,8000个字母),余位会自动回收,节省了空间如果一个字段的长度是一定的,确定是定长的要使用Char
Nchar 和nvarchat 最多只能有4000个汉字和4000个字母
Ntext 可变长度的Unicode数据,2的30次方-1,可以使用多种文字,
Text 是Unicode和,2的31次方-1 ,一般用于存放英文,处理非英文的时候可能会产生乱码
汉字是首先Unicode

Bit 0-1 超过一的数会自动减为1
Bigint -2^63_2^63-1  8字节
Int -2^31到2^31-1  4字节
Smallint -2^15_-2^15-1  2个字节
Tinyint 0-255 一个字节
把一个字符串当成一个数。来存放超级大的数。

Float[n] N是表示位数,从1到53 


Numeric (N,p) N是总位数,p 是小数点后的位数,p的默认是0,也就是即可标示整数,也可以标示小数

SQL SERVER 提供的一个时间函数 getdata()
Datatime 表示日期
Timestamp 表示时间戳

图片,image 视频 binay 但是很少使用,在sql之中只保留文件路径的存储效率更高

主键必须要有值,在部分插入的时候就要在表的后面输入添加的列名序列
主键也不能重复出现
Insert into table_name (字段列表) values(值得列表) 有一个对应的关系
在不重复的条件下,主键是可以修改的

删除全部的数据
Delete from 表名
删除指定的数据
Delete from table_name
在控制台中使用SQL server 是 SQLCMD
--第二天
外键只能是主键
外键与主键的数据类型要一致

Distinct 删除重复的行
如果处理是空的问题 isnull(“原值”,0) 如果是空就指定回0

Order by 默认是升序 asc  降序desc
--
聚合的函数是不能直接用于子查询的

尽量把能够减少结果集的操作些在SQL语句的最右边
Group by 出来的元素都需要在 select中显示出来

Having 与group by 结合使用,可以对分组查询之后的结果进行删选

Group by + having + order by
在选择列中,如果有列\表达式\和分组函数,那么这些列和表达式必须有一个出现在group by 中.否则出错

子查询表可以使用一个别名
在数据库中相当于是一个临时表
将cat 中的数据distinct 之后加入到临时表#temp中
Select distinct * into #temp from cat
Delete from cat
删除cat中的所有数据
Insert into cat from #temp
将临时表中的数据加入到cat表中
Drop #temp
删除临时表
删除表中的重复记录

左外联 指定左边的表全部都要出现,如果没有匹配的记录就是用null来填充

疯狂地复制数据
create table test
(
testId int primary key identity(1,1),
testName varchar(30),
testpass varchar(30)
)
insert into test(testName,testpass) values('sparrrow','sparrow');

insert into test(testName,testpass) select testName,testpass from test

unique ,当一个列名设置为unique之后,可以为空(null)但是只能呢个有一个行位空

一个表只能拥有一个主键,或者是一组组合主键,但是可以有多个唯一约束

create table test
(
testId int ,
testName varchar(30),
testpass varchar(30),
prinmary key (testId, testName)
)
Backup database 数据库名 to disk=’路径’