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,选择属性: 在常规选项卡中,重新填写密码和确认密码(改成个好记的).把强制实施密码策 ...
随机推荐
- sql常识-IN 操作符
IN 操作符 IN 操作符允许我们在 WHERE 子句中规定多个值. SQL IN 语法 SELECT column_name(s) FROM table_name WHERE column_name ...
- ecshop调用文章显示上一篇下一篇
首先调用文章中的上一篇和下一篇语法为: 代码如下 复制代码 上一篇:<a href="{$next_article.url}">{$next_article.titl ...
- vs如何新建自己工程的环境变量(局部)和 Windows系统(全局).
来源:http://blog.csdn.net/jtop0/article/details/7574139 在vs2008的Project->Property设置里经常会看到类似$ ...
- Cocos2d-x中SQLite数据库管理工具
数据库创建完成后,我们可能需要看看数据库中数据是否成功插入,很多人喜欢使用图形界面工具来管理SQLite数据库.SQLite图形界面管理工具有很多,我推荐使用SQLiteStudio工具,下载地址ht ...
- 如何让Eclipse的智能提示像VS一样霸气
说起来用 Eclipse 也有一段时间了,相信每一个用过的人都知道他的智能提示功能真的是糟糕透了,与 VisualStudio2008 简直不是一个档次的!我就纳闷了,他为什么不弄好一点呢!今天我实在 ...
- centos6.5安装配置zabbix3.0.3
1.首先要准备LAMP环境. (1)安装php Zabbix 3.0对PHP的要求最低为5.4,而CentOS6默认为5.3.3,完全不满足要求,故需要利用第三方源,将PHP升级到5.4以上 rpm ...
- Winform程序只允许运行一个程序实例
/// <summary> /// 应用程序的主入口点. /// </summary> [STAThread] static void Main() { Application ...
- 排序,求几个最值问题,输入n个整数,输出其中最小的k个元素。
看完两个求最大值算法之后的一些感想. 如果想直接看算法的可以跳过.但是我觉得我这些想法还是比较有用的,至少对我将来的算法设计是这样的. 算法的功能越强大,必然意味着速度慢,因为根据丛林法则,那种慢又功 ...
- zencart后台增加菜单选项
如果要在程序中使用额外的参数,在后台控制,添加到菜单属性 在后台 SQL脚本 运行如下 SQL语句 INSERT INTO configuration (configuration_title, co ...
- 关于font awesome或Glyphicons字体图标不能正确显示的问题
此处讨论的是关于本地字体的安装和引进 实际操作经验中,某些网站模板设置的CSS, FONTS目录较深,如果按默认的路径设置,字体图标死活都不会显示. 解决办法是将FONTS目录,安装在网站根目录下 C ...