T-SQL 基础学习 02
1 数据库设计 2 3 定义 4 5 数据库设计就是将数据库中的数据实体以及这些数据实体之间关系,进行规划和结构化的过程 6 7 在需求分析阶段,设计数据库的一般步骤 8 9 A. 收集相信 10 11 B. 标识实体 12 13 C. 标记每个实体需要存储的详细信息/属性 14 15 D. 标识实体之间的关系 16 17 在概要设计阶段和详细设计阶段数据库设计步骤: 18 19 1. 绘制E-R图 20 21 2. 将E-R图转化为数据库模型图 22 23 3. 应用三大范式规范化表设计 24 25 数据库E-R图 26 27 定义 28 29 1.实体 30 31 现实世界中具有区分其他事物的特征或属性并与其他实体有联系的实体 32 33 2.属性 34 35 实体的特征 36 37 3.联系 38 39 两个或者多个实体之间的关联关系 40 41 4.映射基数 42 43 表示通过联系与该实体关联的其他实体的个数 44 45 一对一: 46 47 X中的一个实体最多与Y中的一个实体关联,并且Y中的一个实体最多与X中的一个实体关联 48 49 一对多: 50 51 X中的一个实体可以与Y中的任意数量的实体关联 52 53 多对一: 54 55 X中的一个实体最多与Y中的一个实体关联 56 57 多对多: 58 59 X中的一个实体可以与Y中的任意数量的实体关联 60 61 关系数据库模式 62 63 定义 64 65 一个关系描述为属性名的集合称为关系模式. 66 67 关系数据库模式是对关系数据库结构的描述,或者说是对关系数据库框架的描述 68 69 规范设计 70 71 第一范式(1NF,Normal Formate) 72 73 第一范式的目标是确保每列的原子性 74 75 第二范式(2NF) 76 77 第二范式是在第一范式的基础上更进一层,其目标是确保表中的每列都和主键相关 78 79 第三范式(3NF) 80 81 第三范式在第二范式的基础上更进一层.第三范式的目标是确保每列都和主键列直接相关,而不是间接相关 82 83 满足三大范式之俗语 84 85 第一范式 86 87 细到不能再分 88 89 第二范式 90 91 必须和主键相关 92 93 第三范式 94 95 各列必须和主键直接相关,不能间接相关 96 97 数据库文件三大部分 98 99 主数据文件: 100 101 *.mdf 102 103 次要数据文件: 104 105 *.ndf 106 107 日志文件: 108 109 *.ldf 110 111 每个数据库至少要包含两个文件:一个数据库文件和一个日志文件 112 113 经验 114 115 为了保证数据的安全性,提高存储速度,我们应该将数据文件和日志文件分别放置在不同的驱动器上 116 117 创建数据库 118 119 语法 120 121 CREATE DATABASE数据库名 122 123 ON PRIMARY --该选项是一个关键字,指定主文件组中的文件 124 125 ( 126 127 NAME=’数据库名’ --主数据文件的逻辑名称 128 129 FILENAME=’数据库路径’ –主数据文件的物理名称 130 131 SIZE=数据库大小 –主数据库文件的初始大小 132 133 MAXSIZE=数据库最大大小 –主数据文件增长的最大值 134 135 UNLIMITED --不受限制,大小为盘符的最大值 136 137 FILEGROWTH=’大小增长率’ --主数据文件的增长率,当值为0时不增长 138 139 ) 140 141 142 143 LOG ON 144 145 ( 146 147 NAME=’’, 148 149 FILENAME=’’, 150 151 SIZE=, 152 153 FILEGROWTH= 154 155 ) 156 157 GO --和后续的SQL语句分隔开 158 159 修改数据库 160 161 ALTER DATABASE数据库名 162 163 ADD FILE --添加数据文件 164 165 ( 166 167 ……. 168 169 ) 170 171 ADD LOG FILE --添加日志文件 172 173 ( 174 175 …… 176 177 ) 178 179 创建多个数据文件和多个日志文件 180 181 CREATE DATABASE数据库名 182 183 ON PRIMARY 184 185 ( 186 187 ….. 188 189 ), 190 191 ( 192 193 ….. 194 195 ) 196 197 LOG ON 198 199 ( 200 201 ….. 202 203 ), 204 205 ( 206 207 ….. 208 209 ) 210 211 删除数据库 212 213 语法 214 215 DROP DATABASE数据库名 216 217 创建数据库前先判定一下 218 219 USE master --设置当前为master数据库,以便访问指定表 220 221 GO 222 223 IF EXISTS(SELECT * FROM sysdatabasesWHERE name=’指定表名’) 224 225 DROP DATABASE数据库名 226 227 CREATE DATABASE数据库名 228 229 ON 230 231 ( 232 233 ….. 234 235 ) 236 237 LOG ON 238 239 ( 240 241 …. 242 243 ) 244 245 GO 246 247 248 249 EXISTS(查询语句)监测某个查询是否存在 250 251 系统存储过程扩展 252 253 xp_cmdshell是SQL Server扩展存储过程 254 255 在操作系统的指定路径下创建文件夹 256 257 EXEC sp_configure ‘showadvanced options’,1 –在使用xp_cmdshell前先执行sp_configure 258 259 GO 260 261 RECONFIGURE --重启RECONFIGURE 262 263 GO 264 265 EXEC sp_configure ‘xp_cmdshell’,1 266 267 GO 268 269 RECONFIGURE 270 271 GO 272 273 EXEC xp_cmdshell ‘MD D:\Student’ --用创建的xp_cmdshell来创建Student文件夹 274 275 GO 276 277 查询当前数据库中是否有表 278 279 语法 280 281 SELECT * FROM SYSOBJECTS WHERE XTYPE='U' 282 283 创建表 284 285 语法 286 287 CREATE TABLE 表名 288 289 ( 290 291 列1 数据类型列的特征 292 293 列2 数据类型列的特征 294 295 ……… 296 297 ) 298 299 列的特征: 包括该列是否为空(NULL),是否是标识列(自动编号),是否有默认值/主键等 300 301 修改表 302 303 语法 304 305 ALTER TABLE表名 306 307 ALTER COLUMN列名 varchar(20) not null 308 309 GO 310 311 ALTER TABLE表名 312 313 ADD列名类型 –创建一个列 314 315 GO 316 317 删除表 318 319 语法 320 321 DROP TABLE表名 322 323 数据库表存储位置 324 325 当前数据库系统表:sysobjects 326 327 所有数据库信息表:sysdatabases 328 329 创建表的完整语法 330 331 USE数据库名 332 333 GO 334 335 IF EXISTS(SELECT * FROM sysobjectsWHERE name=’表名’) //下面的3个表名必须一致 336 337 DROP TABLE表名 338 339 CREATE TABLE表名 340 341 ( 342 343 列名类型是否允许为空约束名自动增长(种子,增长率)(IDENTITY(1,1)) 344 345 …. 346 347 ) 348 349 GO 350 351 注意 352 353 使用DROP TABLE语句之前,首先要确认表中是否没有客户的业务数据了.. 354 355 要养成随时备份数据库的习惯 356 357 使用SQL语句创建和删除约束 358 359 数据完整性 360 361 指数据的正确性和相容性 362 363 实体完整性 364 365 唯一确定表中一行记录 366 367 域完整性 368 369 表中特定列数据的有效性,以确保不会输入无效的数值 370 371 引用完整性 372 373 插入或删除记录时,维护表之间定义的关系 374 375 自定义完整性 376 377 定义不属于以上三种完整性的特定业务规则 378 379 添加约束 380 381 语法 382 383 ALTER TABLE表名 384 385 ADD CONSTRAINT约束名约束类型具体的约束说明 386 387 常用约束即用法 388 389 主键约束(Primary Key Constraint) 390 391 ALTER TABLE表名 392 393 ADD CONSTRAINT约束名 PRIMARY KEY(列名) 推荐约束名:PK_** 394 395 非空约束(Not NULL) 396 397 NOT NULL 398 399 唯一约束(Unique Constraint) 400 401 ALTER TABLE表名 402 403 ADD CONSTRAINT约束名 UNIQUE (列名) 推荐约束名:UQ_** 404 405 检查约束(Check Constaint) 406 407 ALTER TABLE表名 408 409 ADD CONSTRAINT约束名 CHECK (条件) 推荐约束名:CK_** 410 411 默认约束(Default Constraint) 412 413 ALTER TABLE表名 414 415 ADD CONSTRAINT约束名DEFAULT (‘默认值’) FOR列名 推荐约束名:DF_** 416 417 外键约束(Foreign Key Constraint) 418 419 ALTER TABLE表名 420 421 ADD CONSTRAINT约束名 推荐约束名:FK_** 422 423 FOREIGN KEY(列名) REFERENCES表名(列名) 424 425 GO 426 427 创建表的时候创建约束 428 429 CREATE TABLE表名 430 431 ( 432 433 列名类型 NOT NULL 约束名(PRIMARY KEY) 434 435 列名类型 NOT NULL 约束名(UNIQUE) 436 437 列名类型 NOT NULL 约束名(DEFAULT) ‘默认值’ 438 439 ……. 440 441 ) 442 443 删除约束 444 445 语法 446 447 ALTER TABLE表名 448 449 DROP CONSTRAINT约束名 450 451 在已有表中添加约束 452 453 方法 454 455 方法一: --数据正确性要求比较高 456 457 1. 导出数据 458 459 2. 在空记录表中添加约束 460 461 3. 导入数据 462 463 方法二: --非金融行业 464 465 ALTER TABLE表名 WITH NOCHECK 466 467 ADDCONSTRAINT约束名 CHECK (条件) 468 469 同时添加多个约束 470 471 例子 472 473 ALTER TABLEStudent 474 475 ADD CONSTRAINT PK_StudentPRIMARYKEY (StudentNo), 476 477 CONSTRAINT UQ_StudentUNIQUE (IdentityCard), 478 479 CONSTRAINT DF_StudentDEFAULT ('地址不详')FOR Address, 480 481 CONSTRAINT CK_StudentCHECK(BornDate>1980-01-01), 482 483 CONSTRAINT FK_StudentFOREIGN KEY (GradeID)REFERENCES Grade(GradeID) 484 485 GO
转载出至:http://blog.csdn.net/heqingsong1/article/details/7495496