SQL注意事项

外键

[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的属性中的状态,设置其允许登录。

https://i-blog.csdnimg.cn/blog_migrate/6412d56bb57fbf8d928419c7d7e60af0.png

同时,需要在“常规”上将密码重打一次,同时关闭“强制实施密码策略”。

我设计的密码: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'


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值