最近打算从头再仔细学习一下微软的Sql Server数据库,根据学习进度在博客上同步学习笔记,中间的有些内容可能只是一点而过,具体内容随着学习的深入会继续完善,欢迎大家一起学习并指导。
MSSql Server数据库的知识
前面之所以加上MS,是因为这是微软的Sql Server,我们通常说的时候会把前面的MS给省略掉,推荐带上,这表示你对Sql Server的来由比较清楚。
各种数据库的比较
oracle数据库的性能是做好的,但是是收费的,而且用户体验不好,不容易操作
sql server数据库是针对于windows系统的数据库,不能跨平台
mysql 使用范围不是很广,可以跨平台,是一款开源的软件,适用于php java等语言
access数据库是微软的一个简单的稳健型数据库
Management studio 只是一个很好的用户界面(就像微软的UI界面),最终的操作还是要转换为sql脚本到数据库服务器上执行(最终还是转换为微软的底层操作命令去执行)
DBMS:数据库管理系统
实例与DBMS的关系
两者是相等的关系
每个实例就是一个数据库管理系统
在一个服务器上安装多个实例是为客户设置权限(与用户权限设置的区别)
主键:primary key 用来为唯一标示表中的一行 可以由多列组成表中的主键
主键的四种:
1:业务主键
有实际意义的列(如用身份中号码作为用户的主键,但是身份中号码是可能重复的)不推荐使用
2:逻辑主键(自动增长的列)推荐使用,当语句执行失败的时候仍然可能自增
3:单列主键:是业务之间和逻辑主键的结合体 推荐使用
4:组合主键
A、B 大学区分一个学生(不推荐使用)
如何选择主键
1、选择稳定的列(选择家庭住址的话 家庭住址可能会变化 而且地址的大小不是固定的 不好控制)
2、绝对不能重复的列
3、主键不能为空
4、尽量使用单列作为主键
5、尽量不要使用具有实际意义的列作为主键
主键id与guid的区别
如果采用id主键,可能造成不同表之间主键的重复,在表间操作时会造成混乱。而guid是根据我们的电脑的Mac地址等多种内容生成的,能保证全球的唯一。
外键
来由:避免数据存储的冗余
定义:另一个表格中定义的一个列是其中一个表中的主键
MSSql Server管理
Management studio 只是一个可视化的管理界面
1、启动服务(services.msc快速启动)
2、启动Management studio
3、选择何种登陆方式
(1)windows身份验证是还是sql server身份验证(需要用户名、密码)具有windows操作权限的账户都可以进行windows身份验证登陆(未分配sql server账户的可以进行添加 忘记用户名、密码的账户也可以进行修改)
数据库的建立以及表格的创建
1、char与varchar区别
简单点说就是一个是可变的,一个是不可变的。如果确定某个字段的大小建议使用char,如果不确定大小推荐使用varchar
2、nchar与nvarchar区别
数据库中,英文字符只需要一个字节存储就足够了,但汉字和其他众多非英文字符,则需要两个字节存储。如果英文与汉字同时存在,由于占用空间数不同,容易造成混乱,导致读取出来的字符串是乱码。Unicode字符集就是为了解决字符集这种不兼容的问题而产生的,它所有的字符都用两个字节表示,即英文字符也是用两个字节表示。而前缀n就表示Unicode字符,比如nchar,nvarcha。nchar是可变的,nvarchar是不可变的
3、修改表结构不能保存时修改工具->选项->designer->去掉组织保存创建表的修改
4、数据库的分离、附加、脱机
5、拒绝访问问题(添加权限(右击属性->添加一个新的用户或者为当前用户添加权限读写))
5、版本的兼容性问题
高版本附加到低版本中时,最好是先生成脚本语言
sql 脚本
执行sql语言的命令
sql 不区分大小写
sql字符串使用单引号
sql判断两个数据是否相等使用的是单等号
--创建数据库
create datebase testDB on primary
{
}
log on{
}
--创建表
use testDB
create table user
{
}
go命令:
只能适用于management studio 用于分段向sql server服务器发送命令
[]作用
1、数据库对象、表明、列明可以使用[]括起来,防止关键字的冲突。如int是系统关键字,[int]就可以避免与系统的关键字冲突
2、对象名之间有空格时,可以使用[]括起来
删除表、数据库
drop database 数据库名称
drop table 表名
修改表
alter table 表名
--删除表列
alter table Student
drop column Uname
--添加表列添加列的时候不需要再指定column
alter table Student
add Uname varchar(10) not null
--修改表结构的时候一定要注意到是否会影响到原来表中的数据
--修改列名
alter table Student
alter column Uname varchar(20) not null
--注意主键还有名字(主键名字就是主键的一个引用)
--添加主键(为某一列添加约束)
alter table dbo.[Student] add constraint
FK_Student_Uid primary key(Uid)
--把Uid列与主键关联起来
--删除主键(删除主键的引用就可以删除主键了)
alter table dbo.[Student]
drop constraint FK_Student_Uid
对数据库的任何操作都可以进行脚本预言的生成,通过脚本语言,可以了解具体的执行过程