SQL Server 2008 设计与实现笔记(一)
Chart5
create database MovieRental; select name, SUSER_SNAME(sid) as [login]
from sys.database_principals
where name='dbo'; alter authorization on Database::MovieRental to easy5; /*
架构(schema)
*/
create SCHEMA Inventory;
GO
create SCHEMA People;
Go
create schema Rentals;
GO
create schema Alt;
GO select name,
SCHEMA_NAME(schema_id) as schemaName,
USER_NAME(principal_id) as principal
from MovieRental.sys.schemas; /*
Create Table
*/
create table Inventory.Movie
(
MovieId int not null,
Name nvarchar(20) not null,
ReleaseDate date null,
Description nvarchar(200) null,
GenrentId int not null,
MovieRatingId int not null
); --IDENTITY只能在如下情况下建立:
--在创建表时创建新的IDENTITY列
--在现有表中创建新的IDENTITY列 --不能 把已经存在的列,修改为IDENTITY列
Drop Table Inventory.Movie;
GO
create table Inventory.Movie
(
MovieId int not null Identity(0,1),
Name nvarchar(20) not null,
ReleaseDate date null,
Description nvarchar(200) null,
GenrentId int not null,
MovieRatingId int not null
); create table Inventory.Movie
(
MovieId int not null,
Name nvarchar(20) not null,
ReleaseDate date null,
Description nvarchar(200) null,
GenrentId int not null,
MovieRatingId int not null
); alter table Inventory.Movie select table_name
from MovieRental.INFORMATION_SCHEMA.TABLES
where TABLE_SCHEMA ='Inventory'; create table Inventory.MovieRating
(
MovieRatingId int not null,
Code nvarchar(20) not null,
Description nvarchar(200) null,
AllowYouthRentalFlag bit not null
); Drop table Inventory.MovieRating;
Go
create table Inventory.MovieRating
(
MovieRatingId int not null identity(0,1),
Code nvarchar(20) not null,
Description nvarchar(200) null,
AllowYouthRentalFlag bit not null
); create table Inventory.Genre
(
GenreId int not null,
Name nvarchar(20) not null
);
insert into Inventory.Genre(GenreId, Name)
values(1,'Comedy'),
(2,'Drama'),
(3,'Thriller'),
(4,'Documentary'); drop table Inventory.Genre;
GO
create table Inventory.Genre
(
GenreId int not null identity(0,1),
Name nvarchar(20) not null
); --insert into Inventory.Genre(GenreId, Name)
--values(1,'Comedy'),
--(2,'Drama'),
--(3,'Thriller'),
--(4,'Documentary'); insert into Inventory.Genre(Name)
values
('Comedy'),
('Drama'),
('Thriller'),
('Documentary'); /*------------------------------------------------
constraint(约束)
*/
-----------------------
--主键(PK)primay key create table Inventory.MovieFormat(
MovieFormatId int not null identity(1,1)
constraint PKInventory_MovieFormat primary key clustered, Name nvarchar(20) not null
); insert into inventory.MovieFormat(Name)
values('Video Tape'),
('DVD'); alter table Inventory.Movie
add constraint PKInventory_Movie primary key clustered(MovieId); alter table Inventory.MovieRating
add constraint PKInventory_MovieRating primary key clustered(MovieRatingId); alter table Inventory.Genre
add constraint PKInventory_Genre primary key clustered(GenreId); -------------------------------------
--候选键(AK)Unique
create table Inventory.Personality
(
PersonalityId int not null identity(1,1)
constraint PKInventory_Personality primary key,
FirstName nvarchar(20) not null,
LastName nvarchar(20) not null,
NameUniqueifier nvarchar(5) not null, constraint AKInventory_Personality_PersonName
unique(FirstName, LastName,NameUniqueifier)
); alter table Inventory.Genre
add constraint AKInventory_Genre_Name unique(Name); alter table Inventory.MovieRating
add constraint AKInventory_MovieRating_Code unique(code); alter table Inventory.Movie
add constraint AKinventory_movie_NameAndData unique nonclustered(Name,ReleaseDate); ---------------------------------------
--选择唯一性(AFK) unique index
drop table alt.employee;
Go
create table alt.employee
(
employeeId int not null identity(1,1)
constraint PKalt_employee primary key,
employeeNumber nvarchar(10) not null
constraint AKalt_employee_employeeName Unique,
insurancePolicyNumber nvarchar(20) null
); --Sql server 2008 通过“经筛选的索引”实现“选择唯一性”
create unique index AKFalt_employee_insurancePlicyNumber
on alt.employee(insurancePolicyNumber)
where insurancePolicyNumber is not null; --InsurancePolicyNumber列的值:not null的值必须唯一,null可以有多个 --123属于not null:只能唯一,不能重复,执行出错
--insert into alt.employee(employeeNumber, insurancePolicyNumber)
-- values('A00001','123'),
-- ('A00002','123'); insert into alt.employee(employeeNumber, insurancePolicyNumber)
values('A00003',null),
('A00004',null); create table alt.employee2
(
employeeId int not null identity(1,1)
constraint PKalt_employee2 primary key,
employeeNumber nvarchar(10) not null
constraint AKalt_employee_employeeName2 Unique,
insurancePolicyNumber nvarchar(20) null
);
--Sql server 2008 通过“创建索引视图”实现“选择唯一性”
create view alt.employee2_InsuancePolicyNumberUniquess
with schemabinding
as
select insurancePolicyNumber
from alt.employee2
where insurancePolicyNumber is not null; insert into alt.employee2(employeeNumber, insurancePolicyNumber)
values ('A00001',''),
('A00001',''); --查看约束(constraint)
select TABLE_NAME, CONSTRAINT_NAME, CONSTRAINT_TYPE
from INFORMATION_SCHEMA.TABLE_CONSTRAINTS
--where CONSTRAINT_SCHEMA = 'Inventory'
order by CONSTRAINT_NAME, TABLE_NAME --默认值约束(DFL)default
create table Rentals.MovieRental
(
MoviecRentalId int not null identity(1,1)
constraint PKRentals_MovieRental primary key,
ReturnDate date not null
constraint DELRentals_MovieRental_ReturnDate default(GetDate()),
ActualReturnDate date null, ); alter table Rentals.MovieRental
add constraint DELRentals_MovieRental_ActualReturnDate
default(DateAdd(DAY,4,GetDate()))
for ActualReturnDate; alter table Rentals.MovieRental
add customerId int not null; insert into Rentals.MovieRental(customerId)
values(1); ----------------------------------
--外键(FK)
--联级4种方式: no action \cascade\set null\set default
SQL Server 2008 设计与实现笔记(一)的更多相关文章
- 《Microsoft Sql server 2008 Internals》读书笔记--第六章Indexes:Internals and Management(1)
<Microsoft Sql server 2008 Internals>索引文件夹: <Microsoft Sql server 2008 Internals>读书笔记--文 ...
- Inside Microsoft SQL Server 2008: T-SQL Querying 读书笔记之查询优化
一. 自顶向下优化方法论 1. 分析实例级别的等待 在实例级找出什么类型的等待占用大部分的时间,通过sys.dm_os_wait_stats select wait_type, --等待类型 wait ...
- Inside Microsoft SQL Server 2008: T-SQL Querying 读书笔记1
(5)SELECT (5-2) DISTINCT (5-3)TOP(<top_specifications>) (5-1)<select_list> (1)FRO ...
- 《Microsoft SQL Server 2008 Internals》读书笔记
http://www.cnblogs.com/downmoon/archive/2010/01/26/1656411.html
- sql server 2008 设计时 不允许保存更改
什么 都不说了 上图
- 《Microsoft SQL Server 2008 Internals》读书笔记--目录索引
http://blog.csdn.net/downmoon/article/details/5256548 https://sqlserverinternals.com/companion/
- sql server 2008 创建新数据库报错、创建表报错、更改表的设计报错
一:创建数据库报错如下: 二:解决,将软件以管理员身份运行 三:创建表报错如下图: 四:解决办法,在你创建的数据库下面的安全里,找到你创建的用户,属性,添加权限,红色标注,然后确定: 五:更改表的设计 ...
- MDX导航结构层次:《Microsoft SQL Server 2008 MDX Step by Step》学习笔记九
<Microsoft SQL Server 2008 MDX Step by Step>学习笔记九:导航结构层次 SQL Server 2008中SQL应用系列及BI笔记系列--目录索 ...
- sql server 2008笔记
sql server 2008开启远程访问数据库 1.以windows验证模式进入数据库管理器. 第二步:右击sa,选择属性: 在常规选项卡中,重新填写密码和确认密码(改成个好记的).把强制实施密码策 ...
随机推荐
- 上传系列:jquery.upload.js
最近想做一个上传的总结,把自己用过的上传插件都写一写,哪天用到的时候就不用再一次的翻阅资料,现在页面上用到的上传插件,原理上都差不多,那我也就不再废话了,下面我主要记录一下几个比较常用的,由简到繁,这 ...
- Java之绘制艺术图案
前面已经介绍过绘制方法.这里不再赘述. package com.caiduping; import java.awt.Color; import java.awt.Graphics; import j ...
- 在button中加入一个view图片
#import "ViewController.h" @interface ViewController () @end @implementation ViewControlle ...
- POJ 3928 Ping pong
题目链接:http://poj.org/problem?id=3928 乒乓比赛,有N个人参加,输入每个玩家的技能等级,对每个人设置一个特定ID和一个技能值,一场比赛需要两个选手和一个裁判,只有当裁判 ...
- JDK中工具类的使用
JDK中内置了很多常用的工具类,且多以“s”结尾,如:集合工具类Collections,数组工具类Arrays,对象工具类Objects,文件工具类Files,路径工具类Paths,数学工具类Math ...
- jquery实现全选、全不选、反选操作
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xht ...
- 一款js点击显示和隐藏的例子(pc,移动端通用)
html部分: <div id="box"> <div id="box_title">标题</div> <div id ...
- Mysql MyISAM数据库批量转换表引擎为Innodb
Mysql MyISAM数据库批量转换表引擎为Innodb 最近在做事物处理需要把表结构都改为带有支持事物的Innodb引擎格式, 把里面数据库 用户名.密码 等信息修改为你自己的,放在网站下运行即可 ...
- PHP中刷新输出缓冲,立即输出数据
<script type="text/javascript"> function show_message(message) { document.getElement ...
- 宝马-中国官方网站服务站点信息爬去记录(解析json中数据)
具体步骤: 1.进入宝马官网,查找经销商查询界面 http://www.bmw.com.cn/cn/zh/general/dealer_locator/content/dealer_locator.h ...