SQL Server数据库基础

一、安装SQL Server数据库

setup.exe->安装->全新SQL Server独立安装或向现有安装添加功能->输入序列号->下一步->默认实例->混合模式->输入sa密码->实例账号添加当前账号即可。

如果想要其他机器访问这台机器的sqlserver,需要使用windows防火墙中的入站规则,端口写1433.

二、SQL Server配置管理器

包含各个sql服务,连接数据库时,务必保证sql server服务已开启.

三、系统数据库

1、master数据库

主系统数据库,丢失该库,sqlserver将无法启动。

2、tempdb数据库

用来创建临时对象,包括临时表,存储过程,表变量,全局临时表以及游标等。

3、model数据库

sqlserver实例中创建的全部数据库的模型。

4、msdb数据库

主要用于sqlserver代理的支撑后台。

5、resource数据库

资源数据库,隐藏的制度数据库。主要用于改进sqlserver版本升级时的进程功能。

6、distribution数据库

分发数据库,只有将实例配置为复制的分发者时,该库才存在。复制中所有的元数据与各种类型的历史记录都存储在此数据库中。

四、数据库的组成

数据库主要由文件和文件组组成。数据库中的所有数据和对象(表、存储过程和触发器等)都被存储在文件中。

1、文件

主要数据文件:存放数据和数据库的初始化信息。每个数据库只有一个主要数据文件,默认扩展名是.mdf。
次要数据文件:存放除主要数据文件意外的所有数据文件。有些数据库可能没有次要数据文件,也可能有多个次要数据文件,默认扩展名是.ndf。
事物日志文件:存放用于恢复数据库的所有日志信息。每个数据库至少有一个事物日志文件,也可以有多个事物日志文件,默认扩展名是.ldf。

2.文件组
主文件组:包含主要数据文件和任何没有明确指派给其他文件组的文件。系统表的所有页都分配在主文件组中。
用户定义文件组:主要是在create database 或者alter database 语句中,使用filegroup关键字指定的文件组。

五、创建数据库
创建数据库时包括常规、选项和文件组 常规用于设置数据库的名称大小位置等,选项和文件组中定义数据库的一些选项,显示文件和文件组的统计信息,默认即可。
SQL Server 默认创建了一个primary文件组,用于存放若干个数据文件,但日志没有文件组。
SQL Server数据库的数据文件分逻辑名称和屋里名称。逻辑名称是在sql 语句中引用文件时所使用的名称;物理名称用于操作管理系统。

维护SQL Server数据库

一、脱机与联机

数据库->右键脱机,copy之后右键联机->完成

二、分离与附加

分离不是删除数据库而是从服务器中移除。 exec sp_detach_db @dbname='webDB'

数据库->右键分离->需要时再右键附加上。create database webDB on (filename='c:\webDB.mdf'),(c:\webDB.ldf) for attach

三、导入和导出

数据库->右键导入->选择数据源->完成。

数据库->右键导出->输入服务器名称,账号密码->选择导出方式->完成。

四、备份和恢复

数据库->右键备份->完整备份->完成。

数据库->右键恢复->选择bak文件->完全覆盖->完成。

五、收缩数据库和文件

因为数据库空间分配采用的是现分配、后使用的机制,所以数据库使用过程中就可能会存在多余的空间。收缩数据库功能允许对数据库的每个文件进行收缩。
数据库和日志文件都可以收缩,可以手动收缩额自动收缩。
自动收缩:数据库->右键属性->选项->自动收缩->完成。
手动收缩:数据库->右键任务收缩->数据库/文件->确定。

六、生成与执行SQL脚本

将数据库生成SQL脚本:数据库->编写脚本->create database ->完成。
将数据表生成SQL脚本:数据表->编写脚本->create table->完成。
执行SQL脚本:新建查询->输入脚本->执行。

数据表

一个数据库由多张数据表组成,每个数据表由行和列组成

一、数据类型

1、基本数据类型

精确数字类型:bigint、int、smallint、tinyint、bit、decimal、numeric、money、smallmoney。

浮点数据类型:freal、float。

字符数据类型:text、ntext、char、nchar(n)、varchar、nvarchar(n)。

二进制数据类型:binary、varbinary、image。

日期/时间数据类型:time、date、smalldatetime、datetime、datetime2、datetimeoffset。

2、用户自定义数据类型

2.1 可编程性->类型->用户自定义数据类型->右键新增数据类型。

2.2 exec sp_addtype code_name,'char(8)','not null'

二、数据表的数据完整性

表中的每一列都有一组属性,如名称、数据类型、数据长度和是否为空等。

1.空与非空值(null/not null):定义是否允许为空

2.默认值(default):默认指定值。

3.标识属性(identity):自动为表中插入新行生成连续递增的编号,因标识值通常唯一,所以标识列通常定义为主键(整型数据类型,标识列不能为空)。

4.约束:用来定义自动强制数据库完整性的方式,约束优先于使用触发器、规则和默认值。

非空:用户必须输入一个值。可以有多个非空约束。

检查:用来指定一个布尔操作,限制输入到表中的值。

唯一性:用户的应用程序向列中输入一个唯一的值,值不能重复,但可以为空。

主键:可以保证实体完整性,一个表只能有一个主键,主键不能为空。

外键:控制存储在外键表中的数据。一个表可以有多个外键。

三、企业管理器管理数据表

创建表:数据库->表->右键新建表->输入列名->选择数据类型->是否允许空->保存输入表名。

修改表:数据库->表->右键设计。

重命名:数据库->表->f2。

删除表:数据库->表->右键删除。

非空约束->列->列属性->允许NULL -> 是/否。

主键约束->列->右键->设为主键->完成。

唯一约束->列->索引/键->唯一->是->完成。

检查约束->列->右键->check约束->表达式->完成。

默认约束->列->列属性->默认值。

外键约束->列->右键->关系->表和列规范->选择外键表列。

四、关系的创建与维护

SQL Server 是一个关系数据库管理系统(Relational Datable Management System,RDBMS),当数据库中包含多个表时,需要通过主关键字来建立表之间的关系。

主表user 从表work 主表wid右键->关系->主键work id 外键 user wid。

五、计算列

列属性->计算列规范->公式。

由同一表中的其他列的表达式计算结果来生成列。一般用来对数据表进行扩展或增强。

T-SQL

一、T-SQL概述

T-SQL(Transact Structured Query Language)是标准的Microsoft SQL Server的扩展,是标准的SQL程序设计语言的增强版,程序与SQL Server沟通的主要语言。

SQL是关系数据库系统的标准语言,标准的SQL可以运用在所有的关系型数据库上。但T-SQL是SQL Server系统产品独有的。

二、T-SQL语言的组成

数据定义语言(Data Definition Language,DDL):用于在数据库系统中对数据库、表、视图、索引等数据库对象进行创建和管理。

数据控制语言(Data Control Language,DCL):用于实现对数据库中数据的完整性、安全性等控制。

数据操纵语言(Data Mainpulation Language,DML):用于插入、修改、删除和查询数据库中的数据。

三、T-SQL语句结构

每条SQL语句由一个谓词开始,该谓词描述这条语句要产生的动作,如select或update关键字。谓词后紧接着一个或多个子句,子句中给出了被谓词作用的数据或提供谓词动作的详细信息,每一条子句都由一个关键字开始。

select 子句[into 子句] from子句 [where 子句] [group by 子句][having 子句][order by 子句]

四、T-SQL语句分类

变量说明语句:用来说明变量的命令。

数据定义语句:用来简历数据库、数据库对象和定义列,如create table、create view、drop table等。

数据操纵语句:用来操纵数据库中数据的命令,如select、insert、update、delete和cursor等。

数据控制语句:用来控制数据库组件的存取许可、存取权限等,如grant、revoke等。

内嵌函数:说明变量的命令。

其他命令:嵌于命令中使用的标准函数。

五、常量

数据在内存中存储始终不变化的量叫常量,常量,也称为文字值或标量值,是标识一个特定数据值的符号。格式区别与它所标识的值的类型。

1.数字常量:包括整数常量、小数常量以及浮点常量。【 1 2 3】

2.字符串常量:括在单引号内并且包含字母数字字符(a~z、A~Z、0~9)以及特殊字符,如”!、@、#“。 【‘a’ ‘asd’】

3.日期和时间常量:SQL规定日期、时间和时间间隔的常量值被指定为日期和时间常量。【'2014-08-01'】

4.符号常量:除了用户定义的常量外, SQL包含几个特定的符号常量,这些常量代表不同的常用数据值。【current_date标识当前的日期】

六、变量

数据在内存中存储可以变化的量叫变量。用户必须指定存储信息的单元,并为该存储单元命名。T-SQL可以使用两种变量,局部变量和全局变量。

1.局部变量

局部变量是用户可自定义的变量,作用范围仅在程序内部,局部变量名必须以“@”开头。

1.1声明局部变量:使用declare语句声明变量。

declare @a char(10)

1.2局部变量赋值:一种select,一种set。

select : select @a = 1set : set @a = 'i love sql'/*定义变量 查询结果*/declare @title varchar(10)set @title = 'xxx'select * from article where title = @title

输出语句

select : select @a as ‘A’ 返回带列明的变量值

print : print @a 输出变量

2.全局变量

系统内部事先定义好的变量称为全局变量,不用用户定义,任何程序均可随时调用。全局变量以“@@”开头。

@@identity: 最后一次自增的值。@@rowcount: 影响行数@@cursor_rows: 返回连接上打开的游标当前限定的数目@@error:返回错误号。若执行成功则返回0。@@connections:记录最后一次服务器启动以来,所有针对这台服务器进行的链接数目,包括没有链接成功的尝试。@@cup_busy:记录上次启动以来尝试的连接数,无论链接成功还是失败,都以ms为单位的cpu工作时间@@dbts:返回当前数据库中timestamp数据类型的当前值。@@fetch_status:返回上一次使用游标fetch操作所返回的状态值,并且返回值为整型。0成功,-1失败或不存在,-2被提取的行不存在。@@idle:返回以ms为单位计算SQL Server服务器自最近一次启动以来处于停顿状态的时间。@@io_busy:返回以ms为单位计算的SQL Server服务器自最近一次启动以来花在输入和输出上的时间。@@lock_timeout:返回当前对数据锁定的超时设置。@@pack_received:返回SQL Server服务器自最近一次启动以来一共从网络上接收数据分组的数目。@@pack_sent:返回SQL Server服务器自最近一次启动以来一共向网络上发送数据分组的数目。@@procid:返回当前存储过程ID标识。@@remserver:返回在登陆记录中记在远程SQL Server服务器的名字@@spid:返回当前服务器进程的ID标识。@@total_errors:返回自服务器启动以来,所遇到读写错误的总数。@@total_read:返回自服务器启动以来,读磁盘的次数。@@total_write:返回自服务器启动以来,写磁盘的次数。@@trancount:返回当前链接中,处于活动状态事务的数目。@@version:返回当前服务器的安装日期、版本、一级处理器的类型。

七、运算符

代码注释:/*此处注视*/

1、算数运算符

+、-、*、/。加减乘除。1+1。

2、赋值运算符

=为赋值运算符,将 等号右侧的值赋给左侧变量。

3、比较运算符

>、=、<=、<>、!=、!>、! 比较运算符测试两个表达式是否相同

4、逻辑运算符

  • all:如果一个比较集中全部都是true,则值为true。
  • and:如果两个布尔值表达式均为true,贼值为true。
  • any:如果一个比较集合中任何一个为true,则值为true。
  • between:如果操作数是在某个范围内,则值为true。
  • exists:如果子查询包含该行,则返回true。
  • in:如果操作数与一个表达式列表中的某个相等,则值为true。
  • like:如果操作数匹配某个模式,则值为true。
  • not:对任何其他布尔运算符的值相反。
  • or:如果任何一个表达式是true,则值为true。
  • some:如果一个比较集中的某些true,则值为true。
  • not and or 同意表达式中,优先级是not>and>or。

5、位运算符

&(AND) |(OR) ^(互斥OR) ~(NOT)

6、连接运算符

使用"+"用于连接两个或者两个以上的字符串。'123'+'asd'

7、运算符优先级

  • 1.+(加) -(减) ~(位反)
  • 2. *(乘) /(除) %(余)
  • 3.+(加) +(字符串连接) -(减)
  • 4.=、>、=、<=、<>、!=、!>、! >、!
  • 5.^(按位异或) &(按位与) | (按位或)
  • 6. NOT
  • 7. AND
  • ALL ANY BETWEEN IN LIKE OR SOME(逻辑运算符)。
  • =(赋值)

8、通配符

  • % : 包含0个或多个字符的任意字符(%title% "1title1","title","titlecsd")。
  • _ : 任何单个字符 (title_ "titlec"),通配符后只可跟一个字母。
  • [] : 指定范围[a~c] 或集合[abc]中的任何单个字符([0~9]123标识0~9之间任意一个字符开头,123结尾的字符)。
  • [^]:不属于指定范围或集合中的任何单个字符([^0~6]123 标识不以0~6之间的任意一个字母开头,却以123结尾的字符)。

9、控制流程

  • begin···end:用于将多个T-SQL语句组合为一个逻辑块。当流程控制语句必须执行一个包含两条或两条以上T-SQL语句时,使用begin end。
  • if:if@x%2=0 print '偶数' end
  • if···else:set @y = 3; if@x>0 print '1'else print'c'
  • case:使用case可以很方便的实现多重选择的情况,比if···then结构有更多的选择和判断机会。
    case······when aa > 10 then 'ok' when aa
  • while:T-SQL循环结构,条件为真的情况下while子句可以循环的其后的一条T-SQL命令,如果向循环执行一组命令,需配合begin······end。
  • while······continue······break:循环结构while子句还可以用continue和break控制while循环中语句的执行。
  • return:用于从查询或者过程中无条件退出。
  • goto:用来改变程序执行的流程,使程序调到标识符指定的程序行再继续往下执行。
  • dbcc:用来验证数据库完整性,查找错误和分析系统使用情况等。
  • declare:用来声明一个或多个局部变量、游标变量或表变量。
  • print: 用来向客户端返回一个字符串。
  • backup:用于将数据库内容或事务处理日志备份到磁盘或硬盘中。
  • restore:数据库发生丢失或者被破坏后可以使用restore将事务处理日志备份文件还原到SQL Server中。
  • select : 除查询外还可以给变量赋值。select @x=1,@y='love',多个赋值。
  • set:用来给局部变量赋值,set一次只能给一个变量赋值,select可以多个,不过set功能更强更严密。
  • shutdown:离职终止所有的用户过程,并在对每一现行的事务发生一个回滚后退出SQL Server。终止SQL服务。
  • use:用于在当前工作区打开数据库,如:use master select * from sysdatabases。

八、SQL语言操作

1、GO批处理语句

用于同时执行多个语句

使用、切换数据库

use master

go

2、使用T-SQL语句操作数据库

2.1、创建数据库

/*检查是否已存在该数据库*/
if(exists(select * from sys.databases where name = 'webDB'))drop database webDB
go
create database webDB on primary /*数据库名字 默认属于praimary组 可省略不写*/
(name = webDB, /*逻辑名称*/filename='d:\webDB.mdf', /*物理名称*/size = 5mb, /*初始大小*/maxsize = unlimited, /*增长率的最大值*/filegrowth = 10% /*增长率*/
)
log on
(name = webDB_log,filename = 'd:\webDB.ldf',size = 3mb,maxsize = 50mb,filegrowth = 2mb
)

2.2修改数据库

alter database webDB /*要修改的数据库*/
modify file /*修改文件*/
(name = webDB, /*逻辑名*/size = 6mb /*修改初始大小*/
)

2.3使用存储过程修改数据库名

exec sp_renamedb 'webDB','newDB'

2.4删除数据库

drop database webDB

3、创建表

use webDB
go
if(exists(select * from sys.objects where name='student'))drop table student
go
create table student(name nvarchar(50),age int
)

4、修改表

/*如果student表存在address列则删除该列*/
if(exists(select * from sys.all_columns where object_id=object_id('student') and name='address'))alter table student drop column address/*删除表中谋列*//*向表追加列*/
alter table student add address varchar(50) not null/*修改该列*/
alter table student alter column address varchar(20)/*向表中追加多列*/
alter table student add tel varchar(50),sex char(2),hits int

5、备份数据表

select * into newTable from student

6、创建约束

/*1、非空约束
创建表时 创建非空约束*/
create table [user]( id int not null,name varchar(50),age int
)
/*在现有表中追加约束*/
alter table student
alter column name varchar(50) not null /*2、主键约束
创建表时 创建主键约束*/
create table [user1](id int constraint pk_id primary key, name varchar(50)
)
/*在现有表中 创建主键约束*/
alter table user1 add constraint pk_id primary key(id) /*3、唯一约束
创建表时 创建唯一约束*/
create table [user2](id int constraint uq_id unique,name varchar(50)
)
/*在现有表中 创建唯一约束*/
alter table [user2] add constraint qu_id unique(id)/*4、检查约束*/
create table user3
(sex char(2) constraint ck_sex check(sex in ('男','女'))
)alter table user3 add constraint ck_sex check(sex in ('男','女'))/*5、默认约束*/
create table [defualt](hits int constraint def_hits default 0
)alter table [defualt] add constraint def_hits default 0 for [hits]/*6、外键约束*/
alter table text add constraint fkey_id foreign key(id) references test(id)

转载于:https://www.cnblogs.com/baidawei/p/4710218.html

5、SQL Server数据库、T-SQL相关推荐

  1. 将excel数据导入到SQL server数据库,SQL server引入导入excel报表,如何解决“未在本地计算机上注册“Microsoft.ACE.OLEDB.12.0”提供程序”问题

    目录 版本: 文章主要内容: 未在本地计算机上注册"Microsoft.ACE.OLEDB.12.0"提供程序 新版本不同的设置的地方: 版本: SQL server2018.ex ...

  2. SQL Server 数据库之SQL Server 数据库的安全设置

    SQL Server 数据库的安全设置 1. 概述 2. 更改登录用户验证方式 3. 创建与删除登录用户 4. 创建与删除数据库用户 5. 设置服务器角色权限 5.1. **查看角色属性** 5.2 ...

  3. SQL SERVER 数据库实用SQL语句

    --查看指定表的外键约束 select * from sysobjects where parent_obj in( select id from sysobjects where name='表名' ...

  4. MS SQL Server 数据库分离-SQL语句

    前言 今天在在清理数据库,是MS SQL Server,其中用到分离数据库文件.在这过程中,出现了一个小小的问题:误将数据库日志文件删除了,然后数据就打不开了,除了脱机,其他操作都报错. 数据库分离 ...

  5. [转载]在SQL Server数据库之间进行数据导入导出,OPENDATASOURCE

    需要在c盘下先建立一个data.txt文件,然后在文件的第一行写上你要导出的列,不如说要导出id和name这两列,就在第一行写上 id,name 然后保存,使用下列SQL就可以了,你如果要保持原有的I ...

  6. 【转载】在C#中运用SQLDMO备份和恢复Microsoft SQL Server数据库

    在C#中运用SQLDMO备份和恢复Microsoft SQL Server数据库 SQLDMO(SQL Distributed Management Objects,SQL分布式管理对象)封装了Mic ...

  7. 在SQL Server数据库之间进行数据导入导出

    来源:http://kb.cnblogs.com/page/94464/ 在SQL Server数据库之间进行数据导入导出 (1).使用SELECT INTO导出数据 在SQL Server中使用最广 ...

  8. SqlPackage.exe –使用bacpac和PowerShell或Batch技术自动执行SQL Server数据库还原

    Data is the key to your organization's future, but if it's outdated, irrelevant, or hidden then it's ...

  9. 如何对两个大型SQL Server数据库中的数据进行快速估计比较,以查看它们是否相等

    Bringing impactful analysis into a data always comes with challenges. In many cases, we rely on auto ...

  10. 了解SQL Server数据库恢复模型

    A recovery model is a database configuration option that determines the type of backup that one coul ...

最新文章

  1. 生成全1矩阵_全矩阵捕获技术:一种最大限度提升便携式相控阵超声检测设备功能的新技术...
  2. 全球及中国多功能小推车行业消费需求与未来产销前景分析报告2022版
  3. 《Python游戏编程快速上手》第八章--Hangman
  4. 2013\Province_Java_A\1.世纪末的星期
  5. ubuntu重置root密码
  6. 判断是否是完全二叉树和是否为满二叉树
  7. 调试错误:UnicodeDecodeError: 'utf-8' codec can't decode byte 0xff in position 0: invalid start byte
  8. App开发流程之图像处理工具类
  9. MFC中CImageList的用法
  10. OSChina 周五乱弹 —— 男友手机上存了好多鸡的照片
  11. python 文字生成图片
  12. VB.NET读写文本文件方法
  13. Android 开机权限默认授予Runtime权限
  14. 郑州统考英语计算机培训,2016年郑州大学远程教育英语统考练习题
  15. 六成应用不需要程序员,一大批程序员会失业?
  16. iClap:产品经理再忙也要看《琅琊榜》
  17. 实体链接在小布助手和OGraph的实践应用
  18. libusb ubuntu
  19. 浅谈GD32与STM32之间的区别
  20. 憨批豪的java成长日记-MYSQL数据库

热门文章

  1. 心情的旅行- 让自己慢下来(46)
  2. SQL Server 重命名数据库
  3. linux在线聊天报告,EChat: Linux下基于命令行的在线聊天系统
  4. 程序语言python的优化版_从20秒到0.5秒:一个使用Rust语言来优化Python性能的案例...
  5. k8s使用volume将ConfigMap作为文件或目录直接挂载_Kubernetes in Action 06. 卷:将磁盘挂载到容器...
  6. OMG Network与安全多方计算提供商Enya达成合作
  7. SAP License:FI-SAP新总账功能(一)
  8. 【大健康】高保真交互原型模板+大健康生态问诊app+饮食运动数据血糖血压健康数据的管理移动端+在线挂号、体检预约、远程在线视频电话图文问诊医疗服务+积分商城设备管理+健康档案
  9. 04_mysql增删改操作
  10. ORA-00906 missing left parenthesis括号