字符和日期时间型要用单引,其它的不用
drop table  《表名》student --删除表
delete from 《表名》student --删除数据不删除表
sp_help 《表名》student--查看表结构的超详细信息
库的创建:
create database <库名>school--建库
表的创建():
create table <表名>系别
(
<列名>系别 char(4)<约束条件><主键约束> primary key,
<列名>姓名 char(20)<约束条件> not null,
<列名>dperson char(10)
<列名>性别ssex char(2)<约束条件> check   (ssex in ('男','女')),
<列名> scardid char(18)<约束条件>unique“唯一性”,
<列名>sdept char(4)<约束条件>“外键” foreign key references< 参照表的列> dept(ddept),
)

查询
数学函数
  1.count(统计)
--1.查询表中共有多少人次的记录
select count(sno) 人次 from student
--2.查询共有多少人参加了考试
select count(distinct sno) 考试的人次 from sc
--3.查询共有多少门课的成绩
select count(distinct“特殊字不重复的输入值或统计的数目” cno) 课程门数 from course
--4.查询每门课有多少人选修,并按人数降序排序
select cno,count(sno) 选修人数 from sc group by cno
--5.查询课程号为’a01’的课有多少人选修
select count(sno) 选a01的人次 from sc where cno='a01'
--6.查询课程号为’c02’的课有多少人缺考。(没有成绩)
select count(distinct sno) b01缺考的人次 from sc where cno='b01' and cgrade is null
--7.查询每门课的不合格人数
select cno,count(distinct sno) 不及格人次 from sc where cgrade<60 group by“按组统计” cno
  2.max(求最大数)
--8.查询某门课的最高分(课程号自定)
select cno,max(cgrade) from sc where cno='a01'
--9.查询每门课的最高分,列出课程号、最高分
select cno,max(cgrade) 该门最高分 from sc group by cno
--10.查询所有成绩记录中的最高分
select max(cgrade) 最高分 from sc
--11.查询每门课的平均成绩,按平均成绩升序排序
select cno,avg(cgrade) 平均分 from sc group by cno order by “排列依据”avg(cgrade) desc“排序为降序”
--12.查询每个人的平均成绩、总分、所修的课程数
select distinct sno,avg(cgrade),sum(cgrade),count(cno) from sc group by sno
--13.查询修了三门课以上的学生的学号,课程数,按课程数降序排序
select sno,count(cno) from sc group by sno having count(cno)>3 order by“排序依据” count(cno) desc“排序为降序”
  3.min()求最小数
--按课程号分组,还要筛选最高分高于80的,按这三项输出所有符合条件的  
select cno,min(cgrade) 最低,max(cgrade) 最高 from sc group by cno having max(cgrade)>=80

  4.avg()求平均数
--14.查询平均成绩在75以上的学生的学号、平均成绩
select sno,avg(cgrade) from sc group by sno having avg(cgrade)>60
--15.查询个人最好成绩达到90分的学生的学号、最高分。
select sno,max(cgrade) from sc group by"分组统计" sno"分组条件" having“细分条件” max(cgrade)>90

数据插入
  1.insert into表名(列名,列名)
insert into student(sname,age) values('06111','Henry','20','男','2006-11-11')
--(sname,age)的作用是确定需要写入数据的属性列,不要(sname,age)的话就会"默认要求输入所有属性列的值"
表的修改
添加约束条件
alter table 表名
add primary key(列名)
添加默认条件
alter table 表名
add default gedate() for 列名
修改列条件
alter table 表名
alter column 列名 "条件"int null --原来条件为not null现在解除原来的条件
表的更新
update 表名 set 更新的列名和值 where 该列的条件
update  b<表名> set a<列名>='更新的值',b<列名>='更新的值' where a='该列原来的值'

数据库的测试
--exists存在性测试
select sname from student where exists (select * from sc where sc.sno=student.sno and cno='a01')
--exists存在性测试,在这条语句里,在外层select中,从student表里把sname逐个逐个拿出来,与括号
--里的内层select做是否匹配的比较(即有没有这样的记录存在),符合的就作为结果显示出来
--相反的,也可在exists前加not,表示不存在
--内层select没有的表,必须在外层中出现,内可用外,外不可用内

--in  集合测试
--例:1.查询无人选修的课程
select cname from course where not exists (select * from sc where sc.cno=course.cno)
--存在性测试
select cname from course where cno not in (select distinct cno from sc)
--in集合测试,外层的where后面的列必须和内层的select后面的列相同,(select distinct cno from sc)代表一个集合
--即它是以这条语句执行的结果作为一个集合