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 设计与实现笔记(一)的更多相关文章

  1. 《Microsoft Sql server 2008 Internals》读书笔记--第六章Indexes:Internals and Management(1)

    <Microsoft Sql server 2008 Internals>索引文件夹: <Microsoft Sql server 2008 Internals>读书笔记--文 ...

  2. Inside Microsoft SQL Server 2008: T-SQL Querying 读书笔记之查询优化

    一. 自顶向下优化方法论 1. 分析实例级别的等待 在实例级找出什么类型的等待占用大部分的时间,通过sys.dm_os_wait_stats select wait_type, --等待类型 wait ...

  3. 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 ...

  4. 《Microsoft SQL Server 2008 Internals》读书笔记

    http://www.cnblogs.com/downmoon/archive/2010/01/26/1656411.html

  5. sql server 2008 设计时 不允许保存更改

    什么 都不说了 上图

  6. 《Microsoft SQL Server 2008 Internals》读书笔记--目录索引

    http://blog.csdn.net/downmoon/article/details/5256548 https://sqlserverinternals.com/companion/

  7. sql server 2008 创建新数据库报错、创建表报错、更改表的设计报错

    一:创建数据库报错如下: 二:解决,将软件以管理员身份运行 三:创建表报错如下图: 四:解决办法,在你创建的数据库下面的安全里,找到你创建的用户,属性,添加权限,红色标注,然后确定: 五:更改表的设计 ...

  8. MDX导航结构层次:《Microsoft SQL Server 2008 MDX Step by Step》学习笔记九

    <Microsoft SQL Server 2008 MDX Step by Step>学习笔记九:导航结构层次   SQL Server 2008中SQL应用系列及BI笔记系列--目录索 ...

  9. sql server 2008笔记

    sql server 2008开启远程访问数据库 1.以windows验证模式进入数据库管理器. 第二步:右击sa,选择属性: 在常规选项卡中,重新填写密码和确认密码(改成个好记的).把强制实施密码策 ...

随机推荐

  1. HDOJ2023求平均成绩

    求平均成绩 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submi ...

  2. Android之触屏事件

    方法一: 新建"MyView"类 package onTouchEvent; import android.content.Context; import android.grap ...

  3. (转)MSSQL 各个发行版本版本号以及Compact 版本号

    终于开始写博客了. 不要笑啊. 下面是MSSQL 的发行版本以及版本号.自己整理的. http://support.microsoft.com/kb/321185/zh-cn SQL Server 2 ...

  4. Oracle创建新用户

    1.以DBA身份登录 $ sqlplus sys/eastcom@ORCL as sysdba(在命令窗口下) 也可以使用PL/SQL 2.创建临时表空间 create temporary table ...

  5. PHP 魔术方法(所有的魔术方法)

    慢慢长寻夜,明月高空挂. 目前PHP所有的魔术方法有一下这些 __construct() __destruct() __call() __callStatic() __get() __set() __ ...

  6. 声明(创建) JavaScript 变量

    在 JavaScript 中创建变量通常称为"声明"变量. 我们使用 var 关键词来声明变量: var carname; 变量声明之后,该变量是空的(它没有值). 如需向变量赋值 ...

  7. Hibernate Cascade & Inverse

    Cascade - 修改实体表 Inverse - 修改中间表 http://www.cnblogs.com/amboyna/archive/2008/02/18/1072260.html 1.到底在 ...

  8. JavaScript null and undefined

    http://stackoverflow.com/questions/6429225/javascript-null-or-undefined var x; x == null // true x = ...

  9. 一个例子说明如何在DataSnap中使用FireDAC

    一.FireDAC调用DataSnap远程方法查询数据示例 1.服务端使用FDQUERY查询数据并返回TDATASET: function TServerMethods1.GetData(var sq ...

  10. Opencv Mat的操作

    cout << mat 有错误的原因 You are using OpenCV built with VS10. The ostream operator << in the ...