SQL语句入门
Insert into class (cName,cDescription)values(‘T001’, ‘这是一个高级班,人数50')
Insert into class (cName,cDescription)values(‘T002’, ‘这是一个高级班,人数60')
--drop database MySchool
create database MySchool
on
(
--括号一定是圆括号
name='MySchool_data',--数据库名称
filename='d:\MySchool_data.mdf',--物理文件名
size=5mb,--初始大小
maxsize=10mb,--最大大小
filegrowth=15%--主文件增长率
)
log on
(
name='MySchool_log',--日志文件名
filename='d:\MySchool_log.ldf',--日志物理文件名
maxsize=4mb,--最大大小
size=2mb,
filegrowth=1mb
)
go
use MySchool
go
--drop table Class
create table Class
(
cIdintidentity(1,1) primary key,
cNamenvarchar(50)not null,
cDesciptiontext
)
--drop table student
create table Student
(--创建学生信息表
sIdintidentity(1,1) primary key,--自动编号
sClassIdintnot null, --班级外键
sNamenvarchar(50)not null,
sAgeintnot null,
sNonumeric(18,0),--身份证号,十八位数字,小数为
sSexchar(2) not null,
sEmailvarchar(50)
)
使用sql语句创建数据库和表
--DROP database MySchool
--创建数据库
create database MySchool
on
(
--mdf文件
name= 'MySchool_data', --mdf的逻辑名
filename= 'd:\MySchool_data.mdf',--mdf文件的路径
size= 3mb, --初始大小
maxsize= 100mb , --文件的最大值
filegrowth= 1mb --10% 文件增长量 --
)
log on
(
--ldf文件
name= 'MySchool_log', --ldf的逻辑名
filename= 'd:\MySchool_log.ldf',--ldf文件的路径
size= 5mb, --初始大小
maxsize= 10mb , --文件的最大值
filegrowth= 1mb --10% 文件增长量
)
go
创建表练习
--drop table score
create table Score
(
sIdintidentity(1,1),
studentIdintnot null, --学生id,外键
englishfloat,
mathfloat
)
go
--drop table score
create table teacher
(
tIdintidentity(1,1) primary key,
tNamenvarchar(50)not null,
tSexnchar(1),
tAgeint,
tSalarymoney
)
go
数据插入
insert into Class (cName,cDescription)values ('高一一班','快班')
insert into Class (cName,cDescription)values ('高一二班','中班')
insert into Class (cName,cDescription)values ('高一三班','慢班')
insert into Class (cName,cDescription)values ('高二一班','快班')
insert into Class (cName,cDescription)values ('高二二班','中班')
insert into Class (cName,cDescription)values ('高二三班','慢班')
insert into Student (sClassId,sName,sAge,sSex,sNo,sBirthday)values (1,'刘备',20,'男',123456789012345678,'1987-5-6')
insert into Student (sClassId,sName,sAge,sSex,sNo,sBirthday)values (1,'关羽',19,'男',123456789012345671,'1988-8-6')
insert into Student (sClassId,sName,sAge,sSex,sNo,sBirthday)values (1,'张飞',18,'男',123456789012345672,'1989-5-19')
insert into Student (sClassId,sName,sAge,sSex,sNo,sBirthday)values (4,'曹操',22,'男',123456789012345673,'1985-12-6')
insert into Student (sClassId,sName,sAge,sSex,sNo,sBirthday)values (4,'夏侯惇',22,'男',123456789012345674,'1985-3-6')
insert into Student (sClassId,sName,sAge,sSex,sNo,sBirthday)values (4,'华佗',50,'男',12345678901234565,'1957-1-16')
insert into Student (sClassId,sName,sAge,sSex,sNo,sBirthday)values (4,'甄姬',18,'女',12345678901234565,'1989-8-8')
insert into Score (studentId,english)values(1,90)
insert into Score (studentId,english)values(2,90)
insert into Score (studentId,english)values(3,59)
insert into Score (studentId,english)values(4,100)
insert into Score (studentId,english)values(5,60)
insert into Score (studentId,english)values(6,0)
insert into Score (studentId,english)values(7,80)
数据更新
数据删除
约束
--添加主键约束
alter table Score
add constraint PK_Scoreprimary key(sId)
--添加唯一约束
alter table student
add constraint UQ_studentunique(sNo)
--添加默认约束
alter table student
add constraint DF_studentdefault('男')forsSex
--添加检查约束
alter table student
add constraint CK_studentcheck(sAge>=18 and sAge<=100)
--添加外键约束(主键表Class外键表student)
alter table student
add constraint FK_student
foreign key(sClassId)references Class(cId)--外键student表中的sClassId来references引用主键表中的cid
--级联删除
--on delete cascade on updatecascade
--删除约束
alter table student
drop constraint FK_student
数据检索
insert into Class (cName,cDescription)values ('高一一班','快班')
insert into Class (cName,cDescription)values ('高一二班','中班')
insert into Class (cName,cDescription)values ('高一三班','慢班')
insert into Class (cName,cDescription)values ('高二一班','快班')
insert into Class (cName,cDescription)values ('高二二班','中班')
insert into Class (cName,cDescription)values ('高二三班','慢班')
insert into Student (sClassId,sName,sAge,sSex,sNo,sBirthday)values (1,'刘备',20,'男',123456789012345678,'1987-5-6')
insert into Student (sClassId,sName,sAge,sSex,sNo,sBirthday)values (1,'关羽',19,'男',123456789012345671,'1988-8-6')
insert into Student (sClassId,sName,sAge,sSex,sNo,sBirthday)values (1,'张飞',18,'男',123456789012345672,'1989-5-19')
insert into Student (sClassId,sName,sAge,sSex,sNo,sBirthday)values (4,'曹操',22,'男',123456789012345673,'1985-12-6')
insert into Student (sClassId,sName,sAge,sSex,sNo,sBirthday)values (4,'夏侯惇',22,'男',123456789012345674,'1985-3-6')
insert into Student (sClassId,sName,sAge,sSex,sNo,sBirthday)values (4,'华佗',50,'男',12345678901234565,'1957-1-16')
insert into Student (sClassId,sName,sAge,sSex,sNo,sBirthday)values (4,'甄姬',18,'女',12345678901234565,'1989-8-8')
insert into Score (studentId,english)values(1,90)
insert into Score (studentId,english)values(2,90)
insert into Score (studentId,english)values(3,59)
insert into Score (studentId,english)values(4,100)
insert into Score (studentId,english)values(5,60)
insert into Score (studentId,english)values(6,0)
insert into Score (studentId,english)values(7,80)
TopDistinct
Select top 5 sName,sAgefrom student
Select top 30 percentsName,sAgefrom student 非四舍五入,返回最大整数2.1返回3
聚合函数
selectcount(*) from student;
selectmax(english) fromscore;
selectmin(english) fromscore;
selectavg(english) fromscore
selectsum(english) fromscore;
selectcount(*) from student
wheresSex=‘女’;
带条件的查询
select studentIdfrom score whereenglish< 60
select sName,sAge,sSexfrom student wheresAge>=20 andsAge<=30 andsSex='男'
select sName,sAge,sSexfrom student wheresAgebetween 20 and 30 andsSex='男'
带条件的查询-模糊查询
空值处理
数据排序
数据分组
可以使用having子句限制返回的结果集。group by 子句可以将查询结果分组,并返回行的汇总信息. 按照group by 子句中指定的表达式的值分组查询结果。
--group by
--每个班有多少人
select * from student
select sClassId,count(*)from student group by sClassId
Having语句