MS SQL Server 数据库(基础篇)
SQL Server数据库
- 1.0 数据库及数据库系统
- 1.1数据库是什么
- 1.2 数据库系统(DBS)
- 1.3 数据库管理系统(DBMS)
- 1.4 数据库的作用
- 1.5 应用程序
- 1.6 注
- 2.0 管理数据库
- 2.1 创建数据库
- 2.2 判断数据库是否存在
- 2.3 使用数据库
- 2.4 删除数据库
- 2.5 创建数据表
- 2.6 判断表是否存在
- 2.7 删除数据表
- 2.8 判断某表的某字段是否存在
- 3.0 SQL Server 数据类型
- 4.0 数据完整性
- 5.0 创建约束
- 5.1 主键约束:
- 5.2 外键约束:
- 5.3 检查约束:
- 5.4 默认约束:
- 5.5 唯一约束:
- 5.6 删除约束:
- 6.0 数据库操纵语言
- 6.1 向数据库中插入数据
- 6.2 select 查询
- 6.3 删除数据表中的数据
- 7.0 T-SQL
- 7.1 T-SQL的组成
- 7.2 T-SQL的运算符和表达式
- 7.3 SQL算术运算符:
- 7.4 SQL比较操作符:
- 7.5 SQL逻辑运算符:
- 7.6 SQL 中的通配符:
- 8.0 为字段设置别名(三种)
- 9.0 数据操纵
- 9.1 计算字段
- 9.2 ALL关键字返回全部记录
- 9.3 DISTINCT关键字过滤重复记录
- 9.4 TOP显示前面若干条记录
- 9.5、范围运算符
- 9.6、对查询的结果进行排序( order by 子句)(ASC 升序 / DESC 降序)
- 9.7 对查询结果计算
- 9.8 查询结果分组
- 10.0 联表查询
- 11.0 集合运算
1.0 数据库及数据库系统
1.1数据库是什么
计算机存储设备有组织的存储数据库的地方
1.2 数据库系统(DBS)
存放在存储设备的数据集合的管理数据的计算机软件
1.3 数据库管理系统(DBMS)
管理数据库
常见的数据库(DB) | SQL Server 、 My SQL、 Oracle |
---|
1.4 数据库的作用
1、存储大量数据,方便检索和访问
2、保持数据信息的一致,完整
3、共享和安全
4、通过组合分析,产生新的有用信息
1.5 应用程序
作用:响应操作并显示结果,向数据库请求数据
要求:美观、操做方便
1.6 注
SQL Server的注释符 –
SQL Server 不区分大小写
分隔符 GO
2.0 管理数据库
2.1 创建数据库
create database 数据库名称
2.2 判断数据库是否存在
if exists (select * from sysdatabases where name = '数据库名') drop database 数据库名
2.3 使用数据库
use 数据库名称
注
数据库:存放数据库数据和数据库对象文件
2.4 删除数据库
drop database 数据库名称
2.5 创建数据表
create table 数据表名称
(
--字段1 数据类型 属性 约束,
--字段2 数据类型 属性 约束,
·· · ·
)
2.6 判断表是否存在
if exists (select * from sysobjects where id = object_id(N'[表名]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) drop table [表名]
if object_id(N'tablename',N'U') is not null
print '表存在'
else
print '表不存在'
2.7 删除数据表
drop table 数据表名称
2.8 判断某表的某字段是否存在
if (not exists(select * from syscolumns where id=object_id('表明') and name='字段名'))
print '字段存在'
else
print '字段不存在'
3.0 SQL Server 数据类型
Character 字符串:
数据类型 | 描述 | 描述 |
---|---|---|
char(n) | 固定长度的字符串。最多 8,000 个字符。 | n |
varchar(n) | 可变长度的字符串。最多 8,000 个字符。 | |
varchar(max) | 可变长度的字符串。最多 1,073,741,824 个字符。 | |
text | 可变长度的字符串。最多 2GB 字符数据。 |
Unicode 字符串:
数据类型 | 描述 | 存储 |
---|---|---|
nchar(n) | 固定长度的 Unicode 数据。最多 4,000 个字符。 | |
nvarchar(n) | 可变长度的 Unicode 数据。最多 4,000 个字符。 | |
nvarchar(max) | 可变长度的 Unicode 数据。最多 536,870,912 个字符。 | |
ntext | 可变长度的 Unicode 数据。最多 2GB 字符数据。 |
Binary 类型:
数据类型 | 描述 | 存储 |
---|---|---|
bit | 允许 0、1 或 NULL | |
binary(n) | 固定长度的二进制数据。最多 8,000 字节。 | |
varbinary(n) | 可变长度的二进制数据。最多 8,000 字节。 | |
varbinary(max) | 可变长度的二进制数据。最多 2GB 字节。 | |
image | 可变长度的二进制数据。最多 2GB。 |
Number 类型:
数据类型 | 描述 | 存储 |
---|---|---|
tinyint | 允许从 0 到 255 的所有数字。 | 1 字节 |
smallint | 允许从 -32,768 到 32,767 的所有数字。 | 2 字节 |
int | 允许从 -2,147,483,648 到 2,147,483,647 的所有数字。 | 4 字节 |
bigint | 允许介于 -9,223,372,036,854,775,808 和 9,223,372,036,854,775,807 之间的所有数字。 | 8 字节 |
decimal(p,s) | 固定精度和比例的数字。允许从 -10^38 +1 到 10^38 -1 之间的数字。p 参数指示可以存储的最大位数(小数点左侧和右侧)。p 必须是 1 到 38 之间的值。默认是 18。s 参数指示小数点右侧存储的最大位数。s 必须是 0 到 p 之间的值。默认是 0。 | 5-17 字节 |
numeric(p,s) | 固定精度和比例的数字。允许从 -10^38 +1 到 10^38 -1 之间的数字。p 参数指示可以存储的最大位数(小数点左侧和右侧)。p 必须是 1 到 38 之间的值。默认是 18。s 参数指示小数点右侧存储的最大位数。s 必须是 0 到 p 之间的值。默认是 0。 | 5-17 字节 |
smallmoney | 介于 -214,748.3648 和 214,748.3647 之间的货币数据。 | 4 字节 |
money | 介于 -922,337,203,685,477.5808 和 922,337,203,685,477.5807 之间的货币数据。 | 8 字节 |
float(n) | 从 -1.79E + 308 到 1.79E + 308 的浮动精度数字数据。 参数 n 指示该字段保存 4 字节还是 8 字节。float(24) 保存 4 字节,而 float(53) 保存 8 字节。n 的默认值是 53。 | 4 或 8 字节 |
real | 从 -3.40E + 38 到 3.40E + 38 的浮动精度数字数据。 | 4 字节 |
Date 类型:
数据类型 | 描述 | 存储 |
---|---|---|
datetime | 从 1753 年 1 月 1 日 到 9999 年 12 月 31 日,精度为 3.33 毫秒。 | 8 bytes |
datetime2 | 从 1753 年 1 月 1 日 到 9999 年 12 月 31 日,精度为 100 纳秒。 | 6-8 bytes |
smalldatetime | 从 1900 年 1 月 1 日 到 2079 年 6 月 6 日,精度为 1 分钟。 | 4 bytes |
date | 仅存储日期。从 0001 年 1 月 1 日 到 9999 年 12 月 31 日。 | 3 bytes |
time | 仅存储时间。精度为 100 纳秒。 | 3-5 bytes |
datetimeoffset | 与 datetime2 相同,外加时区偏移。 | 8-10bytes |
timestamp | 存储唯一的数字,每当创建或修改某行时,该数字会更新。timestamp 基于内部时钟,不对应真实时间。每个表只能有一个 timestamp 变量。 |
其他数据类型:
数据类型 | 描述 |
---|---|
sql_variant | 存储最多 8,000 字节不同数据类型的数据,除了 text、ntext 以及 timestamp。 |
uniqueidentifier | 存储全局标识符 (GUID)。 |
xml | 存储 XML 格式化数据。最多 2GB。 |
cursor | 存储对用于数据库操作的指针的引用。 |
table | 存储结果集,供稍后处理。 |
二进制数据类型: image
文本数据类型: char varchar Nchar nvarchar text ntext
日期和时间: date time datetime datetime2 datetimeoffset
4.0 数据完整性
1、实体完整性
2、域完整性
3、引用完整性(参照完整性)
5.0 创建约束
5.1 主键约束:
alter table 表名
add constraint 约束名 primary key (字段名) 约束说明
5.2 外键约束:
alter table 表名
add constraint 约束名 foreign key 表名 references 表名 (字段名)约束说明
5.3 检查约束:
alter table 表名
add constraint 约束名 check(范围)约束说明
5.4 默认约束:
alter table 表名
add constraint 约束名 default (‘默认字符’) for (字段名) 约束说明
5.5 唯一约束:
alter table 表名
add constraint 约束名 unique(字段) 约束说明
5.6 删除约束:
alter table 表名
drop constraint 约束名
6.0 数据库操纵语言
6.1 向数据库中插入数据
--插入单行数据:
insert into 表名 (字段名) values (值)
--插入多行数据:
insert into 表名 (字段1,字段2, ·· · · )
select 值1, 值2, · · · union,
select 值1, 值2, · · · union,
select 值1, 值2, · · ·
6.2 select 查询
select 字段1,字段2, · · · from 表名 [where 条件]
--或
select * form 表名 [where 条件]
6.3 删除数据表中的数据
--删除单条数据:
delete from 表名 [where 条件]
--删除表中所有数据:
truncate table 表名 -- 执行效率高 有外键约束不能使用
4、修改数据表中的数据
update 表名 set 字段名 = 值 [where 条件]
7.0 T-SQL
7.1 T-SQL的组成
数据定义语言:用来建立数据库,数据库表和定义其列,大部分都是create开头
数据操纵语言:例如 select update insert delete 等
数据控制语言:例如 grant revoke 等
流程控制语言:用于设计应用程序的语句 例如 if where case 等
7.2 T-SQL的运算符和表达式
1、常量
由一个或多个字符(‘a‘,‘abc‘)数字或符号组成注 字符和日期需要用单引号括起来,二进制字符和数字不需要
2、列名(字段名): 数据表中列的名称
7.3 SQL算术运算符:
操作符 | 描述 | 例子 |
---|
- |加法 -添加任一侧上的操作符的值 |a + b 得到 30
- |减法 - 从左边减去右边操作数的操作 |a - b 得到 -10
- |乘法 - 操作符两侧的值相乘 |a * b 得到 200
/ |除 - 将左边除右边的操作数(取模) |b / a 得到 2
% |模量 - 将左边用右手操作,并返回操作数的余数 |b % a 得到 0
7.4 SQL比较操作符:
操作符 | 描述 | 例子 |
---|---|---|
= | 检查如果两个操作数的值是相等或不相等,如果是的话,条件为真。 | (a = b) is not true |
!= | 检查如果两个操作数的值是否相等,如果值不相等,则条件为真。 | (a != b) is true |
<> | 检查如果两个操作数的值是否相等,如果值不相等,则条件为真。 | (a <> b) is true |
| 检查值,如果左操作数大于右操作数的值,如果是的话,条件为真。|(a > b) is not true
<| 检查如果左操作数的值小于右操作数的值,如果是的话,条件为真。 |(a < b) is true
=| 检查如果左操作数的值大于或等于右操作数的值,如果是的话,条件为真。| (a >= b) is not true
<=| 检查如果左操作数的值小于或等于右操作数的值,如果是的话,条件为真。| (a <= b) is true
!< |检查如果左操作数的值不小于右操作数的值,如果是的话,条件为真。| (a !< b) is false
!>| 检查如果左操作数的值是不大于右操作数的值,如果是的话,条件为真。| (a !> b) is true
7.5 SQL逻辑运算符:
运算符 | 描述 |
---|---|
ALL | 所有运算符用于比较的值到另一个值组中的所有值。 |
AND | AND运算符允许多个条件的存在,在一个SQL语句中的WHERE子句。 |
ANY ANY | 运算符用于比较的值在列表中根据任何适用的条件。 |
BETWEEN | BETWEEN运算符用于搜索一组值的范围内的值,给定的最小值和最大值。 |
EXISTS | 存在指定的表中符合特定条件的运算符用于搜索存在的一行记录。 |
IN | IN操作符用来比较的文字值已指定一个值的列表。 |
LIKE | LIKE运算符用于比较相似的值,使用通配符的值。 |
NOT | NOT运算符的含义相反的逻辑运算符,它被使用如 NOT EXISTS, NOT BETWEEN, NOT IN 等,这是一个相反的运算符。 |
OR | 使用OR运算符结合SQL语句的WHERE子句中的多个条件。 |
IS NULL | NULL操作符用来比较NULL的值。 |
UNIQUE | 独特的操作符搜索指定的表中的每一行的唯一性(不重复)。 |
7.6 SQL 中的通配符:
通配符 | 描述 |
---|---|
% | 包含零个或多更多字符的任意字符串 |
_ | 仅替代一个字符(任何单个字符) |
[] | 指定范围(例如[a-f])或集合(例如[1,3,5,7])内的任意单个字符 |
[^] | 不在指定范围(例如[a-f])或集合(例如[abcdef])内的任意单个字符 |
注:使用时通配符和字符串要用单引号括起来 |
8.0 为字段设置别名(三种)
原字段名 as 字段别名
字段别名 = 原字段名
原字段名 字段别名
9.0 数据操纵
9.1 计算字段
select 字段名 + ‘-’+ 字段名 as ‘别名’
9.2 ALL关键字返回全部记录
select all 字段1,字段2, · · · from 表名
9.3 DISTINCT关键字过滤重复记录
select distinct 字段名 from 表名
9.4 TOP显示前面若干条记录
select top n 字段名 from 表名
9.5、范围运算符
between · · · and · · ·
not Between · · · and · · ·
--eg: select 字段名 from where 字段名 between n and n
9.6、对查询的结果进行排序( order by 子句)(ASC 升序 / DESC 降序)
--单行 eg:
select * from 表名 where 条件
order by 字段名 排序方式--多行 eg:
select * from 表名 where 条件
order by 字段名 排序方式, 字段名 排序方式--order by 子句 与 top 关键字一起使用
select top [n] * from 表名 where 条件
order by 字段名 排序方式
9.7 对查询结果计算
--1、使用SUM函数计算字段的累加和
select SUM(字段名) 字段别名 from 表名 where 条件--2、使用AVG函数计算字段的平均值
select AVG(字段名) 字段别名 from 表名 where 条件--3、使用MAX和MIN函数计算字段的最大值和最小值
select MAX(字段名) 字段别名, MIN(字段名) 字段别名 from 表名 --4、使用COUNT函数统计记录行数
select COUNT(*) 字段别名 from 表名
9.8 查询结果分组
--使用 group by 子句
--eg:
select 字段名 AS 字段别名 , COUNT(*) AS 别名 from 表名 group by 字段名
--注:
--字段列表中的每个字段必须在 group by 子句中出现或者用在某个聚合函数中
10.0 联表查询
--1、内部链接基本语法
select 字段列表 from 表1 inner join 表2 on 条件表达式--2、更复杂的联接基本语法
select 字段列表 from 表1 inner join 表2 on 条件表达式1 inner join 表3 条件表达式2 · · ·--3、外部联接查询
--外部联接分为左外部联接(left outer join)和右外部联接(right outer join)两种
--主表在join左边则为左外部联接,主表在join右边则为右外部联接
--基本语法:
select 字段列表 from 表1<left/right>[outer] join 表2 条件表达式--4、交叉联接基本语法(cross join)
select count(*) 字段别名 from 表1 cross join 表2
11.0 集合运算
--1、使用UNION和UNION ALL进行并集运算
--eg:
select 字段列表 from 表名 where 条件1union (union all)
select 字段列表 from 表名 where 条件2--注:
union 不允许有重复值,union all 允许有重复值
union 返回值的结果集的标题仅从第一个查询获得--2、使用 INTERSECT进行交集运算
--eg:
select 字段列表 from 表名 where 条件1intersect
select 字段列表 from 表名 where 条件2--3、使用EXCEPT进行减集运算
--eg:
select 字段列表 from 表名 where 条件1except
select 字段列表 from 表名 where 条件2
MS SQL Server 数据库(基础篇)相关推荐
- MS SQL Server数据库修复利器—D-Recovery For MS SQL Server数据恢复软件
微软的SQL Server 数据库最常用的有两种类型的文件: 1.主要数据文件,文件后缀一般是.MDF: 2.事务日志文件,文件后缀一般是.LDF. 用户数据表.视图.存储过程等等数据,都是存放在MD ...
- MS SQL Server数据库原理
MS SQL Server数据库原理 一. 数据库基本概念 数据库系统(DBS):采用数据库技术的计算机系统,由数据库(数据).数据库管理系统(软件).数据库管理员(人员).硬件平台(硬件)和软件平台 ...
- delphi使用MS Sql Server数据库的分布式查询
目录 delphi使用MS Sql Server数据库的分布式查询 一.链接服务器 1.1.简单的链接服务器 1.2.含多数据库架构的全链接服务器 1.3.链接服务器的理论与总结 语法: 参数: 本系 ...
- 1 SQL server数据库基础
SQL server数据库基础 一 数据库简介 1数据库的基本概念 1)数据 ·描述事物的符号记录称为数据(Data),包括数字.文字.图像.声音等.以"记录"的形式按统一格式进行 ...
- 公司招聘软件研发程序员的一道考题--MS SQL Server数据库数据文件页面头部结构...
有一次在招聘C++程序员时,出的一道考题,内容其实就是MS SQL Server数据库数据文件页面头部结构,如下: 有个file.a文件,这个文件以16sec[sec是扇区,每个sec包含512个By ...
- MS SQL SERVER数据库简单回顾
MS SQL SERVER数据库 1.创建数据库 create database javateam; 2.使用数据库 use javateam; 3.创建表 create table 表名 ...
- 易语言 存储过程 mysql_在易语言中调用MS SQL SERVER数据库存储过程(Transact-SQL)方法总结...
作者:liigo 日期:2010/8/25 Microsoft SQL SERVER 数据库存储过程,根据其输入输出数据,笼统的可以分为以下几种情况或其组合:无输入,有一个或多个输入参数,无输出,直接 ...
- c井语言和SQL第一章上机1,第一章 SQL Server 数据库基础复习内容(上机)
上机课程总目标 在本学期中,将模拟开发一套学员信息管理系统,用来管理学员的个人基本资料,老师资料,学生成绩,课程信息等教学相关内容,以实现学校的信息自动化,提高工作效率. 该系统包括学生档案管理.学生 ...
- MS SQL Server数据库在线远程管理工具
MS SQL Server数据库在线管理工具 MS SQL Server数据库以其优异的性能,被广泛使用,特别是政务,医疗行业.但是远程维护挺不方便的,目前有一款基于WEB的工具TreeSoft数据库 ...
最新文章
- linux利用* vim提权,linux 通过suid vim.basic文件提权
- 电子学会青少年编程等级考试四级题目解析07
- WinAPI: SetTextAlign - 设置绘图环境的文本对齐方式
- cin输入问题的处理:cin.clear() 、cin.sync() 、cin.ignore()
- 从脚本本身获取Bash脚本的源目录
- html在线压缩tar.gz源码,c50_melp.tar.gz美国2400语音压缩编码算法,文件…
- Android编译笔记一
- java时间格式转换_Java时间日期格式转换
- keli不支持中文,显示中文乱码
- 在n1 ,魔百盒q5盒子上,实现惠普p1008系列的网络共享 打印和airprint服务
- android微信打不开怎么办,微信打不开怎么回事 微信打不开怎么办
- mysql 判断质数_质数(素数)判断算法总结
- 代理服务器等 和word上下角标 20110322
- OV426+OVM6946基于FPGA调试成像
- VCL语法教程——5.手持式1311编程器的支持
- 每日一诗词 —— 临江仙
- autojs 串口通信 替代无障碍 串口
- Python之Scrapy爬虫教程NBA球员数据存放到Mysql数据库
- 英语音标,元音汇总(0基础学英语!必备!)
- 【linux应用编程】-进程全解
热门文章
- 汇集全球21位医生的经验和智慧,总结出最实用的专业建议,这些都是最值得你牢记的健康秘密~
- 1003 of dp
- CUDA之Thread、Wrap执行详解
- fancybox ajax post,使用jQuery fancybox插件打造一个实用的数据传输模态弹出窗体
- 他们做了一个令国人振奋的工业互联网项目
- ValueError: view limit minimum -36919.1 is less than 1 and is an invalid Matplotlib date value.问题解决
- 黑龙江工商学院计算机系闫博,黑龙江工商学院 | 计算机科学与技术系成功召开全体教师述职述廉大会...
- PHP图书管理系统程序系统需求分析,图书管理系统(毕业设计程序)php+mysql
- uni VUE使用canvas绘制海报并分享微信好友及朋友圈
- Frp某场景下实现多层代理