1:–创建数据库之前检查整个数据库(sysdatabases)内有没有重名数据库NEWBOOK,有就删掉。
–alter database NEWBOOK set single_user with rollback immediate
if exists(select*from sysdatabases where name=‘NEWBOOK’)
drop database NEWBOOK
go
create database NEWBOOK
字段同理,将sysdatabases改为sysobjects
2:–on用来存储数据文件
3:–主数据文件后缀为mdf
–辅数据文件用ndf
4:–log on存储数据库的日志文件(后缀ldf)
Add file创建下一个日志文件
5:–初始大小,最大大小,自动增长
size=8,maxsize=25,filegrowth=10%
–无限制增长maxsize=unlimited
6:filename='D:\Encode\SQL\DBFile\myDB…
–filename是文件地址
7:alter database myDB修改数据库
–新size必须大于当前size
alter database myDB
modify file(
name=myDB_Dat1,
maxsize=unlimited,filegrowth=1
)
name=‘myDB_Dat1’, --不能使用filename,不能加后缀名
8:alter database myDB
remove file myDB_Dat2
–删除文件用remove而不是drop
9:–不能在使用myDB数据库的时候去删除myDB数据库
10:filegroup group1
–创建文件组group1
11:–表的创建用table
create table student
( sno varchar(10)primary key,sname varchar(20),

ssex varchar(2),sage tinyint,

–tinyint占一个字节,数据范围是-128~127,int占四个字节
sdept varchar(50)
)
12:–primary key 表示关键字,数据不能为空(not null)是通过唯一索引对给定的一列或多列强制实体完整性的约束,每个表只能有一个约束
13:给表增加字段用add
14:drop column [address]删除address这个列字段
column是视图中列使用的名称
15:–使用Insert语句向表中插入记录
insert student(sno,sname,sage,ssex,sdept) values(‘001’,‘王力’,21,‘m’,‘CS’)
16:–用update修改数据表中的数据比如改年龄改名字等
请把course表中课程号为c02的课程名改为计算机网络。
(u单元格值修改a行列修改)
update course set cname=‘计算机网络’where cno=‘c02’
17:用delete语句删除表中的记录
Delete student where sname=’王力’
如果delete不包含where子句那将删除delete全部
18:每一条T-SQL语句都由一个谓词开始,该谓词描述这条语句要产生的动作,如select或delete关键字,谓词后紧接着一个或多个子句,子句给出了被谓词作用的数据或提供谓词动作的详细信息,每一条子句都由一个关键字开始
19:局部变量命名要@开头,声明局部变量用declare,赋值局部变量用select或者set
Declare @b int
Select/set @b=1
20:优先级not>and>or
21:%表示零个或更多字符的任意字符
_表示任何单个字符
[]指定范围
[]排除范围
22:distinct去重
请查找选课学生的学号,并去重。
select distinct sno from sc
23:select:指定由查询返回列,它是一个逗号分隔的表达式列表
Into:创建新表并将查询行从查询插入新表中
From:指定从其中检索行的表,检索来源
Where:限制返回行的搜索条件
Group by:将结果集分成组
Having:指定组或聚合的搜索条件
Order by:结果集中的行排列的顺序,默认asc升序,desc降序
Older by age desc
24:select
显示表中所有列
25:between and/not between and进行范围查询
26:in/not in指定列表搜索条件
Where cno in(‘c01’,’c02’)
27:where子句链接(两个)
–请查找选修C语言的学生的学号。
select sno
from sc join course 链接sc和course表
on sc.cno=course.cno on两个表的共同之处
where course.cname=‘C语言’ 限制语句
28:where子句链接(三个)
法一:
select sname
from student,sc,course
where student.sno=sc.sno and course.cno=sc.cno and cname=‘数据库’
–from写出相关表,where写出表的联系和限制条件
法二:
select sname from student
join sc on sc.sno=student.sno
join course on sc.cno=course.cno
where cname=N’数据库’
–from写出来源,join on写出表联系,where写出限制条件
29:–查询选修’c05’课程,并且是女生的学生的学号和成绩,并按成绩降序,学号的升序排列。
select sno,grade
from sc
where cno='c05’and sno in (select sno from student where ssex=‘m’
)
order by grade desc,sno asc
30:–请查找出选了课的学生的姓名,课程名和成绩。
select sname,cname,grade
from sc,course,student
where course.cno=sc.cno and student.sno=sc.sno
31:grade is not null是成绩不为null的意思
32:多表链接时候要注意重合表的声明,说清楚是那个的表
33:左外连接就是以左边表为基准,行数列数必须是左边表的数目,不论右边空了还是多了
右外连接就是以右边表为基准,行数列数必须是右边表的数目,不论左边空了还是多了
内连接就是取两个表都不为null的地方
交叉连接是两个表的笛卡尔积的另一个名称,即两个表的交叉乘积
内连接(普通连接或者自然连接)格式:
Select …(目的)
From…(目的所在表)
Join…(关联表)on…(关联关系)
Join…on…
Where…(限制条件)
Where子句连接格式
Select…
From…(涉及的所有表)
Where…and…(所涉及表的关系)and…(限制条件)
  left join :左连接,返回左表中所有的记录以及右表中连接字段相等的记录。
  right join :右连接,返回右表中所有的记录以及左表中连接字段相等的记录。
  inner join: 内连接,又叫等值连接,只返回两个表中连接字段相等的行。
  full join:外连接,返回两个表中的行:left join + right join。
  cross join:结果是笛卡尔积,就是第一个表的行数乘以第二个表的行数。
关键字: on
数据库在通过连接两张或多张表来返回记录时,都会生成一张中间的临时表,然后再将这张临时表返回给用户。
在使用left jion时,on和where条件的区别如下:
① on条件是在生成临时表时使用的条件,它不管on中的条件是否为真,都会返回左边表中的记录。
② where条件是在临时表生成好后,再对临时表进行过滤的条件。这时已经没有left join的含义(必须返回左边表的记录)了,条件不为真的就全部过滤掉。
where语句与inner join确实能得到相同的结果,只是效率不同
现在要对两张表做连接查询,连接一般需要写条件,where 或者 on 后
34:–.列出没有选课的学生姓名(提示:使用not in)。
select sname
from student
where sno not in(select sno from sc)
在student表有在sc表里没有的就是没有选课的
35:–.查询既选修了c01又选修了c02的学生的学号。
select sno
from sc
where cno=‘c01’and sno in(
select sno
from sc
where cno=‘c02’)
使用两个表的嵌套
36:group by将表划分为不同的组,除了聚集函数,其他所出现的字段一定要在group by子句中有定义才行
37:分组之前用where关键字,分组之后用having关键字
38:
union并查询(选了这个或者选了那个)
Intersect交查询(既选了这个又选了那个)
Except补差查询(选择了这个但是没有选择哪个)
39:alter(房间)与update(家具)的区别
Alter增加表字段,修改表字段
Update 修改字段的值
40:delete(小)和drop(大)的区别
Delete 只删除表里的数据不删除表的结构
Drop 删除表的结构被依赖的属性、触发器、索引,表的结构和数据都删除
41:alter和update的区别
Alter修改数据库中的对象(表,数据库,视图)
Update 修改表中数据的语句
42:DML与DDL的区别
DML(Data Manipulation Language)数据操纵语言
适用范围:对数据库中的数据进行一些简单的操作,比如insert,delete,update,select
DDL(Data Definition Language)数据定义语言
适用范围:建库,建表,设置约束 create,drop,alter
43:count数量,avg平均,sum和
44:–查询平均分高于70分的学生的学号。
select sno from sc group by sno having avg(grade)>70
45:–请列出CS系男生,女生各有多少人。
select N’男’ 性别,count() 人数 from student where ssex=‘m’and sdept=‘cs’
union
select N’女’ ,count(
) from student where ssex='f’and sdept=‘cs’
46:-- 列出总分最低的学生的学号。
select top 1 sno from sc group by sno order by sum(grade)
47:where和having都是限制条件,但是where是对查询的行数据进行条件限制,而having
是对group by 分组后的聚合函数值进行条件限制
48:书写顺序:Select>from>where>group by>having>order by
执行顺序: From>where>group by>having>select>order by
49:where不能使用聚合函数,但是where和Group by可同时出现,先限制条件后分组
50:order by 可以出现表里有但是select中没有的字段
order by 可以按聚合结果排序
order by 可指定多个排序字段,并且每个字段都可以用asc,desc指明升降序,不指明默认降序