图书目录

? 目    录

第1章  初识SQL Server 2017 1

1.1  认识SQL Server 2017 1

1.1.1  SQL Server 2017新特点 1

1.1.2  SQL Server 2017的版本 2

1.2  SQL Server 2017的组件 3

1.2.1  SQL Server 2017的数据库引擎 3

1.2.2  分析服务 4

1.2.3  集成服务 4

1.2.4  报表服务 4

1.3  SQL Server 2017的新增功能 4

1.3.1  数据库引擎中的新增功能 4

1.3.2  集成服务中的新增功能 5

1.3.3  分析服务中的新增功能 6

1.3.4  报表服务中的新增功能 6

1.3.5  机器学习中的新增功能 7

1.3.6  主数据服务中的新增功能 7

1.4  疑难解答 8

1.5  经典习题 8

第2章  SQL Server 2017的安装和配置 9

2.1  安装SQL Server 2017 9

2.1.1  SQL Server 2017安装环境需求 9

2.1.2  安装SQL Server 2017 10

2.1.3  SQL Server 2017常见实用程序 18

2.2  安装SQL Server Management Studio 20

2.3  SQL Server Management Studio基本操作 21

2.3.1  SSMS的启动与连接 22

2.3.2  使用模板资源管理器 23

2.3.3  解决方案和项目脚本 24

2.3.4  配置服务器的属性 25

2.3.5  查询编辑器的应用 32

2.4  疑难解惑 36

2.5  经典习题 36

第3章  Transact-SQL语言基础 37

3.1  Transact-SQL概述 37

3.1.1  什么是Transact-SQL 38

3.1.2  T-SQL语法的约定 38

3.1.3  标识符的命名规则 40

3.2  常量 41

3.2.1  数字常量 41

3.2.2  字符串常量 42

3.2.3  日期和时间常量 42

3.2.4  符号常量 42

3.3  变量 43

3.3.1  全局变量 43

3.3.2  局部变量 46

3.3.3  批处理和脚本 47

3.4  运算符和表达式 49

3.4.1  算术运算符 49

3.4.2  比较运算符 49

3.4.3  逻辑运算符 50

3.4.4  连接运算符 50

3.4.5  按位运算符 50

3.4.6  运算符的优先级 51

3.4.7  什么是表达式 51

3.4.8  表达式的分类 51

3.5  Transact-SQL语言中的通配符 52

3.6  Transact-SQL语言中的注释 53

3.7  疑难解惑 54

3.8  经典习题 54

第4章  Transact-SQL语句的应用 55

4.1  数据定义语句 55

4.1.1  创建对象CREATE语句 55

4.1.2  删除对象DROP语句 59

4.1.3  修改对象ALTER语句 59

4.2  数据操作语句 61

4.2.1  数据插入INSERT语句 62

4.2.2  数据修改UPDATE语句 63

4.2.3  数据删除DELETE语句 64

4.2.4  数据查询SELECT语句 65

4.3  数据控制语句 67

4.3.1  授予权限GRANT语句 67

4.3.2  收回权限REVOKE语句 68

4.3.3  禁止权限DENY语句 68

4.4  其他基本语句 69

4.4.1  数据声明DECLARE语句 69

4.4.2  数据赋值SET语句 70

4.4.3  数据输出PRINT语句 71

4.5  流程控制语句 71

4.5.1  BEGIN…END语句 71

4.5.2  IF…ELSE语句 72

4.5.3  CASE语句 73

4.5.4  WHILE语句 75

4.5.5  GOTO语句 76

4.5.6  WAITFOR语句 77

4.5.7  RETURN语句 78

4.6  批处理语句 78

4.7  疑难解惑 80

4.8  经典习题 80

第5章  数据库的创建与管理 81

5.1  数据库组成 81

5.1.1  数据文件 82

5.1.2  日志文件 82

5.2  系统数据库 82

5.2.1  master数据库 83

5.2.2  model数据库 83

5.2.3  msdb数据库 83

5.2.4  tempdb数据库 83

5.3  创建数据库 83

5.3.1  使用SSMS创建数据库 84

5.3.2  使用T-SQL语句创建数据库 87

5.4  使用SSMS管理数据库 90

5.4.1  修改数据库的方法 90

5.4.2  修改数据库的初始大小 91

5.4.3  增加数据库的容量 92

5.4.4  缩减数据库的容量 93

5.4.5  修改数据库的名称 93

5.5  使用T-SQL管理数据库 94

5.5.1  ALTER DATABASE的语法结构 94

5.5.2  修改数据库数据文件的初始大小 95

5.5.3  使用T-SQL语句增加数据库容量 95

5.5.4  使用T-SQL语句缩减数据库容量 96

5.5.5  使用T-SQL语句修改数据库名称 97

5.6  查看数据库信息 98

5.6.1  使用目录视图 98

5.6.2  使用函数查看数据库信息 98

5.6.3  使用系统存储过程 100

5.6.4  使用SSMS查看数据库信息 100

5.7  删除数据库 101

5.7.1  使用SSMS删除数据库 101

5.7.2  使用T-SQL语句删除数据库 102

5.8  疑难解惑 102

5.9  经典习题 103

第6章  数据表的创建与管理 104

6.1  认识数据库对象 104

6.1.1  数据表 104

6.1.2  视图 105

6.1.3  索引 105

6.1.4  存储过程 105

6.1.5  触发器 105

6.2  数据类型 106

6.2.1  基本数据类型 106

6.2.2  自定义数据类型 109

6.2.3  删除自定义数据类型 111

6.3  创建数据表 113

6.3.1  在SSMS中创建数据表 113

6.3.2  使用T-SQL创建数据表 114

6.4  管理数据表 115

6.4.1  增加表字段 116

6.4.2  修改表字段 118

6.4.3  删除表字段 119

6.5  查看数据表 121

6.5.1  查看表结构 121

6.5.2  查看表信息 121

6.5.3  查看表数据 122

6.5.4  查看表关系 122

6.6  删除数据表 123

6.6.1  以界面方式删除数据表 123

6.6.2  使用T-SQL语句删除数据表 124

6.7  疑难解惑 125

6.8  经典习题 125

第7章  约束数据表中的数据 127

7.1  认识数据表中的约束 127

7.2  主键约束 128

7.2.1  在创建表时添加主键约束 128

7.2.2  在现有表中添加主键约束 130

7.2.3  定义多字段联合主键约束 132

7.2.4  删除主键约束 132

7.3  外键约束 133

7.3.1  在创建表时添加外键约束 133

7.3.2  在现有表中添加外键约束 135

7.3.3  删除外键约束 136

7.4  默认值约束 137

7.4.1  在创建表时添加默认值约束 138

7.4.2  在现有表中添加默认值约束 139

7.4.3  删除默认值约束 141

7.5  检查约束 142

7.5.1  在创建表时添加检查约束 142

7.5.2  在现有表中添加检查约束 144

7.5.3  删除检查约束 145

7.6  唯一性约束 146

7.6.1  在创建表时添加唯一性约束 146

7.6.2  在现有表中添加唯一性约束 149

7.6.3  删除唯一性约束 150

7.7  非空约束 151

7.7.1  在创建表时添加非空约束 151

7.7.2  在现有表中添加非空约束 152

7.7.3  删除非空约束 153

7.8  使用SSMS管理数据表中的约束 153

7.8.1  使用SSMS管理主键约束 153

7.8.2  使用SSMS管理外键约束 155

7.8.3  使用SSMS管理默认值约束 158

7.8.4  使用SSMS管理检查约束 160

7.8.5  使用SSMS管理唯一性约束 163

7.8.6  使用SSMS管理非空约束 165

7.9  疑难解惑 166

7.10  经典习题 166

第8章  管理数据表中的数据 168

8.1  使用INSERT语句插入数据 168

8.1.1  INSERT语句的语法规则 168

8.1.2  向表中所有字段插入数据 169

8.1.3  向表中指定字段插入数据 172

8.1.4  一次插入多行数据记录 173

8.1.5  将查询结果插入到表中 174

8.2  使用UPDATE语句修改数据 176

8.2.1  UPDATE语句的语法规则 177

8.2.2  修改表中某列所有数据记录 177

8.2.3  修改表中指定单行数据记录 178

8.2.4  修改表中指定多行数据记录 179

8.2.5  修改表中前N条数据记录 179

8.3  使用DELETE语句删除数据 180

8.3.1  DELETE语句的语法规则 180

8.3.2  删除表中的指定数据记录 181

8.3.3  删除表中前N条数据记录 182

8.3.4  删除表中的所有数据记录 183

8.4  在SSMS中管理数据表中的数据 184

8.4.1  向数据表中添加数据记录 184

8.4.2  修改数据表中的数据记录 185

8.4.3  删除数据表中的数据记录 185

8.5  疑难解惑 186

8.6  经典习题 187

第9章  查询数据表中的数据 188

9.1  查询工具的使用 188

9.1.1  SQL Server查询窗口 188

9.1.2  查询结果的显示方法 190

9.2  数据的简单查询 192

9.2.1  查询表中的全部数据 192

9.2.2  查询表中的指定数据 193

9.2.3  使用TOP关键字查询 193

9.2.4  查询的列为表达式 194

9.2.5  对查询结果排序 194

9.2.6  对查询结果分组 195

9.2.7  对分组结果过滤查询 196

9.3  使用WHERE子句进行条件查询 197

9.3.1  使用关系表达式查询 197

9.3.2  使用BETWEEN AND范围查询 199

9.3.3  使用IN关键字查询 200

9.3.4  使用LIKE关键字查询 200

9.3.5  使用IS NULL查询空值 203

9.4  使用聚合函数进行统计查询 204

9.4.1  使用SUM()求列的和 204

9.4.2  使用AVG()求列平均值 205

9.4.3  使用MAX()求列最大值 206

9.4.4  使用MIN()求列最小值 207

9.4.5  使用COUNT()统计 208

9.5  疑难解惑 210

9.6  经典习题 210

第10章  数据表中数据的高级查询 212

10.1  多表之间的子查询 212

10.1.1  使用比较运算符的子查询 212

10.1.2  使用IN的子查询 215

10.1.3  使用ANY的子查询 216

10.1.4  使用ALL的子查询 217

10.1.5  使用SOME的子查询 217

10.1.6  使用EXISTS的子查询 218

10.2  多表内连接查询 220

10.2.1  笛卡儿积查询 220

10.2.2  内连接的简单查询 221

10.2.3  相等内连接的查询 221

10.2.4  不等内连接的查询 222

10.2.5  特殊的内连接查询 222

10.2.6  带条件的内连接查询 223

10.3  多表外连接查询 223

10.3.1  认识外连接查询 223

10.3.2  左外连接的查询 224

10.3.3  右外连接的查询 225

10.3.4  全外连接的查询 225

10.4  动态查询 226

10.5  疑难解惑 226

10.6  经典习题 227

第11章  系统函数与自定义函数 229

11.1  SQL Server 2017函数简介 229

11.2  字符串函数 230

11.2.1  ASCII()函数 230

11.2.2  CHAR()函数 230

11.2.3  LEFT()函数 230

11.2.4  RIGHT()函数 231

11.2.5  LTRIM()函数 231

11.2.6  RTRIM()函数 232

11.2.7  STR()函数 232

11.2.8  REVERSE(s)函数 232

11.2.9  LEN(str)函数 233

11.2.10  CHARINDEX函数 233

11.2.11  SUBSTRING()函数 234

11.2.12  LOWER()函数 234

11.2.13  UPPER()函数 235

11.2.14  REPLACE(s,s1,s2)函数 235

11.3  数学函数 235

11.3.1  ABS(x)函数 236

11.3.2  PI()函数 236

11.3.3  SQRT(x) 函数 236

11.3.4  RAND()和RAND(x)函数 236

11.3.5  ROUND(x,y)函数 237

11.3.6  SIGN(x) 函数 237

11.3.7  CEILING(x)和FLOOR(x)函数 238

11.3.8  POWER(x,y)、SQUARE(x)和EXP(x)函数 238

11.3.9  LOG(x)和LOG10(x)函数 239

11.3.10  RADIANS(x)和DEGREES(x)函数 240

11.3.11  SIN(x)和ASIN(x)函数 240

11.3.12  COS(x)和ACOS(x)函数 241

11.3.13  TAN(x)、ATAN(x)与COT(x)函数 242

11.4  日期和时间函数 242

11.4.1  GETDATE()函数 243

11.4.2  UTCDATE()函数 243

11.4.3  DAY(d)函数 243

11.4.4  MONTH(d)函数 244

11.4.5  YEAR(d)函数 244

11.4.6  DATENAME(dp,d)函数 244

11.4.7  DATEPART(dp,d)函数 245

11.4.8  DATEADD(dp,num,d)函数 245

11.5  系统信息函数 246

11.5.1  COL_LENGTH(table,column)函数 246

11.5.2  COL_NAME (table_id,column_id)函数 247

11.5.3  DATALENGTH (expression)函数 247

11.5.4  DB_ID(database_name) 247

11.5.5  DB_NAME(database_id)函数 248

11.5.6  GETANSINULL()(database_name)函数 248

11.5.7  HOST_ID()函数 249

11.5.8  HOST_NAME()函数 249

11.5.9  OBJECT_ID()函数 249

11.5.10  SUSER_SID (login_name)函数 250

11.5.11  SUSER_SNAME()函数 250

11.5.12  OBJECT_NAME()函数 251

11.5.13  USER_ID(user)函数 251

11.5.14  USER_NAME(id)函数 251

11.6  数据类型转换函数 252

11.6.1  CAST()函数 252

11.6.2  CONVERT()函数 252

11.7  文本和图像函数 253

11.7.1  TEXTPTR函数 253

11.7.2  TEXTVALID函数 254

11.8  自定义函数 254

11.8.1  自定义函数的语法 254

11.8.2  创建标量函数 255

11.8.3  创建表值函数 257

11.8.4  修改自定义函数 260

11.8.5  删除自定义函数 260

11.9  在SSMS中管理自定义函数 261

11.9.1  创建自定义函数 261

11.9.2  修改自定义函数 263

11.9.3  删除自定义函数 263

11.10  疑难解惑 264

11.11  经典习题 264

第12章  视图的创建与应用 266

12.1  什么是视图 266

12.1.1  视图的概念 266

12.1.2  视图的作用 267

12.1.3  视图的分类 268

12.2  创建视图 269

12.2.1  创建视图的语法规则 269

12.2.2  在单表上创建视图 270

12.2.3  在多表上创建视图 272

12.3  修改视图 273

12.3.1  修改视图的语法规则 273

12.3.2  修改视图的具体内容 273

12.3.3  重命名视图的名称 274

12.4  查看视图信息 275

12.4.1  通过SSMS查看 275

12.4.2  使用系统存储过程查看 276

12.5  通过视图更新数据 277

12.5.1  通过视图插入数据 277

12.5.2  通过视图修改数据 279

12.5.3  通过视图删除数据 280

12.6  删除视图 281

12.6.1  删除视图的语法 281

12.6.2  删除不用的视图 282

12.7  在SSMS中管理视图 282

12.7.1  创建视图 282

12.7.2  修改视图 284

12.7.3  删除视图 285

12.8  疑难解惑 285

12.9  经典习题 286

第13章  事务和锁的应用 287

13.1  事务管理 287

13.1.1  事务的原理 288

13.1.2  事务管理的常用语句 289

13.1.3  事务的隔离级别 289

13.1.4  事务的应用实例 290

13.2  锁的应用 292

13.2.1  锁的内涵与作用 292

13.2.2  可锁定资源与锁的类型 293

13.2.3  死锁的原因 294

13.2.4  锁的应用实例 295

13.3  疑难解惑 299

13.4  经典习题 299

第14章  索引的创建和使用 300

14.1  什么是索引 300

14.1.1  索引的作用 300

14.1.2  索引的优缺点 301

14.1.3  索引的分类 301

14.1.4  索引的设计准则 302

14.2  创建索引 303

14.2.1  创建索引的语法 303

14.2.2  创建聚集索引 305

14.2.3  创建非聚集索引 306

14.2.4  创建复合索引 306

14.3  修改索引 307

14.3.1  修改索引的语法 307

14.3.2  禁用启用索引 307

14.3.3  重新生成索引 308

14.3.4  修改索引的名称 309

14.4  查看索引 309

14.4.1  查看数据表中的索引 310

14.4.2  查看索引的统计信息 310

14.5  删除索引 311

14.5.1  删除索引的语法 311

14.5.2  删除一个索引 312

14.5.3  同时删除多个索引 313

14.6  在SSMS中管理索引 313

14.6.1  在SSMS中创建索引 313

14.6.2  在SSMS中查看索引 315

14.6.3  在SSMS中修改索引 316

14.6.4  在SSMS中删除索引 317

14.7  疑难解惑 318

14.8  经典习题 319

第15章  游标的创建与应用 320

15.1  认识游标 320

15.1.1  游标的概念 320

15.1.2  游标的优点 321

15.1.3  游标的分类 321

15.2  游标的基本操作 322

15.2.1  声明游标 322

15.2.2  打开游标 324

15.2.3  读取游标 324

15.2.4  关闭游标 326

15.2.5  释放游标 326

15.3  游标的运用 327

15.3.1  使用游标变量 327

15.3.2  用游标为变量赋值 328

15.3.3  改变游标中行的顺序 329

15.3.4  使用游标修改数据 330

15.3.5  使用游标删除数据 331

15.4  使用系统存储过程查看游标属性 332

15.4.1  查看服务器游标的属性 332

15.4.2  查看当前连接的服务器游标属性 334

15.4.3  查看服务器游标结果集中的列属性 336

15.4.4  查看服务器游标被引用对象或基本表的属性 337

15.5  疑难解惑 339

15.6  经典习题 339

第16章  存储过程的创建与应用 340

16.1  认识存储过程 340

16.1.1  存储过程的优点 340

16.1.2  存储过程的类型 341

16.2  创建存储过程 342

16.2.1  创建存储过程的语法 342

16.2.2  创建不带参数的存储过程 343

16.2.3  创建带输入参数的存储过程 344

16.2.4  创建带输出参数的存储过程 345

16.2.5  创建带加密选项的存储过程 346

16.3  执行存储过程 346

16.3.1  执行存储过程的语法 347

16.3.2  执行不带参数的存储过程 348

16.3.3  执行带输入参数的存储过程 348

16.3.4  执行带输出参数的存储过程 350

16.4  修改存储过程 350

16.4.1  修改存储过程的语法 350

16.4.2  修改存储过程的内容 351

16.4.3  修改存储过程的名称 352

16.5  查看存储过程 352

16.5.1  使用sp_helptext查看 352

16.5.2  使用sys.sql_modules查看 353

16.5.3  使用OBJECT_DEFINITION查看 353

16.6  删除存储过程 354

16.6.1  删除存储过程的语法 354

16.6.2  删除不需要的存储过程 354

16.7  在SSMS中管理存储过程 355

16.7.1  在SSMS中创建存储过程 356

16.7.2  在SSMS中执行存储过程 357

16.7.3  在SSMS中修改存储过程 358

16.7.4  在SSMS中重命名存储过程 358

16.7.5  在SSMS中查看存储过程信息 359

16.7.6  在SSMS中删除存储过程 360

16.8  疑难解惑 360

16.9  经典习题 361

第17章  触发器的创建与应用 362

17.1  认识触发器 362

17.1.1  触发器的概念 362

17.1.2  触发器的作用 363

17.1.3  触发器的分类 363

17.2  创建触发器 364

17.2.1  创建DML触发器 364

17.2.2  创建DDL触发器 369

17.2.3  创建登录触发器 371

17.3  修改触发器 373

17.3.1  修改DML触发器 373

17.3.2  修改DDL触发器 374

17.3.3  修改登录触发器 375

17.4  管理触发器 376

17.4.1  禁用触发器 376

17.4.2  启用触发器 377

17.4.3  查看触发器 378

17.4.4  删除触发器 379

17.4.5  重命名触发器 379

17.5  认识其他触发器 380

17.5.1  替代触发器 380

17.5.2  嵌套触发器 381

17.5.3  递归触发器 382

17.6  在SSMS中管理触发器 383

17.6.1  在SSMS中创建触发器 383

17.6.2  在SSMS中修改触发器 384

17.6.3  在SSMS中查看触发器 385

17.6.4  在SSMS中删除触发器 385

17.7  疑难解惑 386

17.8  经典习题 386

第18章  数据安全相关对象的管理 387

18.1  与数据库安全相关的对象 387

18.2  登录账户的管理 389

18.2.1  创建登录账户 389

18.2.2  修改登录账户 391

18.2.3  删除登录账户 392

18.3  在SSMS中管理登录账户 392

18.3.1  创建登录账户 392

18.3.2  修改登录账户 394

18.3.3  删除登录账户 395

18.4  SQL Server的角色管理 396

18.4.1  固定服务器角色 396

18.4.2  数据库角色 397

18.4.3  自定义数据库角色 397

18.4.4  应用程序角色 400

18.4.5  将登录指派到角色 402

18.4.6  将角色指派到多个登录账户 402

18.5  SQL Server的权限管理 404

18.5.1  认识权限 404

18.5.2  授予权限 404

18.5.3  拒绝权限 406

18.5.4  撤销权限 407

18.6  疑难解惑 408

18.7  经典习题 408

第19章  数据库的备份与恢复 409

19.1  认识数据库的备份与恢复 409

19.1.1  数据库的备份类型 410

19.1.2  数据库的恢复模式 410

19.1.3  配置数据库的恢复模式 411

19.2  数据库的备份设备 412

19.2.1  数据库的备份设备 412

19.2.2  创建数据库备份设备 413

19.2.3  查看数据库备份设备 414

19.2.4  删除数据库备份设备 415

19.3  数据库的备份 416

19.3.1  完整备份与差异备份 416

19.3.2  文件和文件组备份 418

19.3.3  事务日志的备份 420

19.4  数据库的还原 421

19.4.1  还原数据库的方式 421

19.4.2  还原前的注意事项 422

19.4.3  完整备份的还原 424

19.4.4  差异备份的还原 426

19.4.5  事务日志备份的还原 427

19.4.6  文件和文件组备份的还原 428

19.5  在SSMS中备份还原数据库 429

19.5.1  在SSMS中备份数据库 429

19.5.2  还原数据库备份文件 430

19.5.3  还原文件和文件组备份 432

19.6  疑难解惑 433

19.7  经典习题 434

第20章  数据库系统的自动化管理 435

20.1  认识SQL Server代理 435

20.1.1  什么是SQL Server代理 435

20.1.2  设置SQL Server代理 436

20.1.3  启动SQL Server代理 438

20.1.4  关闭SQL Server代理 438

20.2  SQL Server代理中的作业 440

20.2.1  创建一个作业 440

20.2.2  定义一个作业步骤 440

20.2.3  创建一个作业执行计划 441

20.2.4  查看与管理作业 442

20.3  管理中的维护计划 444

20.3.1  认识维护计划 444

20.3.2  使用向导创建维护计划 445

20.4  SQL Server代理中的警报 447

20.4.1  创建警报 447

20.4.2  查看警报 447

20.4.2  3  删除警报 448

20.5  SQL Server代理中的操作员 449

20.5.1  创建操作员 449

20.5.2  使用操作员 450

20.6  疑难解惑 451

20.7  经典习题 451