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,选择属性: 在常规选项卡中,重新填写密码和确认密码(改成个好记的).把强制实施密码策 ...
随机推荐
- android代码设置、打开WLAN wifi热点及热点的连接
其实创建热点很简单,先获取到wifi的服务,再配置热点名称.密码等等,然后再通过反射打开它就OK了. 下面我们看看创建热点的代码实现: 这一段是开启WLAN热点,并可以指定好它的热点名和密码 支行后, ...
- Crontab使用mailx的一点发现
要用到Crontab定时任务去执行一个Shell脚本监控Linux系统资源并且当一些数字超过预设的话发送邮件警告.首先是linux的sendmail功能无法满足我们使用SMTP服务器并且指定发送者(E ...
- STL vector+sort排序和multiset/multimap排序比较
由 www.169it.com 搜集整理 在C++的STL库中,要实现排序可以通过将所有元素保存到vector中,然后通过sort算法来排序,也可以通过multimap实现在插入元素的时候进行排序.在 ...
- OC8_NSData
// // main.m // OC8_NSData // // Created by zhangxueming on 15/6/19. // Copyright (c) 2015年 zhangxue ...
- jQuery中的getter和setter方法
1.attr()方法是jQuery中用于HTML属性的getter/setter.一个相关函数是removeAttr(). 2.css()方法和attr()方法很类似,只是css()方法作用于元素的c ...
- 【转载】Linux小白最佳实践:《超容易的Linux系统管理入门书》(连载六)Linux的网络配置
本篇是Linux小白最佳实践第6篇,目的就是让白菜们了解Linux网络是如何配置的.Linux系统在服务器市场占有很大的份额,尤其在互连网时代,要使用计算机就离不开网络. 想每天能听到小妞的语音播报, ...
- 第五章 体验Qt Creator的神奇魅力
第五章 体验Qt Creator的神奇魅力 Qt Creator是官方提供的一个轻量级IDE(集成开发环境),功能强大,是程序员快速开发程序的有力助手.下面我们用它实现一个helloworld工程. ...
- jQuery Mobile里xxx怎么用呀?(集成篇)
jQuery Mobile如何使用GA(Google Analytics)? 什么是GA: http://baike.baidu.com/view/34729.htm http://www.googl ...
- Jquery操作下拉框(DropDownList)的取值赋值实现代码(王欢)
Jquery操作下拉框(DropDownList)的取值赋值实现代码(王欢) 1. 获取选中项: 获取选中项的Value值: $('select#sel option:selected').val() ...
- java concurrent包的学习(转)
java concurrent包的学习(转) http://my.oschina.net/adwangxiao/blog/110188 我们都知道,在JDK1.5之前,Java中要进行业务并发时,通常 ...