目录

  • 一、数据库的创建
  • 二、数据库的修改查询与删除
  • 三、数据库的备份和还原
  • 四、数据库的数据类型
    • (1)数字类型
    • (2)时间类型
    • (3)字符串类型
  • 五、创建数据表
  • 六 、数据表的修改与删除
  • 七、定义表主键、外键
  • 八、新增表记录
  • 九、查询表记录
  • 十、修改数据表记录(数据)
  • 十一、删除数据表记录
  • 十二、条件限制语法
  • 十三、子查询 IN
  • 十四、子查询 EXISTS
  • 十五、返回记录排序
  • 十六、关联查询(多表查询)
  • 十七、聚合函数 AVG() 、SUM()
  • 十八、聚合函数 min() 、max()
  • 十九、count()
  • 二十、len() 函数
  • 二十一、生成随机数 rand()
  • 二十二、获得时间 getdate()、 getutcdate()
  • 二十三、时间的计算 datediff() 、dateadd()函数
  • 二十四、对日期某一部分的获取 datepart()、datename() 函数
  • 二十五、字符串的匹配查找 charindex()、patindex()

一、数据库的创建

写在前面:这些操作执行后都需要右键单击数据库,然后点击刷新才可出现效果
这其实是我的学习笔记,如有不足或偏差之处还请同志们可评论或私信告知

方式一:图形界面
最后点击确定结课在左侧出现数据库名称
方式二:利用sql脚本进行创建
点击运行之后需要刷新一下即可在左侧项目栏出现新建的数据库文件

create database testdb01
on primary (
name='testdb01',
filename='D:\SQL server study\testFiles\testdb\testdb01.mdf',
size=10MB, /*初始大小*/
maxsize=100MB,  /*最大为多少*/
filegrowth=5MB  /*每次的增长量*/
)
/*新建日志文件*/
log on(
name="testdb01_log" ,
filename='D:\SQL server study\testFiles\testdb\testdb01.ldf' ,
size=10MB,
maxsize=100MB,
filegrowth=5MB
)

**

二、数据库的修改查询与删除

**
方式一:图形界面
(1)数据库的修改:
如果想执行其中一部分代码,则先将想要执行的代码***选中后再执行***即可

exec sp_helpdb test  /*修改完毕后可用此命令查询,test为数据库名称*/
**(2)数据库的删除**右键选择要删除的数据库,单击删除即可,如果数据库正在使用则  **右键选中要删除的数据库 -> 任务 -> 分离 ->在弹出框勾选删除 -> 点击确定删除**

方式二:利用脚本修改

数据库的修改
修改数据库的名称

alter database test
modify name = re_test;  /*想要重新命名的名字*/
/*如果在数据库重命名的时候发生"无法用排他锁锁定该数据库"错误
将在数据库“属性”->"选项"->“限制访问”->“Single”  即可*/

修改其他信息

alter database re_test
modify file (
name = test,  /*此名字为逻辑文件的名字,并不是数据库的名字*/
size = 12MB,  /*将初始大小改为12MB*/
maxsize = 100MB,  /*最大改为100MB*/
filegrowth = 6MB  /*增长改为6MB*/
);

修改完毕后可执行查看指令查看信息

(2)数据库的删除

drop database testdb01  /*删除数据库指令*/

三、数据库的备份和还原

SQL Server备份和还原组件为保护存储在SQL Server 数据库中的关键数据提供了基本安全保障。为了最大限度地降低灾难性数据丢失的风险,您需要定期备份数据库以保留对数据所做的修改。规划良好的备份和还原策略有助于防止数据库因各种故障而造成数据丢失。通过还原一组备份,然后恢复数据库来测试您的策略,以便为有效地应对灾难做好准备。

  • ·差异备份(differential backup)
  • ·完整备份(full backup)

右键单击想要备份的数据库 -> 任务 -> 备份

右键单击 "数据库"文件夹 -> 还原数据库

如果想将数据在数据库引擎上删除则可利用分离操作:右键单击想要操作的数据库 -> 任务 -> 分离 -> 确定
若需要恢复时:单击"数据库"文件夹 -> 附加

四、数据库的数据类型

在SQL Server中,每个列、局部变量、表达式和参数都具有一个相关的数据类型。数据类型是一种属性,用于指定对象可保存的数据的类型: **整数数据、字符数据、货币数据、日期和时间数据、二进制字符串**等。

(1)数字类型

(2)时间类型

(3)字符串类型

前两个一般会选用varchar,即可变的。后两个则常选用nvarchar

五、创建数据表

方法一:图形界面
首先展开想要添加表的数据库,找到 **表 -> 右键单击表 -> 新建 -> 表 ** 在弹出界面添加想要的数据即可

添加完毕想要的数据后点击保存,在弹出对话框输入想要保存的名称,这里我用的 “userinfo”

方法二:脚本形式

create table userinfo1 /*userinfo1为数据表名字*/
( ID            int       primary key    not null,
/*起名为ID  数据类型为int  表示主键    字段不可为空*/
names varchar(10) not null,age int null
)
创建完成之后需要刷新一下才能显示出来

六 、数据表的修改与删除

修改表结构
方法一:图形界面
首先找到想要修改的数据表,然后右键单击 ,然后选择设计,弹出如下所示,修改完成后点击保存即可。

方法二:用脚本修改

- 更改字段类型长度

 alter table 表名alter column 字段名 类型的长度    --varchar(60)

- 更改字段类型

 alter table 表名alter column 字段名 更改后的类型

- 添加 not null 约束

 alter table 表名alter column 字段名 int not null

- 设置主键

 alter table表add constraint 主键名 primary key(字段名)

- 更改字段名

exec sp_ rename  '表名.原字段名','更改后的字段名', 'COLUMN'

- 添加字段名

alter table 表名
ADD字段名字段类型 DEFAULT null

- 删除表

drop table table_name[,...,n]
可执行同时删除多个,用逗号隔开

/*修改字段的长度*/
alter table userinfo
alter column name varchar(100);/*修改数据类型*/
alter table userinfo
alter column age float;/*添加not null 约束*/
alter table userinfo
alter column age float not null;/*设置主键*/
alter table userinfo
add constraint KID primary key (ID);/*更改字段名*/
alter table userinfo
exec sp_rename 'userinfo.r_age', 'age', 'column' ;/*增加字段*/
alter table userinfo
add grade varchar(10) not null;/*删除字段*/
drop table userinfo1

七、定义表主键、外键

  • 主关键字(primary key)

    主关键字(primary key)是表中的一个或多个字段,它的值用于唯一地标识表中的某一条记录。一个表只有一个主关键字。主关键字又可以称为主键。主键可以由一个字段,也可以由多个字段组成,分别称为单字段主键或多字段主键。又称主码。并且它可以唯一确定表中的一行数据,或者可以唯一确定一个实体。

/*增加主键*/
alter table 表名
add constraint PK_S primary key (哪一个字段)
/*删除主键*/
alter table 表名
drop constraint 主键名称
  • - 外键( Foreign Key)
    外键又称作外关键字。
    是用来使表与表之间联系。用来保证数据库的参照完整性,外键的取值必须来自参照表参照列的值,可以为空也可不为空。
    以另一个表的外键作为主键的表被称为主表,具有此外键的表被称为主表的从表。
    保持数据一致性,完整性,主要目的是控制存储在外键表中的数据。
/*添加外键*/
alter table 表名
/*Fk_s为增加的外键名称*/
add constraint Fk_s foreign key (从表的字段名) references 表名(字段名)
/*删除外键*/
alter table 表名
drop constraint FK_s

八、新增表记录

方式一:图形界面

1.可新建一个表,定义一些字段,将 是标识改为是

2.可在该图形界面的表中直接添加数据

3.添加完成后可直接关掉,默认自动保存。然后执行该指令查询表内容
select * from [dbo].[table01]
/*其中  *  标识查询所有的内容,如果想只查询指定字段,比如 userid ,则直接写 userid 即可


方式二:运用脚本

- 插入单行数据

insert into "表格名" ("栏位1", "栏位2",.….)
values("值予, "值2",...);

- 插入多行数据

insert into "表格名"("栏位1","栏位2",...)
values("值1", "值2",.…), ("值1", "值2",...), ("值1", "值2",.….);

- 从其它表dpy数据

insert into "表格1" ("栏位1","栏位2",.….)
select  "栏位3", "栏位4"...  from "表格2";

九、查询表记录

方式一:图形界面形式

在想要查询的表上右键单击 ,然后选择 “选择前100行” 即可查询。

方式二:写脚本

- 查询指令

/* select_list  为 * 则标识查询全部内容, 还可以指定字段(例,userid)查询*/
/* table_source 为表名*/
select select_list from table_source

- distinct去重

select distinct select_list from table_source

- Top 查询前多少数据

select top 行数 select_list from table_source


十、修改数据表记录(数据)

方式一:图形界面

打开数据表直接修改即可

方式二:使用脚本

 update table_nameset 字段1=值1,字段2=值2, ……/*如果不加此限制修改第几行,则表中所有字段1,字段2,……  都将被修改*/where ID = 行数

十一、删除数据表记录

方法一:图形界面

打开表后,就像之前设置为主键的方式,只不过这次选择的是删除

方法二:用脚本

delete from table_name  /*删除表中所有记录,而不是删除表*/
/*下面为删除某一行*/
delete from table_name
where ID = 第几行
/*下面为删除某一列*/
alter table 表名 drop column 列名

十二、条件限制语法

Where

- 精准限制条件

where 字段 = 值

- 模糊限制条件

where 字段 like ‘%值’
where 字段 like ‘值%’
where 字段 like ‘%值%’

下面的例子为用where限制查询的方法,也可用于删除等操作。



/*查找ID为1的数据*/
select * from table01
where ID = 1 /*模糊查询,将所有结尾带猫的查到*/
select * from table01
where username like '%猫'
/*模糊查询,将所有开头带猫的查到*/
select * from table01
where username like '猫%'
/*模糊查询,只要带有猫咪则都将被查到*/
select * from table01
where username like '%猫%'

between 语法

用于限制条件表达式,指定表达式范围值;就是限制你指令作用的范围。
/*包含某范围*/
test_expression between begin_expression and end_expression
/*不包含*/
test_expression not between_expression begin and end_expression

/*其查到的内容为第 3 4 5 6行数据 */
select * from table01
where ID between 3 and 6
/*除了第3 4 5 6之外的所以数据*/
select * from table01
where ID    not between 3 and 6
/*例如这种范围,那个字符不一样则比较哪个*/
/*其中 A 与 D 不一样,则获取ZA123456,ZB123456,ZC123456,ZD123456,的数据*/
/*利用这个可以很方便获取某个范围内的时间等信息*/
/*如果说开始和结束字符数长度不一致,较短的空的位置则按最小处理*/
select * from table01
where userid between 'ZA123456' and 'ZD123456'/*GETDATE() 获得数据库系统当前时间*/
select * from table01
where userid between 2021-01-01 and GETDATE()select GETDATE(); /*获得当前时间*/

十三、子查询 IN

/*用于限制条件表达式,指定表达式范围值*/
test_expression in ( subquery | expression[, ... , n]
test_expression not in ( subquery | expression[, ... , n]

示例:

十四、子查询 EXISTS

select a.StudentNo, a.StudentName, a.Age from [dbo].[Students] as a
where exists (select lD from [dbo].[Student_Lesson] as b where a.StudentNo = b.StudentNo);

注:其中 第一个表名后面有个 as a,意思是给前面的表起个别名a,有个 as b则是起个别名b,其中 as 可省略不写。
EXISTS用于检查子查询是否至少会返回一行数据,该子查询实际上并不返回任何数据,而是返回值True或False
EXISTS指定一个子查询,检测行的存在。

十五、返回记录排序

order by order_by_expression ASC [, ... , n]   /*升序排序*/
order by order_by_expression DESC [, ... , n]   /*降序排列*/

注 :其中order_by_expression 为想要被排序的那个字段

十六、关联查询(多表查询)

**inner join (交叉关联)** 只返回两个表中联结字段相等的行
select * from 表1 inner join 表2 on 表1.字段号=表2.字段
**left join(左关联)**返回包括左表中的所有记录和右表中联结字段相等的记录
select * from 表1 left join 表2 on 表1.字段号 = 表2.字段号
**right join(右关联)**返回包括右表中的所有记录和左表中联结字段相等的记录
select * from 表1 right join 表2 on 表1.字段号 = 表2.字段号

交叉关联:

左关联:

右关联:

多表关联:

十七、聚合函数 AVG() 、SUM()

AVG()
返回组中各值的平均值。其中忽略Null值。
计算字段类型必须为数字型(整数、小数)

select AVG(Score) from 表名

SUM()
返回表达式中所有值的和。其中忽略Null值。
SUM 只能用于数字

select SUM(Scorce) from 表名

十八、聚合函数 min() 、max()

min()
比较多个对象,返回其中最小值。
MIN忽略任何Null值。
计算字段类型可为数字型或字符型

select MIN (Score) from 表名

max()
比较多个对象,返回其中最大值。
MAX忽略任何Null值。
计算字段类型可为数字型或字符型

select MAX(Score) from 表名

十九、count()

count()
返回组中的项数。
其中忽略Null值。
计算字段返回类型为整型

select count(Score) from 表名

二十、len() 函数

len()
返回指定字符串表达式的字符数。
其中不包含尾随空格。
若要返回用于表示表达式的字节数请使用**datalength ()**函数。

select len(Username) from 表名

二十一、生成随机数 rand()

在查询分析器中执行:select rand() 可以随机的得到一个小数,类似:0.836393773069793
这种随机数在实用的过程中使用的并不多,一般我们会使用到的是随机整数。

select floor(rand()*N)
select ceiling(rand()*N)

floor 函数返回小于或等于所给数字表达式( N )的最大整数。
ceiling 函数返回大于或等于所给数字表达式( N )的最小整数。

例如:
floor(9.1782)= 9
ceiling(9.1782)= 10

二十二、获得时间 getdate()、 getutcdate()

getdate()
返回当前数据库系统时间值,返回值的类型为datetime,包含时间和日期

select getdate();

getutcdate()

返回当前国际标准时间值,返回值的类型为datatime

select getutcdate();


二十三、convert() 函数

CONVERT() 函数是把日期转换为新数据类型的通用函数。
CONVERT() 函数可以用不同的格式显示日期/时间数据。

CONVERT(data_type(length), data_to_be_converted, style)
style ID style 格式
100或者 0 mon dd yyyy hh:mi AM或PM
101 mm/dd/yy
102 yy.mm.dd
103 dd/mm/yy
104 dd.mm.yy


二十三、时间的计算 datediff() 、dateadd()函数

DATEDIFF() 函数返回两个日期之间的天数。

DATEDIFF(datepart, startdate, enddate)
datepart为 YEAR、MONTH、DAY、HOUR、MINUTE
startdate 和 enddate 参数是合法的日期表达式。

DATEADD() 函数在日期中添加或减去指定的时间间隔。

DATEADD(datepart, number, date)
datepart 为 YEAR、MONTH、DAY、HOUR、MINUTE
number 可为正数也可为负数

二十四、对日期某一部分的获取 datepart()、datename() 函数

DATEPART()函数用于返回日期/时间的单独部分,比如年、月、日、小时、分钟等等。
返回类型是一个INT整型
DATENAME()这个函数同样是用于返回日期/时间的单独部份。
返回数型是一个VARCHAR型

day() 、 month()、 year()
这三个函数是获取当前数据库部分时间

二十五、字符串的匹配查找 charindex()、patindex()

  • charindex()

返回字符或者字符串在另一个字符串中的起始位
CHARINDEX函数调用方法如下:

CHARINDEX ( expression1 , expression2 [ , start_location ] )
expression1 是要到expression2中寻找的字符
start_location 是一个非必要参数 ,也是在expression2中开始找expression1的起始位置。

CHARINDEX函数返回一个整数,返回的整数是expression1在expression2中的起始位置。
假如 CHARINDEX没有找到要找的字符串,那么函数整数“0”。

  • patindex()

PATINDEX函数返回字符或者字符串另一个字符串或者表达式中的起始位置,
PATINDEX函数支持搜索字符串中使用通配符,这使PATINDEX函数对于变化的搜索字符串很有价值。
和 CHARINDEX函数一样,PATINDEX函数返回搜索字符串在被搜索字符串中的起始位置。
假如有这样一个PATINDEX函数: PATINDEX(%BC%’,‘ABCD’)
这个PATINDEX函数返回的结果是2,这和 CHARINDEX函数一样。
这里的%标记告诉PATINDEX函数去找字符串“BC",不管被搜索的字符串中在“BC”的前后有多少字符!

本示例是直接采用举例的字符,当然你也可以灵活运用,先查找到某张表的内容,然后再在内容中查找

SQL Server 教程 之 一目了然相关推荐

  1. SQL Server 教程

    SQL Server的版本有很多,版本不同操作也会有些许不一样,本次的<SQL Server教程>是基于SQL Server的2014版本进行教学的:在开始本教程之前,您应该对 SQL S ...

  2. 【SQL Server】阿里云CentOS安装SQL Server教程 含破解3.5G内存的限制、win端远程连接

    参考博客 安装SQL Server: 参考一:https://blog.csdn.net/shengqianfeng/article/details/84572935 参考二:https://blog ...

  3. Docker 安装 SQL Server教程

    本文教你如何快速通过Docker安装SQL Server 前置条件:服务器内存需要于2GB. 安装的版本:SQL Server2017 目录 一.拉取镜像 二.运行容器 三.进入容器 四.远程连接 五 ...

  4. Mac下用docker安装SQL Server教程/全过程分享

    小白第一次写博客,有不对的地方请大家多多指导. 前言: 开始学习数据库了,老师要求装SQL Server,我整整装了三天三夜(眼泪汪汪),积累下一些经验想分享给大家,希望大家不要再经历和我一样的痛苦. ...

  5. sql server教程sql存储过程和算法

    sql 2005分页存储过程实例 /* -------------寒冰制作--------------- ------------------------------------ ---------- ...

  6. 适用于Mac上的SQL Server

    适用于Mac上的SQL Server? 众所周知,很多人都在电脑上安装了SQL Server软件,普通用户直接去官网下载安装即可,Mac用户则该如何在Mac电脑上安装SQL Server呢?想要一款适 ...

  7. SQL Server是什么?SQL Server详细介绍

    一.SQL Server数据库简介 SQL Server数据库是Microsoft开发设计的一个关系数据库智能管理系统(RDBMS),现在是全世界主流数据库之一: SQL Server数据库具备方便使 ...

  8. SQL Server 是什么?

    SQL Server 是什么? 一.SQL Server数据库简介 SQL Server数据库是Microsoft开发设计的一个关系数据库智能管理系统(RDBMS),现在是全世界主流数据库之一: SQ ...

  9. SQL Server 2014 windows身份验证登录失败解决办法

    网上大部分安装SQL Server教程里都默认选择的windows身份验证登录,没有设置sql server账号,因此初次登录时只能通过这一种方式登录,若windows身份验证也不通过,该如何解决呢. ...

最新文章

  1. 新闻媒体的“社会热点事件”催发微博客的诞生
  2. Django项目:CRM(客户关系管理系统)--50--41PerfectCRM实现全局账号密码修改
  3. 7-4 哈利·波特的考试 (25 分)(C语言实现)
  4. C# 多种方式发送邮件(附帮助类)
  5. 复杂的c语言,C语言:复杂数据类型
  6. 万万没想到之抓捕孔连顺
  7. python ipo模型是指什么?
  8. 做移动视频直播应用的思路
  9. 几个项目管理经典小故事,发人深思
  10. FillRect与FrameRect用法
  11. 笔记本html外接显示器,提升效率 笔记本外接显示器(Intel篇)
  12. css定位-css新增选择器(内减,属性,伪类,2d变换,过渡)
  13. spring多参java注解_spring参数注解校验
  14. 通过银行卡号获取所属银行
  15. ESP32游戏机总体设计
  16. SSH登录的两种方式
  17. python生成图片
  18. 安装VMware Tools显示灰色正确解决办法
  19. twilio 短信接口_使用Android Things和Twilio构建短信通知系统
  20. servlet的生命周期 (四个阶段).

热门文章

  1. Matlab - Solidworks 机器人建模(4)—— 如何把SolidWorks模型导入到Matlab (Simscape模型)
  2. 1036:镂空三角形
  3. 一个官网很详细的富文本编辑器
  4. linux服务器filesystem,Linux Filesystem in Userspace(FUSE)
  5. Android 13小米首批支持机型曝光 这4款机型在内
  6. C语言decompose函数,R语言时间序列应用(decompose、Holt-Winters初步)
  7. 云上印尼:“数”影婆娑的千岛之国
  8. 接口测试必知必会知识点
  9. 2007.5 同航驾驶培训公司网站
  10. NYOJ - [第九届河南省程序设计大赛]Decimal integer conversion(暴力)