1.数据库特点:较小的冗余度。
较高的数据独立性、易扩展性。
可为各种用户共享数据库是数据集合2.DBMS功能:数据定义功能。
数据组织、存储和管理(文件结构和存取方式)。
数据操纵功能(增删查改)3.高级数据库系统:分布式数据库系统,面向对象数据库系统4.数据模型的组成部分包括:数据结构,数据操作,数据约束条件。
5.数据更新:数据添加,数据修改,数据删除。
6.数据模型(网状、层次、关系模型):按计算机系统的观点建模,主要用于DBMS的实现,不包括E-R关系模型中由三种完整性约束:实体完整性,参照完整性,用户自定义完整性。
7.【8.关系:(Relation)一个关系通常是一张表。
9.分量:某一元组的一个属性值,为最小单位,不可分。
10.存储结构:在DB物理组织之中,表以文件形式储存11.数据库系统结构:从DBMS角度:外模式(External Schema),模式(Schema),内模式(Internal Schema)。
从最终用户角度:集中式结构。
分布式结构。
客户/服务器结构。
并行结构12.13.模式/内模式映象是唯一的,同一个模式可以有任意多个外模式;)三级模式与二级映像优点:(1)保证数据的独立性(2)简化用户接口(3)有利于数据共享(4)有利于数据保密14.关系模型的组成:关系数据结构。
关系操作集合。
关系完整性约束SQL Server基于关系模型的数据库系统。
15.主码:若一个关系有多个候选码,则选定其中的一个为主码15:数据类型:decimal(不包含小数点多少位,小数点后几位)nvarchar采用Unicode编码,无论是中文英文占一个字节、有n表示Unicode编码,每个字符占一个字节,没有n表示非Unicode编码,英文或者数字占一个字节,中文占两个字节。
有中文用nvarchar,没有中文用varchar.16:按照功能分类:DDL:(Database design language)数据定义语言,用于进行各种数据库对象的创建主要操作包括create,alter,dropDML:(Database management language)数据管理语言,用于对标的数据添加,修改,删除,查询,主键操作包括,insert,update,delete,select~DCL:(Database control language)数据控制语言,用于进行权限分配等]1:创建数据库create database TaoHaoon primary(name='TaoHao',filename='E:\Microsoft SQL Server\DATA\',size=10mb,"maxsize=200mb,filegrowth=10mb)log on(name='TaoHao_log',filename='E:\Microsoft SQL Server\DATA\',size=5mb,:filegrowth=10mb)相关子查询:not exists;子查询需要父查询的结果才能执行不相关子查询:not in:执行顺序是子查询先执行,结果传给父查询子查询返回的值只有一个:利用(=,<,>,>=,<=,!=)子查询返回一组值:需要在比较运算符和子查询之间插入any或all 2:修改,删除,查询,,--alter用法alter table 表名alter column 列名数据类型 null|not null--为所有行的指定列修改update UserInfo set UserPwd='admin'--为指定行的列修改update UserInfo set UserPwd='2250'where UserName='陶浩' update UserInfo set UserPwd='abcde'where UserId>1]--清空数据truncate table UserInfo--删除drop table UserInfo--查询前n部分数据:top n * from 表示查看前n行select top 2 *from StaffInfoselect top 2 percent*from StaffInfo--distinct消除重复行--模糊查询--%表示个或者多个字符!--_下划线表示一个字符--[]表示你在某一范围字符--[^]表示不在某一范围内的字符select*from StudentInfowhere sPhonr like'1[5-9]%'3.内连接:inner join,两表中完全匹配的数据--left join以左表属性顺序(CID属性顺序)为标准--right join 以右表属性顺序(Sid顺序)为标准`--full join,左表中特有的数据4.聚合函数:--对比自己的成绩和平均分select StaffInfo.*,AVG(score)over()as'平均分'from StaffInfowhere Name='bb'--统计班同学男生女生各人数select sGender,COUNT(*)%from StudentInfowhere cId=2group by sGender--统计学生编号大于的号班级的性别的学生个数select sGender,COUNT(*)--指定了cId不能select cIdfrom StudentInfowhere sId>1 and cId=3group by sGender*分组查询:group by字句可以将查询结果按照属性列或属性列组合在行的方向上进行分组,每组在属性列或属性列组合上具有相同的值。
若在分组后还要按照一定的条件进行筛选需要使用having字句。
重点:子查询的SELECT语句中不能使用ORDER BY子句,因为ORDER BY子句只能对最终查询结果排序。
找出每个学生超过他自己选修课程平均成绩的课程号SELECT Sno,Cno!FROM SC XWHERE Grade>=(SELECT AVG(Grade)FROM SC yWHERE=;查询选修了全部课程的学生姓名由于没有全称量词,可将题目的意思转换成等价的用存在量词的形式:查询这样的学生,没有一门课程是他不选修的。
SELECT Sname!FROM StudentWHERE NOT EXISTS(SELECT*FROM CourseWHERE NOT EXISTS(SELECT*FROM SCWHERE Sno=$AND Cno=);查询至少选修了学生选修的全部课程的学生号码SELECT DISTINCT SnoFROM SC SCXWHERE NOT EXISTS(SELECT*FROM SC SCYWHERE='2'AND.NOT EXISTS(SELECT*FROM SC SCZWHERE=AND=);^5.快速备份select*into test01from ClassInfo》向未有表备份:select列名into备份表名from源表名》说明:备份表可以不存在,会新建表,表的结构完全一致,但是不包含约。
》向已有表备份:insert into 备份表名 select 列名 from 源表名6.数据转换~select CAST as decimal(4,2))--decimal表示除了小数点一共位select CONVERT(decimal(4,1),--会四舍五入select CAST(1 as CHAR(1))+'1'--char类型--统计销售总价超过的商品名称和销售总价,并按照销售总价降序排序select*from MyOrdersselect pName,SUM(SaleNumber*SalePrice)销售总价from MyOrders,group by pNamehaving SUM(SaleNumber*SalePrice)>300order by销售总价desc7.函数:select'哈哈'+LTRIM(' 长安的美食')--去掉左空格select'哈哈'+RTRIM(' 长安的 ')--去掉右空格select'哈哈'+RTRIM(LTRIM(' 中国 '))--select LEFT('麦田吃饭',1)--从左边开始截取几个|select RIGHT('可口可乐',3)--从右边开始截取几个select SUBSTRING('初审过了哈哈哈',2,4)--从第二个开始截取四个8.开窗函数:over()将统计出来的数据分不到原表的每一行中,结合聚合函数,排名函数的使用1:t-sql编程变量:(声明:declare @UserName nvarchar(50)赋值1:set @UserName=N'杨':修改赋值2:select @UserName=N'牛':修改输出:print @UserName select @UserNameselect @UserName+N'中',这时@UserName仍然是‘杨’,这句代码执行后显示‘杨中’区别:赋值时,set比select更严谨些set一次只能为一个变量赋值,select一次可以为多个变量赋值。
.变量是有作用域的全局变量:@@***select—变量declare @name nvarchar(10)—声明s et @name=’陶浩’—赋值print @name—输出--选择语句declare@id int…set@id=10if@id>5beginprint'ok'+convert(varchar(10),@id)endelsebeginprint'no')end2:case在查询语句的select后面,可以进行选择判断的逻辑语法1:判等case 列名或表达式:判断与值1,2,3是否相等when 值1 then ...返回then后面表达式的值when 值2 then ...when 值3 then ...】else ...end as 列别名语法2:判不等casewhen 条件1 then ...判断条件的真假when 条件2 then ...when 条件3 then ...else ...¥end as 列别名3:over开窗函数:几个行作为一个区,就被称为一个窗,能够进行按行划区的函数就是开窗函数排名函数:rank() over(order by 列名 desc),比row_number()函数更适合用于排名over与聚合函数一起使用,但不要和group by 一组使用,否则会报错没有分组的时候,就认为是将整个查询结果分成了一组select *,sum(销售数量) from myOrders会报错改为:select *,sum(销售数量) over from myOrders则不会报错,并且在最后一列显示求和结果、4:视图View视图:就是一个select语句,写起来比较复杂,多次被使用,则可以将这个select语句存放到一个视图中创建语法:•create view 名称•as•查询语句好处:使用方便,安全(看不到表的名称、结构等信息)使用:主要用于查询,与查询表的语法一样、查看视图的代码:exec sp_helptext 视图名称可以基于视图再创建视图建议:不要在视图中使用order by子句•集合的结果集被当作一个集合使用,所以是不应该有顺序的•如果加入了top n则可以使用,这样返回的又是一个n项的无序集合,虽然看上去是有顺序的去掉左空格create view IS_Staras)select *from Starw here name like=”张%”with check option:约束条件是对视图里的所有的name首字符以下张开头的不管后续怎么修改。