SQL Server基础

1.特点:

(1).综合一体,集DDL,DCL,DML语言于一体,可以独立完成数据库生命周期中的全部活动,包括定义关系模式,录入数据以及建立数据库、查询、更新、维护、数据库重构、数据库安全性控制等一系列操作要求,在数据库投入运行后,还可以根据需要随时修改模式,既不影响数据库的运行,又使系统具有良好的可扩充性。

(2).

DML 数据操纵语言

​ Insert 插入 insert into 表名 (列,列,…) values (对应的值,对应的值)

​ Update 更新 update 表名 set 列名=值, 列名=值 where 条件

​ Delete 删除 delete from 表名 where 条件
DDL 数据定义语言 创建数据库及其对象 Create/Alter/Drop Database/Table/View/Proc/Index
DCL 数据控制语言 用于授予或回收访问数据库某种特权,对数据实行监视等 commit 提交 rollback 回滚 grant 授权

(3).非过程性

只需指明做什么,而不必指明怎么做,因此无需了解存取路径

(4).既是自含式语言,又是嵌入式语言

(5).面向集合的操作方式

查找结果可以是元组的集合,而且一次插入、删除、更新操作的对象也可以是元组的集合

T-SQL:Transact-SQL 基于SQL(Structured Query Language) 结构化查询语言,用于应用程序和数据库之间沟通的编程语言。Sql Server 支持的,脚本语言。SQL语言:一种有目的的编程语言,用于存取数据、查询、更新和管理关系数据库,高级的非过程化的编程语言。作用:可以完成移植,提高数据访问效率,完成对数据的相关处理。

2.数据库的数据类型

数值型
int 4个字节(-2147483648~2147483647)
smallint 2个字节(-32768~32767)
tinyint 1个字节(0-255)
二进制型
bit 一个字节,存储0/1/null的二进制字段
binary 固定长度的二进制数据,最多8000字节
varbinary(n) 可变长度的二进制数据,最多8000字节
varbianry(max) 可变长度的二进制数据,最多2GB字节
image 可变长度的二进制数据,最多2GB字节
浮点型
float 近似数值,存在精度损失,可存储153的可变精度的浮点值(124占用4字节存储空间,25~53占用8字节存储空间)
decimal 精确数值,不存在精度损失,最大精度38。decimal(p,q),默认(18,2)1<=p<=38,0<=q<=p
real 近似数值,存在精度损失,最大精度38,占用4个字节
货币型
smallmoney 精确到小数点后4位,占用4位存储空间
money 精确到小数点后4位,占用8位存储空间
字符串型
char(n) 每个字符1个字节存储空间,可存储1~8000个定长字符串,字符串长度为n
varchar(n) 可变长度的字符串,最多8000字节
varchar(max) 可变长度的字符串,最多1073,742,824字节
text 可变长度的字符串,最多2GB字节
unicode字符串
nchar(n) 每个字符2个字节存储空间,可存储1~4000个定长字符串,字符串长度为n
nvarchar(n) 可变长度的字符串,最多4000字节
nvarchar(max) 可变长度的字符串,最多1073,742,824/2字节
ntext 可变长度的字符串,最多2GB字节

前面带n的,存储中文汉字、英文、数字,1个长度存储大小为2个字节,不带n,中文1个长度,英文2个长度,容易乱码

日期型
datetime2
精度更高,100纳秒 ,6-8字节
datetime 0.00333s,8字节
smalldatetime 精度1分钟,时间范围小,4个字节
date 仅仅存储日期,1天,3个字节
time 仅仅存储时间,100ns,3-5个字节

3.数据库常用对象

数据库常用对象:

1.表 包含数据库中所有数据的对象,行和列组成 ,用于组织和存储数据。

2.字段 表中的列 一个表可以有多个列,自己的属性:数据类型(决定了该字段存储哪种类型的数据),大小(长度)

3.视图 (虚拟表)一张或多张表中导出的表用户查看数据的一种方式,结构和数据是建立在对表的查询基础之上的。

4.索引 为了给用户提供一种快速访问数据的途径,索引是依赖于表而建立,检索数据时,不用对整个表进行扫描,可以快速找到所需的数据。

(普通索引、唯一索引、候选索引、聚集索引、非聚集索引)

5.存储过程 是一组为了完成特定功能的SQL语句的集合(可以有查询、插入、修改、删除),编译后, 存储在数据库中,以名称进行调用, 当调用执行时,这些操作就会被执行。

6.触发器 在数据库中,属于用户定义的SQL事务命令集合,针对于表来说,当对表执行增删改操作时,命令就会自动触发而去执行。

7.约束 对数据表的列,进行的一种限制。可以更好的规范表中的列。

8.缺省值 对表中的列可以指定一个默认值,当进行插入时,如果没有为这个列插入值,那么就会自动以预先设置默认值进行自动补充。

9.用户 管理员用户(可以对数据库进行修改删除),普通用户(只能进行查看)

10.图表 数据库表之间的关系示意图,利用它可以编辑表和表之间的关系

4.创建表及主外键

1.工具创建表 列 数据类型 是否null

一个表中,会存很多条记录,需要一个列来唯一标识一条数据。
主键:唯一标识一条数据值 ,不能重复 不能为空

标识列:一个列设置成标识列,它就不能再手动插入,插入时,自动生成的。这个列,类型必须是不带小数的数值型整型
标识列:标识种子 第一条记录标识列的值 100 增量 3 delete 删除了数据,再插入,就会出现不连续,transact连续,但慎用

2.创建主键 联合主键 唯一标识

​ 创建一个主键,同时自动创建了一个聚集索引

3.创建外键:

一般在两个表之间要建立关联时候,创建一个列创建为外键,它在另一个表必须是主键
外键:DeptId UserInfos 外键表 DeptInfos 主键表

两个表一旦建立外键关系,外键表里的对应的外键列,它的值必须是它对应的主键表里的主键值,如果你想插入一个主键中不存在 的值,你是插入不进去的。一个表里可以有多个外键,也可以没有,一个表只能有一个主键,也可以没主键,但一般都会设置一个主键。

5.数据库约束

1.约束定义:规定表中的数据规则。如果存在违反约束的数据行为,行为就会被阻止。在什么时候可以创建约束呢?使用软件创建,创建表之后, 使用脚本创建表:可以在创建的过程中,也可以在创建后再来建立约束。

2.分类

主键 Primary Key约束 唯一性、非空,不能修改外键

Foreign Key约束 加强两个表的一列或多列数据之间的连接的。 先建立主表的主键,然后再定义从表中的外键。只有主表中的主键才能被从表用来作为外键使用。主表限制了从表更新和插入的操作。当删除主表中的某条数据,应该是先删除从表中相关的数据,再删除主表

Unique约束 唯一性约束 确保表中的一列数据没有相同的值。与主键约束相似,但又不同。主键只能有一个,但一个表中可以定义多个唯一约束。唯一键可以为NULL,但主键不可以

Check约束:通过逻辑表达式来判断数据的有效性,用来限制输入一列或多列的值的范围

Default约束:默认值约束。用户在插入新的数据行时,如果该行没有指定数据,那么系统将默认值赋给该列,如果没有设置默认值,系统就会默认为NULL。

6.创建数据库

数据库

​ 系统数据库 记录所有系统级信息,如master,还记录所有其他数据库的存在,数据库文件的位置,SQL的初始化信息

​ 用户数据库:示例数据库和用户创建的数据库

​ 创建数据库的时候要使用master数据库

​ use master --选择要操作的数据库

​ go–批处理命令–

数据库的物理存储结构:以文件的形式存储在磁盘中

数据库文件

​ 主数据文件----.mdf,只能有一个,至少要有一个

​ 次要数据文件-----.ndf,主数据库文件存不下,就可以用他存,可以没有,可以多个

​ 事务日志文件-----.ldf,至少要有一个,记录了每一个事务的开始、改变和取消

数据库文件组

(一个文件只能存在于一个文件组,一个文件组也只能被一个数据库使用)

​ 主文件组 包含主数据文件和未指定组的其他文件

​ 用户自定义的文件组 首次创建数据库或以后修改数据库时明确创建的任何文件组

文件组中只能包含数据文件,日志文件不属于任何文件组,文件组中的文件不自动增长,除非文件组中的文件都没有可用空间、

创建数据库
create database TestNewBase --数据库名称 

on primary --主文件组,如果没有指定主文件,那么脚本开始的第一个文件为主文件

 ( 

 name=TestNewBase,--数据库主要数据文件的逻辑名

 filename=**'**D:\课件\DBase\TestNewBase.mdf**'**,--主要数据文件的路径(绝对路径)

 size=5MB,--数据库主要文件的初始大小,未指定的话,将与model文件大小相同

maxsize=unlimited,未指定将增长到磁盘变满

 filegrowth=1MB--文件的增量,若未指定MB、KB、%,则默认为MB

 ) 

Filegroup Exe4_2Group1

{

name=TestNewBase1,

filename='D:\课件\DBase\TestNewBase1.mdf\',

size=5MB,

maxsize=unlimited,

 filegrowth=1MB

}---创建数据库的同时,创建了文件组

log on --创建日志文件,如果没有指定,将自动创建,数据文件大小为综合的25%或512KB,取两者中的较大者

( 

name='TestNewBase_log',--数据库日志文件的逻辑名

 filename='D:\课件\DBase\TestNewBase_log.ldf',--日志文件的路径(绝对路径)

 size=1MB,--数据库日志文件的初始大小 ,未指定的话,大小为1MB

maxsize=unlimited,未指定将增长到磁盘变满

filegrowth=10%--日志文件的增量,若未指定MB、KB、%,则默认为MB

 )

 go

注意:以上go语句不是T-SQL中的一个语句,而是可为SQL查询编辑器识别的命令,它用来通知执行go之前的多个SQL语句
删除数据库

-------可以一次删除一个或多个数据库

drop database TestNewBase 

go
修改数据库
Alter DataBase xxxx

Add flie

(

name=

filename=

size=

filegrowth=

)

///

Alter DataBase xxxx

remove file---------删除文件描述和物理文件

(

name=

filename=

size=

filegrowth=

)

Alter DataBase xxxx

modify flie------------修改给定文件的属性

(

name=     ,--选择文件

filename=                        ----------------进行修改

size=                    对现有文件进行修改,指定容量的大小必须大于当前容量的大小

filegrowth=

)

//

Alter DataBase xxxx

modify name=xxxxxx------------修改数据库的名字

注意:应确保除了自己之外没有人现在在使用该数据库,才可以进行名字的修改

//

Alter DataBase xxxx

Add filegroup xxxx----文件组之前没有

go

Add flie

(

name=

filename=

size=

filegrowth=

)

to  filegroup xxxx

//

Alter DataBase xxxx

Add flie

(

name=

filename=

size=

filegrowth=

)

to  filegroup xxxx-----文件组已有



Alter DataBase xxxx

modify  filegroup xxxx default---将其设置为默认文件组

remove  filegroup xxxx-----从系统中删除文件组

===============================================================

Alter DataBase xxxx

Add  log flie

(

name=

filename=

size=

filegrowth=

)

===================================================================

分离数据库(少用)
sp_detach_db'xxxxxxxx'

将其从SQL服务器中分离出去

附加数据库(少用)

—将数据文件添加到服务器中

use master

go

create database xxxx

on

(

fliename
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值