第一天

下面我们从最基础的开始:

在运行里面输入:services.msc

一、启动服务

二、数据库登录的两种身份验证方式

另外一种身份验证方式就是SQL Server身份验证.

sa不能使用的时候可以这样的操作:

1.用windows登录,然后在“实例”右键“属性”,“安全性”,设置“服务器身份验证方式”

为“SQl Server和windows混合”,点击确定。“重启服务”.

2.启用sa账号。用windows连接好数据库后,点击“安全性”,→“登录名”→右键“sa”属性,→状态→启用,启用后,再找到“常规”选项卡,修改sa的密码。

实例

启用sa账号

相关的登录操作已经介绍完了,接下来开始进入实战

1.创建数据库:

三、创建数据库

怎么样建一张表呢?

四、新建表

五、如何设定自动编号

六、修改创建好的表

七、给表中添加数据

八、数据库中的常用数据类型

上图中列举的是常用的数据库当中的数据类型。

下面分别介绍一下。

有的时候图片信息是存储在数据库里面的,这个时候就要用二进制image类型。

char(10)存的多了不行,如11个,但是少了是可以的。占得空间是固定的。

nchar(10)  性别存储建议用它

char、nchar凡是   前面不带var的都表示固定长度。

varchar、nvarchar则表示可变长度,长度是可变的。

varchar(10); 2,实际存储的时候,会根据实际的数据来动态的计算长度,

对于超出预先声明的长度则会报错,如果不够的,则重新计算,按实际长度来算。

地址一般用可变长度。

nchar(10)

char(10)和nchar(10)的区别:

char(10) 'aaaaaaaaaa','找找找找找'  占10个字节

nchar(10) 'aaaaaaaaaa','找找找找找找找找找找'  ,占20个字节

什么时候用带n的呢?系统用的是带中文的信息,用char就行了。

但是如果我们要在英文的操作系统下执行,还是建议使用带n的。

它们的最大值:varchar(8000)

char(8000)

nvarchar(4000)

nchar(4000)

varchar(10)

nvarchar(10)

varchar(max)文章的内容非常的长时用。

nvarchar(max)

SQL2005以后,不建议使用这个。

text

ntext

数据库的分离和附加

九、分离

十、分离2

十一、附加

十二、附加2

自动编号永远是勇往直前的,不会后退的。

下面介绍用代码的方式创建数据库

十三、新建数据库

十四、创建数据库的代码

接下来时创建表:

十五、在数据库中创建表

十六、go语句

如果我想把我的数据库的脚本拷给我的同事,但是他的现在使用的是SQL2005版本,我用的是SQL2008版本,此时就不能用分离,附加了.请看下面的步骤:

十七、生成脚本步骤一

选择下一步

选择:编写整个数据库的所有的脚本。

十八、生成脚本步骤二

当然这里面还有一些我们可以选择的项。在这不一一叙述了。

关于附加这块可能会遇到些小问题,有问题的朋友可以向我提问?

Ctrl+K+C注释;

Ctrl+K+U取消注释;

结果试图可以用ctrl+R

十九、如何查看表中的数据

下面介绍插入数据的几种形式。

二十、插入数据

这里除去自动编号,不需要人工插入的那些列。

二十一、插入不为空的数据

二十二、转译了

不能为空的列必须插入数据,否则的话会报错的。

二十三、插入自动编号

二十四、插入多行数据

注意这的写法,union在后面详细介绍。

二十五、把现用表中的数据导出到一个新表

二十六、创建一张表,与源表的结构一样,但是不含数据

新增内容

新增建议

二十七、向已有表中插入数据

二十八、插入中文,前面加N

下面介绍更新的常用方法:

二十九、更新一列

三十、同时更新多列数据

先来说一下这个。

三十一、限定条件查询行

三十二、限定列和行查询

三十三、同时更新指定行和指定的列

注意在更新之前先要备份一下,否则会出现令人麻烦的事情。可以做个备份,还原。

三十四、同时限定更新符合两列条件。

同时注意下数据库当中逻辑运算符not and or 的使用;优先级:not and or

三十五、把所有的年龄都加1

在数据库中写加1还是写成图中的形式比较的好。永远这么写,换个地方可能就不能用了。小括号可以改变优先级。

下面介绍下删除数据的两种方式:

三十六、删除指定的数据

三十七、两种删除语句及其区别

图中注释部分是它们之间的区别。

下面介绍下关于约束的一些知识:

建约束以前先把之前的数据都删掉,因为之前的数据都是不合法的。

三十八、建约束第一步

三十九、建约束第二步

四十、建约束第三步

点击:表达式

输入约束条件

点击:确定

四十一、约束执行

四十二、再设定其它的一些约束

四十三、约束获取当前数据库时间

除检查约束外的其它的形式:

默认约束:

四十四、修改默认值

唯一约束

四十五、唯一约束,如身份证号码不能一样

四十六、填好唯一约束的内容

如果我在输入数据的时候,输入的部门是30,而部门表中没有30这个部门。这个时候,我需要设定外键。

外键约束:

四十七、建立外键约束

四十八、外键关系设定

点下:表和列规范

设定好主键表 外键表  以及相关联的ID,注意要一样

点击确定自动生成标识,名称

四十九、设定好的主外键

从图中我们清晰的看到,主键为黄色,外键为灰色。

没有被外键引用的表可以删掉,而被引用的不能删掉。

由于建立了主外建关系会引起一系列的麻烦,所以,一般我们不建。但是,我们通过程序来维护主外建关系。

五十、删除主外建约束前奏

五十一、删除主外建约束一

五十二、删除主外建约束二-级联删除

第二天:

数据库对我们现在工作中的朋友的帮助是相当大的,在大数据处理的时候,可以让我们方面的查询,管理数据。

尤其是当下的电商行业,都是在网络上面进行销售,所以,数据库更加彰显出其魅力。

比如,我在指南针的几年里面,当然是公司设计好的数据库让我们用。对于客户的查询,处理等问题,包括对自己管辖范围内的客户的管理。基本上都是通过数据库来完成的。所以,经常的会用到一些基本的查询,更新,删除等等语句。

在这里我也为大家整理了相关的资料,希望大家喜欢。

一、新建两张表

二、手动删除一列

三、手动增加一列

四、增加一个非空列

五、修改列

下面我们看看数据库中增加约束和删除约束的相关案例:

六、增加一个主键约束

七、增加一个非空约束

八、增加一个唯一约束

九、为性别增加一个默认约束

十、为性别增加一个检查约束

十一、为年龄增加一个检查约束

十二、增加一个外键约束

十三、增加级联删除,更新

十四、删除某个名字的约束

十五、一条语句删除多个约束

十六、用一条语句为表增加多条约束


下面看下数据的检索:

十七、查询学生表

十八、这列是干什么的呢?

图中画圈的部分是干什么的呢?比如,我在中国移动办了个手机号,现在注销了。那么,在中国移动的数据库中我的数据就真的删了么?很多时候,并没有删。对于用户来讲,是删了,只是中国移动做了个标记。就是用户下次再登陆的时候登陆不进去了,但是,并没有删。在记录里面用0和1表示,这个我们一般叫做“软删除”。一般0表示false没有删,1表示true删了。

我只想看其中的三列,这么写,见下图:

十九、只看其中三列的信息

上图中直接显示英文,对于用户来讲不是特别的友好,我现在需要显示它们的中文信息。也就是给列起别名。怎么给列起别名呢?

二十、起别名

二十一、起别名的第2,3种写法

二十二、显示自定义查询结果

二十三、基本检索

二十四、top

二十五、查看前十行且只有姓名

二十六、返回前百分之十

现在数据库里面就有11条数据,返回百分之十,是多少条呢?

答案是:2条。

二十七、排序

二十八、distinct

如果有三列,看三列当中这个的数据有没有重复,有的话,就会去掉重复。

影响表中数据么?根本不影响。

下面我看来看看数据库当中五个常用的聚合函数:

当我们在工作中有什么不会的了,可以点开帮助-索引,输入:聚合函数。

二十九、五种常用聚合函数

下面我们看下带条件查询:

三十、带条件查询1

三十一、带条件查询2  in的用法

接下来我们看下带条件查询-模糊查询

三十二、like查询 %

三十三、like查询 _

三十四、like查询 [  ]

^ 是非的意思,跟正则表达式中一样。

三十五、like查询 ^

下面我们看下数据库中的Null值处理

请你查出年龄不为空的所有人得年龄,怎么查呢?

三十六、null就是unknow的意思

系统没办法识别了,就是比如20不等于不知道。怎么比啊?返回的也是个unknow,在where后面就是个false,所以没有任何的查询记录。

没法用<> 和 = 进行比较,那么我们怎么写呢?

三十七、这么写null判断

三十八、空值的替换

设计器上面要插入个空值的话,得写大写的N,Null。要是什么都没写,不行的,那是个字符串为0的字符串。要是写的小写的null,是字符串为null的字符串。这是我们需要小注意的地方。

下面我们再看下order by语句:

一般都是写在查询语句的最后的。

三十九、按多列的条件进行排序

四十、按表达式排序

一旦有了order by以后这个表就不是集合了。现在只提一下这个概念。

接下来我们看下数据分组:

首先,我们提出几个问题。什么时候才会遇到这个分组情况呢?分组是个什么东西呢?

比如根据籍贯分组,根据男女分组。

Group by在数据汇总统计的时候用,一般和聚合函数一起来用。如果不分组就用聚合函数的话,它是把组里面所有的信息当成了一组来统计。

要是分组了再用聚合函数的话,统计的是每一组的信息。

四十一、按照班级分组

四十二、分组后查询每个组里面有多少个人

现在想看看组中数据大于3的,如果要想对分组再进行筛选,我们用的是having。

四十三、对分组以后再筛选用having

四十四、分组判断的时候需要注意的情况

四十五、分组判断的时候需要注意的情况二

Select 这块哪些列能写?哪些列不能写呢?group by中包含的列和聚合函数都能写,其它的不能写。

为什么呢?还是思考那个问题,当分完组以后,就都是组当中的信息了。在分组之前对数据的筛选用where,它们两个是不能混用的。

四十六、简单的SQL语句执行顺序

了解SQL语句的执行顺序能知道哪用别名?对于理解SQL语句的命令也是有好处的。当然,这里列出的是简单的SQL语句执行顺序。

四十七、Group By练习

下面我看来看下函数的类型转换:

四十八、数据类型转换的两种写法

什么情况下会遇到数据类型的转换呢?

四十九、实际问题中遇到的数据类型转换一

如果不转换的话,将按照字符进行排序。而不是两起来的两个或多个数字进行排序。

五十、实际问题中遇到的数据类型转换二

在日期转换的时候用convert就行了,120是不同数据库中时间的类型。

接下来我们看下联合结果集union(集合运算符)

五十一、union

这里有个需要注意的地方,每列当中相对应的数据类型必须得一样。调一下位置是不行的。要想能联合的话,必须得保证每个列的数量相同,数据类型相同。

五十二、联合中有一列为空的时候

最后查询的结果集是以第一个的列名命名的。

但从姓名和性别看的话,有几条是一样的数据。Union可以去除重复数据,如果不想去除的话,后面加个all

五十三、union all

那么union all在什么时候用呢?

常见应用:底部汇总。

五十四、年龄汇总

五十五、成绩汇总

下面我们看看字符串函数:

这块的学习,使用还是要多借鉴微软的帮助。

五十六、字符串函数

自己可以看看replace,stuff这两个函数怎么用。

再下来我们看看日期函数:

日期函数还是,我们可以在数据库当中的帮助里面输入:日期和时间

五十七、在当前时间增加时间

五十八、计算两个时间的差

五十九、datediff具体的应用

六十、获取时间的某个部分

下面这个案例对做电销工作的朋友非常的实用:

创建一张表,记录电话呼叫员的工作流水,记录呼叫员编号、对方号码、通话开始时间、通话结束时间。建表、插数据等最后都自己写SQL语句。 要求:输出所有数据中通话时间最长的5条记录。orderby datediff 输出所有数据中拨打长途号码(对方号码以0开头)的总时长。like、sum 输出本月通话总时长最多的前三个呼叫员的编号。 输出本月拨打电话次数最多的前三个呼叫员的编号.group by,count(*)

CREATE TABLE [CallRecords]
(
[Id] [int] NOT NULL identity(1,1),
[CallerNumber] [nvarchar](50), --三位数字,呼叫中心员工编号(工号)
[TelNum] [varchar](50),
[StartDateTime] [datetime] NULL,
[EndDateTime] [datetime] NULL --结束时间要大于开始时间,默认当前时间
) --主键约束
alter table [CallRecords]
add constraint PK_CallRecords primary key(id) --检查约束
alter table [CallRecords]
add constraint CK_CallRecords check(CallerNumber like ‘[0-9][0-9][0-9]’) \d{3}错误!! alter table [CallRecords]
add constraint CK_CallRecords_EndDateTime check(EndDateTime > StartDateTime) --默认约束
alter table [CallRecords]
add constraint DF_CallRecords default(getdate()) for EndDateTime INSERT [dbo].[CallRecords] ([CallerNumber], [TelNum], [StartDateTime], [EndDateTime]) VALUES ('', '', CAST(0x00009DAF00A4CB80 AS DateTime), CAST(0x00009DAF00A62E94 AS DateTime));
INSERT [dbo].[CallRecords] ([CallerNumber], [TelNum], [StartDateTime], [EndDateTime]) VALUES ('', '', CAST(0x00009DB000D63BC0 AS DateTime), CAST(0x00009DB000D68DC8 AS DateTime));
INSERT [dbo].[CallRecords] ([CallerNumber], [TelNum], [StartDateTime], [EndDateTime]) VALUES ('', '', CAST(0x00009DB000E85C60 AS DateTime), CAST(0x00009DB000E92F50 AS DateTime));
INSERT [dbo].[CallRecords] ([CallerNumber], [TelNum], [StartDateTime], [EndDateTime]) VALUES ('', '', CAST(0x00009DB2015BB7A0 AS DateTime), CAST(0x00009DB2015C4DA0 AS DateTime));
INSERT [dbo].[CallRecords] ([CallerNumber], [TelNum], [StartDateTime], [EndDateTime]) VALUES ('', '', CAST(0x00009DA4014C9C70 AS DateTime), CAST(0x00009DA4014E0308 AS DateTime));
INSERT [dbo].[CallRecords] ([CallerNumber], [TelNum], [StartDateTime], [EndDateTime]) VALUES ('', '', CAST(0x00009DB400DAA0C0 AS DateTime), CAST(0x00009DB400DD5FE0 AS DateTime));
INSERT [dbo].[CallRecords] ([CallerNumber], [TelNum], [StartDateTime], [EndDateTime]) VALUES ('', '', CAST(0x00009DB200B9AB40 AS DateTime), CAST(0x00009DB200B9FC1C AS DateTime));
INSERT [dbo].[CallRecords] ([CallerNumber], [TelNum], [StartDateTime], [EndDateTime]) VALUES ('', '', CAST(0x00009DB8014042B8 AS DateTime), CAST(0x00009DB80141804C AS DateTime));
INSERT [dbo].[CallRecords] ([CallerNumber], [TelNum], [StartDateTime], [EndDateTime]) VALUES ('', '', CAST(0x00009D9A00FB9898 AS DateTime), CAST(0x00009D9A00FE6118 AS DateTime));
INSERT [dbo].[CallRecords] ([CallerNumber], [TelNum], [StartDateTime], [EndDateTime]) VALUES ('', '', CAST(0x00009D9A00FB9898 AS DateTime), CAST(0x00009D9A00FE6118 AS DateTime));

六十一、通话第一小题

思路:看到通话时长最长的,先求通话时长;最长-倒排序;前五条-top 5

六十二、通话时长第二小题

六十三、通话时长第三小题

六十四、通话时长第四小题

最后一个小题,暂时不公布答案,留个做思考。

SQL server 复习一的更多相关文章

  1. sql server 复习笔记1

    查询数据库是否存在: if DB_ID("testDB")is not null; 检查表是否存在: if OBJECT_ID(“textDB”,“U”) is not null ...

  2. sql server 复习笔记2

    主键约束 可以通过定义primary key 约束来定义主键, 用于强制表的实体化完整性,一个表只能有一个主键约束, 并且primary key 约束中的列不能为空值,由于primary key 约束 ...

  3. Exam 70-462 Administering Microsoft SQL Server 2012 Databases 复习帖

    好吧最近堕落没怎么看书,估计这个月前是考不过了,还是拖到国庆之后考试吧.想着自己复习考试顺便也写点自己的复习的概要,这样一方面的给不准备背题库的童鞋有简便的复习方法(好吧不被题库的同学和我一样看MSD ...

  4. 资料整理,SQL Server ,面试前复习笔记

    T-SQL 要掌握的知识点分类 SQL 面向数据库执行查询 SQL 从数据库取回数据 SQL 在数据库中插入新的记录 SQL 更新数据库中的数据 SQL 从数据库删除记录 SQL 创建新数据库 SQL ...

  5. sql语句复习(基础-提升-技巧-经典数据开发案例-sql server配置)

    1 基础 1.说明:创建数据库 CREATE DATABASE database-name charset=utf8 2.说明:删除数据库 drop database dbname 3.说明:备份sq ...

  6. 复习sql server 2000 MSDE2000 ,安装,打补丁,开1433端口。

    前言: 由于工作需要,一个仍在使用的古董软件需要安装配置. 原有系统是在主机部署,单机安装sql2000,其他机器(分机)也单机部署软件,部署sql2000,通过dtsrun /f sync.dts( ...

  7. Sql Server来龙去脉系列之二 框架和配置

    本节主要讲维持数据的元数据,以及数据库框架结构.内存管理.系统配置等.这些技术点在我们使用数据库时很少接触到,但如果要深入学习Sql Server这一章节也是不得不看.本人能力有限不能把所有核心的知识 ...

  8. 数往知来 SQL SERVER 基本语法<七>

    sqlserver学习_01 启动数据库 开始->cmd->进入控制台    sqlcmd->-S .\sqlexpress    1> 如果出现表示数据库"sqle ...

  9. SQL SERVER 日期转换大全

    博客转自:http://blog.csdn.net/baiduandxunlei/article/details/9180075 CONVERT(data_type,expression[,style ...

随机推荐

  1. Log4Net总结

    Log4Net是用来记录日志的,可以将程序运行过程中的信息输出到一些地方(文件.数据库.EventLog等),日志就是程序的黑匣子,可以通过日志查看系统的运行过程,从而发现系统的问题.日志的作用:将运 ...

  2. UILabel滚动字幕的实现

    经常需要在应用中显示一段很长的文字,比如天气或者广告等,这时候使用滚动字幕的方式比较方便. 参考文献: [1] YouXianMing, 使用UILabel实现滚动字幕移动效果, 博客园 [2] ht ...

  3. linux解压zip、bz、bz2、z、gz、tar(解包)

    zip: 压缩: zip [-AcdDfFghjJKlLmoqrSTuvVwXyz$][-b <工作目录>][-ll][-n <字尾字符串>][-t <日期时间>] ...

  4. Dynamic - ExpandoObject学习心得

    1.  今天下午在做开发过程中,遇到了一个问题,要往Xml文件中添加新的节点,做个xml开发的都知道该怎么做,这不是什么难事,我卡卡卡卡把这个问题解决了,但是新问题又来了,要对xml中对应的节点数据添 ...

  5. js 如何获取文本框中光标索引位置

    function getTxt1CursorPosition(){ var oTxt1 = document.getElementById("txt1"); var cursurP ...

  6. 使用JavaScript实现弹出层效果

    声明 阅读本文需要有一定的HTML.CSS和JavaScript基础 设计 实现弹出层效果的思路非常简单:将待显示的内容先隐藏,在触发某种条件后(如点击按钮),将原本隐藏的内容显示出来. 实现 < ...

  7. [大牛翻译系列]Hadoop(3)MapReduce 连接:半连接(Semi-join)

    4.1.3 半连接(Semi-join) 假设一个场景,需要连接两个很大的数据集,例如,用户日志和OLTP的用户数据.任何一个数据集都不是足够小到可以缓存在map作业的内存中.这样看来,似乎就不能使用 ...

  8. linux c 分解质因数

    #include <stdio.h> #include <stdlib.h> #include <string.h> #include <math.h> ...

  9. hive中简单介绍分区表

    所介绍内容基本上是翻译官方文档,比较肤浅,如有错误,请指正! hive中创建分区表没有什么复杂的分区类型(范围分区.列表分区.hash分区.混合分区等).分区列也不是表中的一个实际的字段,而是一个或者 ...

  10. C# list 去重

    /// <summary> /// 汽车商标 获取 /// Redis Key=zgqp315_Redis_TrademarkC_List /// </summary> /// ...