优化MySchool数据库(二)
优化School数据库(TSQL建库建表建约束)
使用T_sql代码建库、建表、建约束:
建库:
Create database HotelManagerSystem
on
(
---- 数据文件---
)
log on
(
---- 日志文件
)
【当有多日志、多数据文件时,以逗号分隔,连续定义就可以了】
Create database 数据库名
on
(),(),()
log on
(),()
数据库文件的主要参数:
name 、filename、size、maxsize 、filegrouwth
注意:
如果数据库在正常运行过程中,如何“动态添加”数据文件呢?
ALTER DATABASE 数据库名
ADD FILE
( NAME = 文件名,
FILENAME = ‘c:\temp\....’,
SIZE = 10MB,
FILEGROWTH = 10MB
)
ALTER DATABASE 数据库名
1、REMOVE FILE 文件名;
2、MODIFY FILE(Name = 文件名, FileGrowth = 50MB)
如何判断“数据库是否依据存在”?
方式一:
Exists(select * from sysdatabases where name = '数据库名')
方式二:
db_id('数据库名') is not null
-------------------------------------------------
if (db_id('Mydatabase') is not null)
drop database Mydatabase
create database Mydatabase
on
(......)
log on
(.......)
go
如何创建“表”:
1、必须打开自己的数据库(use 数据库名 go)
2、判断数据表是否存在,并删除
-- if exist(select * from sysobjects where name = '表名')
-- if object_id('表名') is not null
3、语法
Create Table 表名
(
列名 列类型 是否为空 ,
name varchar(20) not null ,
)
go
Sqlserver中的”维护数据完整性“分类:
---- 所谓数据完整性:就是数据库中的数据,不丢失、不混淆
数据完整性分类:
1、实体完整性:
---- 确保每条记录都是唯一的,不会搞混淆
主键约束、唯一约束、自增长标识
2、域完整性:
---- 确保每条记录的每一个部分,都有有效的,没有错误数据
列的数据类型、默认约束、非空约束、check约束
3、引用完整性:
----- 确保表与表之间,具有有效的关联(表间关系)
主外键约束
4、自定义完整性:
----- 确保表中的记录,符合“逻辑业务”的要求
存储过程、触发器、规则
常用约束的设置:
---- 主键、外键、默认、检查、唯一
---- 语法(先表后约束)
Alter Table 表名
Add constraint 约束名 约束类型 约束的内容
|
约束名 |
约束类型 |
约束内容 |
|
|
primary key |
pk_列名 |
PRIMARY KEY |
primary key(列名)主键约束 |
|
unique key |
uq_列名 |
UNIQUE |
unique(列名)唯一约束 |
|
Default for |
df_列名 |
DEFAULT ... FOR... |
Default(值) for (列)默认约束 |
|
Check |
ck_列名 |
CHECK |
check(判断条件) |
|
foreign key references |
fk_列名 |
FOREIGN KEY ... REFERENCES |
FOREIGN KEY (本表的列) REFERENCES 外表(外表的主键列)外键约束 |
ALTER TABLE stuInfo
ADD CONSTRAINT PK_stuNo PRIMARY KEY (stuNo) ,
CONSTRAINT UQ_stuID UNIQUE (stuID) ,
CONSTRAINT DF_stuAddress DEFAULT ('地址不详') FOR stuAddress ,
CONSTRAINT CK_stuAge CHECK(stuAge BETWEEN 15 AND 40) ,
CONSTRAINT FK_stuNo FOREIGN KEY(stuNo) REFERENCES stuMark(stuNo)
GO
ALTER TABLE Subject WITH NOCHECK
ADD CONSTRAINT CK_ClassHour CHECK (ClassHour>=0)
(WITH NOCHECK 加了这个强制添加,不检查原来的数据)
小贴士:
exists() ---- 当括号中的“查询字句”有返回结果,则exists =true
。。。。。。。。。。。无。。。。。。。。。。false
char\varchar 类型的区别:当数据填充时,长度是否永远固定。char=固定
带n的与不带n的char类型:只填充【字母或数字】的使用不带n的,
需要存入汉字或其他特殊符号的,就用带n的
---- 带n的字符类型,长度为2字节;不带n的字符类型,长度为1字节
优化MySchool数据库(二)的更多相关文章
- 优化MySchool数据库设计之【巅峰对决】
优化MySchool数据库设计 之独孤九剑 船舶停靠在港湾是很安全的,但这不是造船的目的 By:北大青鸟五道口原玉明老师 1.学习方法: 01.找一本好书 初始阶段不适合,可以放到第二个阶段,看到知识 ...
- 优化MySchool数据库(一)
<优化MyShcool数据库>:能够的独立的分析|设计|创建|运营|你的独立的数据库系统 设计--->实现--->TSQL--->查询优化---->性能优化技术-- ...
- 优化MySchool数据库设计总结
数据库的设计 一:什么是数据库设计? 数据库设计就是将数据库中的数据实体以及这些数据实体之间的关系,进行规范和结构化的过程. 二:为什么要实施数据库设计? 1:良好的数据库设计可以有效的解决数据冗 ...
- 优化MySchool数据库(存储过程)
什么是“存储过程”: ---- 数据库中,用于存储“业务逻辑”的技术!(T-SQL代码当做数据一样保存到数据可) 语法 : [if exists(select * from sysobjects wh ...
- accp7.0优化MySchool数据库设计内测笔试题总结
1) 在SQL Server 中,为数据库表建立索引能够(C ). 索引:是SQL SERVER编排数据的内部方法,是检索表中数据的直接通道 建立索引的作用:大大提高了数据库的检索速度,改善数据库性能 ...
- 优化MySchool数据库设计
第一章 数据库的设计 1.E-R图中: 矩形:实体 椭圆:属性 菱形:关系 直线:连接实体,属性和关系 2.映射基数 一对多 多对一 多对多 3.范式: 第一范式:确保每列的原子性 第二范式:确保表中 ...
- 优化MySchool数据库(事务、视图、索引)
事务.视图.索引: 事务:当生活逻辑中的“一个步骤”,需要使用多条SQL去完成时,必须使用事务来确保其“完整性“. 视图:简化数据库结构,方便你编写SQL语句(简化SQL语句的编写) 索引:提高“数据 ...
- 优化MySchool数据库(四)
关于“无法附件数据库”过程的遇到的问题: 1.数据文件本身,具有访问权限的限制 ---- 选中 数据库文件所在的文件夹---->右键菜单(属性)----> 安全 --->User用户 ...
- 优化MySchool数据库(三)
使用T_SQL 编写业务逻辑: 如何定义及使用“变量”: ---- 让电脑帮我记住一个名字(王二) C#: string name ; [定义一个变量] name = "王二&qu ...
随机推荐
- DNS解析全过程及原理
DNS解析原理及过程. 当用户访问我们网站一个网页时,他需要经过以下步骤: 1)找到这个网页的存放服务器: 2)服务器将用户的请求信息接入: 3)服务器通过文件路径(URL)查找用户请求网页: 4)用 ...
- 运用javascript的成员访问特性来实现通用版的兼容所有浏览器的打开对话框功能
打开网页对话框,一般有三种方法:window.open.window.showModalDialog.window.showModelessDialog,每一种都有它的优点与不足.第一种方法:wind ...
- 实现iOS图片等资源文件的热更新化(二):自定义的动态 imageNamed
这篇文章,要解决的是,使用一个自定义的 imageNamed 函数来替代系统的 imageNamed 函数.内部逻辑,将贯穿对比论证 关于"合适"的图片的定义.对iOS加载图片的规 ...
- C#串口通信
通过COM1发送数据,COM2接收数据.当COM2接收完本次发送的数据后,向COM1发送信息通知COM1本次数据已发完,COM1接到通知后,再发下一段数据.这样可以确保每次发送的数据都可以被正确接收. ...
- RDLC报表打印
如果你的报表能正常显示,会看到RDLC工具条下的打印图标: 如果在客户端,第一次去点击此铵钮,如果当前操作者没有管理权限,会提示: Unable to load client print contro ...
- 关于JQuery(最后一点动画效果*)
1,$(':radio').val(['1','2','3']);//特殊写法,把值为1 2 3的都选中. 2,math.abs(len)取绝对值 3,按钮高亮显示,一般是配置两个按钮,一个普通的,一 ...
- 【C#】带等待窗体的BackgroundWorker
---------------201504170911更新--------------- 更新内容:删除bgwUI新增的Start方法,改为通过new修饰符+可选参数的方式同时覆盖基类(Backgro ...
- C#DbHelperOleDb,Access数据库帮助类
/// <summary> /// 编 码 人:苏飞 /// 联系方式:361983679 /// 更新网站:[url=http://www.sufeinet.com/thread-655 ...
- inner join on, left join on, right join on的区别与介绍
Table A aid adate 1 a1 2 a2 3 a3 TableB bid bdate 1 b1 2 b2 4 b4 两个表a,b相连接, ...
- PHP表单数据写入MySQL代码
<h1>插入操作</h1> <?php if(!isset($_POST['submit'])){ //如果没有表单提交,显示一个表单 ?> <form ac ...