外键
[TNO] VARCHAR(10) references [Buslines]([TNO]),
性别只能为男女
[Sex] varchar(10) check([Sex]='男' or [Sex]='女') not null,
年龄在20-60之间
id int check (id between 20 and 60)
Select distinct 去除重复
多个条件排序
order by [Group].[DeptNo] desc,[Group].[GroupNo],[Patient].[PName]
创建表的时候,时间那栏默认为计算机的时间
[Date] date default getdate(),
插入数据时,默认为计算机的时间(30000是 money 的输入)
insert into [Ding]values('S02','D06','笔记本',GETDATE(),30000);
时间设置的格式选择
//创建表格
[Time] Datetime,
//插入数据
insert into [Timetable] values('1','E001','A112','2011-3-26 10:13:10');
统计次数
select [Driver].[Name],COUNT([Timetable].[DNO]) from [Driver],[Timetable]
where [Driver].[Name]='张三'
AND [Timetable].[DNO]=[Driver].[DNO]
group by [Driver].[Name];//注意这个group by是和COUNT配套使用的
把a中的id为11的删除后,b中的user等于11的也一起被删除了
Create table a(
Id int
)
Create table b(
User int;
Foreign key(user) references a(id) on delete cascade
注意插入语句该字段的数据类型,不是数字,自觉补上'',是数字,千万别有''
insert into [EMPLOYEE] values('E01','张三','女',32);
根据公司名称查询公司各个员工的总工资(公司名称是公司表的东西,当要求在这个公司的员工所获得的总工资(包括其他公司所得的工资))
select [Employer].[EName],SUM([Works].[Money])
from [Employer],[Company],[Works]//从三个表里搜寻员工姓名和总工资,这个总工资是求某一个员工的总工资,所有要按员工名字分组
where [Employer].[ENo]=[Works].[ENo]
and [Company].[CNo]=[Works].[CNo]
and [Works].[ENo] in(select [Works].[ENo] from [Works],[Company]
where [Company].[CNo]=[Works].[CNo]and [Company].[CName]='阳光科技')//员工号是要属于这个公司的员工号
group by [Employer]. [EName]
create table [Department](
[DeptNo] varchar(10) not null primary key,
[DeptName] varchar(10),
)
create table [Group](
[GroupNo] varchar(10) not null primary key,
[GroupName] varchar(10),
[DeptNo] varchar(10) references [Department]([DeptNo]),
[Month] int,
[Number] int,
)
create table [Patient] (
[PID] varchar(10) not null primary key,
PName varchar(10),
[Date] date,
GroupNo varchar(10) references [Group]([GroupNo]),
)
手动打开SQL Server代理
首先我们按下Win+R组合键打开运行界面,在输入框中输入services.msc命令,
在安装SQL2005的时候,曾经设置过一个超级管理员sa用户,然而,在SQL Server并不能像其它数据库的root账号一样直接用来登录的。如果你要在SQL Server身份验证中使用sa来登录,必须做如下的设置:
如下图,首先要对sa的属性中的状态,设置其允许登录。
同时,需要在“常规”上将密码重打一次,同时关闭“强制实施密码策略”。
我设计的密码:342684
点击确定,如上,重启SQL服务,就可以使用SQL Server身份验证中使用这个sa用户登录。
查询语句
统计年龄至少为40岁员工的总工资,工资按从大到小顺序排列
table = db.getBySql(@"select [EMPLOYEE].[EmpNo],[EMPLOYEE].[EmpName],[EMPLOYEE].[EmpSex],[EMPLOYEE].[EmpAge],sum([WORKS].[Salary])"+
"from [WORKS],[EMPLOYEE]"+
"where [EMPLOYEE].[EmpAge]>=40"+
"and [EMPLOYEE].[EmpNo]=[WORKS].[EmpNo]"+
"group by [EMPLOYEE].[EmpNo],[EMPLOYEE].[EmpName],[EMPLOYEE].[EmpSex],[EMPLOYEE].[EmpAge]"+
"order by sum([WORKS].[Salary])");
查询至少具有两份工作员工的姓名和其公司名
table = db.getBySql(@"select [EMPLOYEE].[EmpName],[COMPANY].[CmpName] " +
"from [COMPANY],[EMPLOYEE],[WORKS] " +
"where [EMPLOYEE].EmpNo=[WORKS].[EmpNo] " +
"and [COMPANY].[CmpNo]=[WORKS].[CmpNo] " +
"and [EmpName] in( " +
"select [EmpName] from [WORKS],[EMPLOYEE] " +
"where [EMPLOYEE].EmpNo=[WORKS].[EmpNo] " +
"group by [EmpName] having count([EmpName])>1)");
统计某个员工的平均发车次数
select [Driver].[DName],COUNT(Timetable.[DID])
from [Driver],Timetable
where Timetable.[DID]=[Driver].[DID]
and [Driver].[DName]='张三'
group by [Driver].[DName]
根据线路编号或者始发站查询线路详细信息(这里的线路编号为'1')
select [Buslines].[LID],[Buslines].[Sta],[Buslines].[End],[Buslines].[Dis],[Timetable].[Time]
from [Buslines],[Timetable]
where [Buslines].[LID]=[Timetable].[LID]
and [Buslines].[LID]='1'