前三章自己的总结

第一本书快要学完了,时间过得飞快!

这是这前三章学到的,自己来总结下!

一.设计数据库的步骤

1.收集信息  2.标识实体  3.标识每个实体需要存储的详细信息 4.标识实体之间的关系

三大范式;

1.第一范式:确保每列的原子性

2.第二范式:在第一范式的基础上,确保表中的每列都和主键相关

3.第三范式:在满足第二范式的基础上,确保除主键列直接相关,而不是间接相关

E-R图:

矩形代表实体   菱形代表关系   椭圆代表属性

Entity:实体  normal:正常的  model:模型  selationship:关系 state:状态  promation:提升

formate:格式化 diagram:图表 guest:客人 hotel:旅馆

二.

1.创建数据库

Use master

If exists(select * from sysdatabases where name=’MySchool’)

Drop database MySchool

Create database MySchool

go

(

Name=’MySchool_data’ , ---逻辑文件名

Filename=’D:\新建文件夹\MySchool_data.mdf ’ ,  ---物理文件名

Size=5,

Filegrowth=10,

Maxsize=50

)

Log on

(

Name=’MySchool_log’,

Filename=’D:\新建文件夹\MySchool_log.ldf’,

Size:5,

Filegrowth=15%,

Maxsize=50

)

Go

2.创建表

Use MySchool

If exists(select * from sysubjects where name=’student’)

Drop table student

Create table student

(

Stuid int indentity(1,1) not null,

Stuname varcchar(20) not null,

Sex char(1) not null,

Stuage int not null,

Grade int not null,

Address varchar(255) null,

Phone varchar(50) null,

IdentityCrad varchar(18) not null,

BornDate datetime not null

)

Go

3.创建约束

(1)主键约束

Alter table student

Add constraint pk_stuid primary key (stuid)

(2)检查约束

Alter table student

Add constraint ck_BornDate check(BornDate>=’1980-01-01’)

(3)默认约束

Alter table studnet

Add constraint df_address default(‘地址不详’) for Address

(4)唯一约束

Alter table student

Add constraint uq_IdentutyCrad unique(IdentityCrad)

(5)外键约束

Alter table result

Add constraint fk_stuid

Foregin key(stuid) references student(stuid)

4.删除表,删除约束,删除数据库

Drop table 表名

Drop database 数据库名

Alter table 表名

Drop constraint 约束名

Create:创造 drop:删除 primary:主要的 exists:存在 alter:改变 growth:增长 constrint:约束

Unique:唯一 foregin:外键 references:引用

use master
go
if exists(select * from sysdatabases where name=‘Library‘)
drop database Library

create database Library
on primary
(
name=‘Library‘,
filename=‘D:\project\Library.mdf‘,
size=5,
filegrowth=15%
)
log on
(
name=‘Library_log‘,
filename=‘D:\project\Library_log.ldf‘,
size=1,
filegrowth=15%
)
go

use Library  --先将数据库定位到Library
go
if exists(select * from sysobjects where name=‘Book‘)
drop table Book
create table Book  /*--创建图书信息表*/
(
BID varchar(10)  primary key not null,
BName varchar(20) not null,
Author varchar(20) null,
PubComp varchar(20) null,
PubDate datetime not null,
BCount int not null,
Price money not null
)
go

use Library  --先将数据库定位到Library
go
alter table Book  --必须以ISBN开头
add constraint ck_BID check(BID like ‘ISBN%‘)
go

use Library  --先将数据库定位到Library
go
alter table Book  --检查出版日期是否小于当前日期
add constraint ck_PubDate check(PubDate<=getdate())
go

use Library  --先将数据库定位到Library
go
alter table Book  --现存数量必须大于等于1
add constraint ck_BCount check (BCount>=1)
go

use Library  --先将数据库定位到Library
go
alter table Book
add constraint ck_Price check (Price>0)
go

use Library  --先将数据库定位到Library
go
--检查是否有读者信息表
if exists(select * from sysobjects where name=‘Reader‘)
drop table Reader
create table Reader /*--读者信息表*/
(
RID varchar(10) primary key not null,
RName varchar(10) not null,
LendNum int not null,
RAddress varchar(50) null
)
go

use Library  --先将数据库定位到Library
go
alter table Reader
add constraint ck_LendNum check (LendNum>=0)
go

use Library  --先将数据库定位到Library
go
if exists (select * from sysobjects where name=‘Borrow‘)
drop table Borrow
create table Borrow /*创建图书借阅表*/
(
RID varchar(10) not null,
BID varchar(10) not null,
LendDate datetime not null,primary key(RID,BID,LendDate),
WillDate datetime null,
ReturnDate datetime null
)
go

/*--添加外键约束--*/
alter table Borrow
add constraint fk_RID
foreign key (RID) references Reader(RID)
go

/*--添加外键约束--*/

alter table Borrow
add constraint fk_BID
foreign key (BID) references Book(BID)
go

/*--添加默认约束--*/
alter table Borrow
add constraint df_LendDate default(‘getdate()‘) for LendDate
go

/*--添加检查约束--*/

alter table Borrow
add constraint ck_WillDate check (WillDate>=LendDate)
go

/*--添加默认约束--*/

alter table Borrow
add constraint df_WillDate default (dateadd(mm,1,getdate())) for WillDate
go

use Library  --先将数据库定位到Library
go
if exists (select * from sysobjects where name=‘Penalty‘)
drop table Penalty
create table Penalty  /*创建罚款记录表*/
(
RID varchar(10) not null,
BID varchar(10) not null,
PDate datetime not null,primary key(RID,BID,PDate),
PType int not null,
Amount money not null
)
go

/*--添加外键约束--*/

alter table Penalty
add constraint fk1_RID
foreign key(RID) references Reader(RID)
go

/*--添加外键约束--*/
alter table Penalty
add constraint fk1_BID
foreign key(BID) references Book(BID)
go

/*--添加默认约束--*/
alter table Penalty
add constraint df_PDate default(‘getdate()‘) for PDate
go

/*--添加检查约束--*/

alter table Penalty
add constraint ck_PType check (Ptype=1 or Ptype=2  or Ptype=3 )
go

/*--添加检查约束--*/

alter table Penalty
add constraint ck_Amount check (Amount>0)
go

/*--添加一列--*/
alter table Book add BTotal int

三.局部变量和全局变量

1.局部变量

局部变量的名称必须以@作为前缀

局部变量的声明语法:

Declare  @variable_name DataType

variable_name:局部变量的名称

DateType:局部变量的数据类型

例:

Declare  @name varchar(32)  --声明一个存放姓名的变量 name

Declare  @number int       --声明一个存放学号的变量 number

给局部变量赋值有两种方法:

Set  @variable_name=value

Select  @variable_name=value

Set 和 select 的区别:

Set只能支持一个变量的赋值

Seelct 能同时支持多个变量的赋值

2.全局变量

全局变量是以@@前缀命名的

全局变量都是系统定义的,不能自己命名

@@servicename  :本地服务器的名称

@@error : 最后一个T-SQL错误的错误号

@@rowcount: 上一个SQL语句受影响的行数

@@version: SQL Server的版本信息

3.数字转换为字符串

Cast(@variable_name as 数据类型)

Convert(数据类型,@variable)

Cast()函数和convert()函数用于将某种数据类型的表达式转换为另一种数据类型的表

达式。与cast()函数不同的是,在将日期时间类型/浮点类型转换为字符串数据时,示

conver()函数可以通过第三个参数指定转换后的字符样式,不同的样式使转换后的数

据的显示格式不同。

4. Begin-end语句

Begin

语句或者语句块

End

If-else条件语句

If

语句或者语句块1

Else

语句或者语句块2

当有多条语句时,则需要与begin-end结合使用

If

Begin

语句1

语句2

end

Else

Begin

语句

end

While(条件)

Begin

语句或者语句块

[Break][continue]

End

Case多分支语句

语法:

Case

When 条件1  then 结果1

When 条件2  then 结果2

Else[ 其他结果 ]

End

Go指令:它是一条或多条SQL语句的集合

use master
go
if exists(select * from sysdatabases where name=‘MySchool‘)
drop table MySchool
create database MySchool
on
(
name=‘MySchool‘,
filename=‘D:\project\MySchool.mdf‘,
size=10,
filegrowth=20%
)
log on
(
name=‘MySchool_log‘,
filename=‘D:\project\MySchool_log.ldf‘,
size=3,
filegrowth=1,
maxsize=20
)
go

use MySchool
go
if exists(select * from sysobjects where name=‘Subject‘)
drop table Subject
create table Subject /*创建科目表*/
(
SubjectNo int identity(1,1) not null,
SubjectName nvarchar(50) ,
ClassHour int ,
GradeID int not null

)
go

use MySchool
go
if exists(select * from sysobjects where name=‘Result‘)
drop table Result
create table Result /*创建成绩表*/
(
StudentNo int not null,
SubjectNo int not null,
ExamDate datetime not null,
StudentResult int  not null

)
go

use MySchool
go
if exists(select * from sysobjects where name=‘Student‘)
drop table Student
create table Student /*创建学生表*/
(
StudentNo int not null,
LoginPwd nvarchar(50) not null,
StudentName nvarchar(50) not null,
Sex bit not null,
GradeID int not null,
Phone varchar(50),
Address nvarchar(255) ,
BornDate datetime not null,
Email varchar(50),
IdentityCard varchar(18)

)
go

use MySchool
go
if exists(select * from sysobjects where name=‘Grade‘)
drop table Grade
create table Grade /*创建年级表*/
(
GradeID int identity(1,1) not null,
GradeName nvarchar(50) not null

)
go

---年级表添加主键约束
alter table Grade
add constraint pk_GradeID primary key (GradeID)
go

---学生表添加主键约束
alter table Student
add constraint pk_StudentNo primary key (StudentNo)
go

--学生表添加唯一约束
alter table Student
add constraint uq_IdentityCard unique (IdentityCard)
go

--学生表添加默认约束
alter table Student
add constraint df_Address default (‘地址不详‘) for Address
go

--学生表添加检查约束
alter table Student
add constraint ck_BornDate check(BornDate>=‘1980-01-01‘)
go

--学生表添加外键约束
alter table Student
add constraint fk_GradeID
foreign key(GradeID) references Grade(GradeID)
go

insert into Subject( SubjectName, ClassHour, GradeID)values
(‘s1‘,150,1),
(‘s2‘,180,2),
(‘y2‘,200,3)

--科目表添加主键约束
alter table Subject
add constraint pk_SubjectNo primary key(SubjectNo)
go

--科目表添加检查约束
alter table Subject
add constraint ck_ClassHour check(ClassHour>=0)
go

--科目表添加外键约束
alter table Subject
add constraint fk1_GradeID
foreign key(GradeID) references Grade(GradeID)
go

--成绩表添加主键约束
alter table Result
add constraint pk1_StudentNo
primary key (StudentNo,SubjectNo,ExamDate)
go

--成绩表添加默认约束
alter table Result
add constraint df_ExamDate default(getdate()) for ExamDate
go

--成绩表添加检查约束
alter table Result
add constraint ck_StudentResult check (StudentResult<=100 or StudentResult>=0)
go

--成绩表添加外键约束
alter table Result
add constraint fk_StudentNo
foreign key(StudentNo) references Student(StudentNo)
go

--添加外键约束
alter table Result
add constraint fk2_SubjectNo
foreign key(SubjectNo) references Subject(SubjectNo)
go

--
alter table Result
drop constraint ck_StudentResult

alter table Result
alter column StudentResult decimal (5,2)

alter table Result
add constraint ck_StudentResult check (StudentResult<=100 or StudentResult>=0)
go

第三章.

----打印直角三角形

declare @num varchar(20),@count int
select @num=‘‘,@count=0
while(@count<5)
begin
 select @num+=‘*‘,@count+=1
 print  @num
end

----面试表
use myschool
create table  biao
(
 riqi varchar(20) not null,
 jieguo varchar(10) not null
)

insert into biao values(‘2010-05-06‘,‘胜‘)
insert into biao values(‘2010-05-06‘,‘胜‘)
insert into biao values(‘2010-05-06‘,‘负‘)
insert into biao values(‘2010-05-06‘,‘负‘)
insert into biao values(‘2012-05-06‘,‘胜‘)
insert into biao values(‘2012-05-06‘,‘负‘)
insert into biao values(‘2012-05-06‘,‘胜‘)

select * from biao

select riqi as 日期,sum
(
case when jieguo=‘胜‘ then 1
else 0
end
)
as 胜,sum
(
case when jieguo=‘负‘ then 1
else 0
end
)
as 负
from biao
group by riqi

select * from student

declare @name varchar(20)
select @name=studentname from student
where studentno=23270
print @name

declare @age int
select @age=DATEDIFF(YY,birthday,GETDATE()) from student
where studentno=23270
print @age

----九九乘法表
declare @n int ,@m int ,@u varchar(255)
select @n=1
while(@n<10)
begin
select @u=‘‘,@m=1
while(@m<[email protected])
begin
select @[email protected]+cast(@m as nvarchar)+‘*‘+cast(@n as nvarchar)+‘=‘+CAST(@m*@n as nvarchar)+‘ ‘, @[email protected]+1
0end
print @u
set @[email protected]+1 
end

--上机练习3
select * from result

declare @date datetime
select @date=MAX(examdate) from result where studentno=23231
declare @score int
select @score=studentResult from result where studentno=23231 and [email protected] print @score
if(@score>85)
begin
 print ‘优秀‘
end
else if(@score>70)
begin
 print ‘良好‘
end
else if(@score>60)
begin
 print ‘中等‘
end
else
begin
 print ‘差‘
end

--上机练习4

--查询科目编号
declare @subid int
select @subid=subjectid from subject where subjectname=‘oop‘
--查询最近的考试时间
declare @date datetime
select @date =MAX(examdate) from result where [email protected]  order by examdate

--查询有没有考试不及格的同学
declare @count int
select @count=COUNT(1) from result  where studentresult<60 and [email protected] and [email protected]
while(@count>0)
begin
 update result set studentresult=studentresult+2 where studentresult<95 and [email protected] and [email protected]
 --加分后,再判定有没有及格的
 select @count=COUNT(1) from result  where studentresult<70 and [email protected] and [email protected]
end

print @count

select * from result

--上机练习5
create table Admins
(
admin varchar(20)  primary key  not null,
pwd varchar(10) not null
)
go
 
 insert into Admins values(‘张三‘,‘1‘),
 (‘李四‘,‘11‘)
 
 declare @count int
 select @count=COUNT(1) from Admins where admin=‘张三‘
 if(@count>0)
 begin
  update Admins set pwd=‘111‘ where admin=‘张三‘ 
 end
 
 print @count

时间: 2024-10-08 17:03:12

前三章自己的总结的相关文章

构建之法(前三章)读后感

第一章:软件工程的定义是:选定合适的开发模型,然后根据客户的需求分析,在给定成本的前提下开发可靠性,可维护性的软件.但这个过程的实现需要团队的共同合作,软件完成后还要根据客户的要求进行修改,发布后的维护,所以说软件工程是一个长久性的工作. 第二章:讲的是软件制作后期所遇到的许多测试,黑盒测试,百盒测试等.测试能力也属于个人能力的一种.而里面所说到的单元测试就是为了提高程序的健壮性,提高程序的可靠性和稳定性. 第三章:成为一个出色的软件工程师需要不断的接触各类软件硬件,吸收更多的知识 ,所谓孰能生

HBase in Action前三章笔记

近期接触HBase,看了HBase In Action的英文版.開始认为还行,做了些笔记.可是兴许看下去,越来越感觉到实战这本书比較偏使用上的细节,对于HBase的具体设计涉及得很少.把前三章的一些笔记帖一下.后面几章内容不打算整理了.并非说书内容不好. key-value存储.强一致性,多个RegionServer节点对client端是不暴露细节的 使用场景:典型的web-search, capture incremental data, ad. click stream, content s

《增长黑客》阅读内容摘要(前三章)

<增长黑客>阅读内容摘要(前三章) 寒假无聊,偶然间看到<增长黑客>这本名气很大的书,顺便拿来读读.读到后来根本停不下来,这本书真的比电影还精彩.作者提倡的一种新的软件工程,令人叫绝. 以下是这本书前三章的内容摘要: 一.第一章 通常采用的手段包括A/B测试.搜索引擎优化.电子邮件召回.病毒营销等,而页面加载速度.注册转化率.E-mail到达水平.病毒因子这些指标成为他们日常关注的对象. 增长黑客:以数据驱动营销.以市场指导产品,通过技术化手段贯彻增长目标的人. 五个环节:1. 获

构建之法(前三章读后感)

第一章:软件工程.写软件就是码代码写出来,组合语句和算法,实现需要的功能.但是软件的开发需要一定步骤,有团队合作精神,经过需求分析明白客户需求,要什么功能,并完成软件的概要设计,再进行讨论并与客户沟通.然后进行软件设计,然后程序代码编写,软件测试DEBUG,体验版,后续维护等等.这样才是一个项目.软件开发过程并不简单,这是一个工程化的开发过程. 第二章:我认识到个人的开发能力和对自己所写的代码是测试能力,这是十分重要的.想要对自己的代码优化,或者是想要快速找BUG,提高开发的效率.以此保证所写的

读《构建之法》前三章有感

最近这几天一直下雨,我的心犹如构建之法一般的复杂,但是,听着雨声,仔细的思考后,感觉构建之法在我的心中慢慢的变得清晰了.这几天看了<构建之法>的前三章后,心有所感,在这里就粗略的讲一讲我的感想,首先是第一章,主要讲了软件工程师什么,软件又是什么,软件的各种要素等等,让我对软件有了一定的了解,同时深有所感的是,一个软件,不论好与坏,都是应人们需求所产生的,所有的软件都不是一天就可以完成的,有的需要很久很久,同时还需要一个团队的合作才能呈现出一个软件,软件工程这门学问不是一个理论的学问,更多的是一

构建之法前三章读后感

一. 软件作为一个产品,在提供用户使用前经历了许多工序,我们用工程的方式将开发软件的工序,过程加以工程化,系统化.成立了一套完整的体系后,有利于帮助我们开发软件,乃至于大型的系统. 软件具有一定的特殊性,使得软件工程师们做开发提升了一定的难度,但软件工程有助于软件系统的开发,帮助工程师们设计,构建,测试和维护软件.所以,软件工程的最终目的是帮助工程师们创造“足够好”的软件,提高软件的质量,用户满意度,可靠性,可维护性等. 第一章问题:怎么才算是一个真正的软件工程师? 二.   一个优秀的软件,通

0320 《构建之法》前三章观后感

第一章.为我们解释什么是软件,什么是软件工程,读完这章对这些概念有一定的认识这章让我明白,代码不能盲目的敲,好的软件并非两三天,并非一两个人就能赶出来的,需要大家的精诚合作.同时,在编写程序之前,还需要做一系列的分析.设计,要满足客户的需求,后续还要对软件进行测试.维护等.在这之前,我一直觉得能把程序运行,能有正确的结果,那就完成任务了,可这只是整个软件流程的一部分而已.看了邹老师的书,才知道其实创新有很多的方面,除了技术,还有商业思路,差异化等等,这些都给了我很大的感触,作为一名程序员,我们不

《构建之法》前三章读后感

通过第一章讲述的概论,理解到软件工程到底是什么,又为何要叫软件工程,他对我们的生活又有什么影响. 通过一些实例我也认识到客户需求分析的重要,就阿超那样的四则运算一样,渐渐的功能和需求就多了. 在第二章中,我又认识到个人能力和测试的重要性,在一个程序中运行的要快,是几秒钟而不是几分钟. 一个好的单元测试也是有很多标准的,通过对标准的分析又能找到许多缺陷,就要写下测试的方法. 所以说如果我们不经分析就盲目优化,也许会事半功倍. 第三章软件工程师的成长,评价软件工程师水平的主要方法是什么.这个职业的发

算法竞赛入门经典(刘汝佳)课后习题前三章答案

本文转载: 第一章习题1-1#include <stdio.h>int main(){int a,b,c;double d;scanf("%d%d%d",&a,&b,&c);d=(double)(a+b+c);printf("%.3lf\n",d/3.0);return 0;} 习题1-2#include <stdio.h>int main(){int f;double c;scanf("%d",&