基本SQLServer语句献给初学者

时间:2021-12-18 05:56:46
创建数据库
CREATE database mydtItcast
on primary
(
name='mydtItcast_data',
fileName='D:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA\mydtItcast.mdf',
size=5MB,
maxSize=10MB,
filegrowth=1MB
)
log on
(
name='mydtItcast_log',
filename='D:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA\mydtItcast.ldf',
size=1MB,
maxsize=5MB,
filegrowth=10%
)




CREATE table Food
(
fId int identity(1,1) primary key,
fName nvarchar(10),
fAddress nvarchar(50),
--商品的厂商
FacId int not null
)
CREATE table Factory
(
FacId int identity(1,1) primary key,
FacName nvarchar(20),
FacAddress nvarchar(50),
FacDesc nvarchar(20)
)
=============================================


drop table myitstudent--删除一个表


CREATE table myItStudent--创建一个表
(
stuId int identity(1,1) primary key,--此时这列就是自动增长的列,是主键
stuName nvarchar(10),-- not null,代表不能为空
stuAge int --not null  年龄不能为空
)




插入
insert INTO food(fname,faddress, facId)VALUES('汉堡包','东南大街',1)


insert INTO food(fname,faddress, facId)VALUES('饼干','西南大街',2)
INSERT INTO factory( FacName, FacAddress, FacDesc)VALUES('肯德基','中国北京','不是中国的')




Insert into Food(fname,faddress,facid) 
select '炒饭','门口饭店',3 union
select '炒面','门口饭店',3  union
select '炒冰','门口饭店',3  union
select '炒菜','门口饭店',3  union
select '炒肉','门口饭店',3




insert INTO tblstudent values('刘德华',1,27,'香港','131000','123','2010-01-27',1)






修改
update tblstudent SET tsage=tsage+1
UPDATE tblstudent SET tsage=30 WHERE tsgender='男' AND tsage<25
UPDATE TblStudent set tsname=tsname+'( ^_^ )/~~拜拜' where tsage=30 and tsname='张1忌'


删除
delete FROM student --数据没了  表还有
DROP TABLE student--删除表 
delete from food WHERE fid=10--根据条件删除某一条记录
truncate table food--删除的时候 表 还有  数据没了--在删除的时候,id的值(主键,)相当于重置




--当创建了主外键关系后,如果在外键表中有任何记录引用了主键表中的某条记录,则在主键表中不能删除该记录。同时主键表也不能删除。
create table Employees
(
EmpId int identity(1,1),--主键约束
EmpName varchar(50),--名字在到个字符,姓名不能重复
--len(EmpName)>=5 and len(EmpName)<=10
--不能重复唯一约束设计添加索引,UQ 唯一键,设置名字列
EmpGender char(2),--只能输入男女--EmpGender='男' or EmpGender='女'
EmpAge int,--年龄在-120 同上EmpAge>=0 and EmpAge<=120
EmpEmail varchar(100),--不能重复,必须在-25之间字符
--len(EmpEmail)>5 and len(EmpEmail)<25
EmpAddress varchar(500)
)
create table Department
(
DepId int identity(1,1) primary key,
DepName varchar(50) unique not null
)
--主键约束选中表单击设计设为主键
--检查约束部门名称必须在到个字之间
--len(DepName)>=5 and len(DepName)<=10
--默认约束 选中列然后下面改默认
--外键约束的时候 选择表 设计 关系 添加就可以了
--如果就想删除,那就在外键表 设计 关系中找到删除规则,和更新规则变成级联就删了




--手动删除一列(删除EmpAddress列)
alter table Employees drop column EmpAddress
select * from employees
--手动删除一列(删除EmpAddress列)
--手动增加一列(增加一列EmpAddr varchar(1000))
alter table employees add EmpAddr varchar(100)
--手动修改一下EmpEmail的数据类型(varchar(200))
ALTER table employees alter column empemail varchar(200)
--为EmpId增加一个主键约束
ALTER table employees add constraint PK_EmpId primary key(EmpId)


----非空约束,为EmpName增加一个非空约束
alter table employees alter column empName varchar(50) not null


----为EmpName增加一个唯一约束


alter table employees add constraint UQ_EmpName unique(EmpName)
--为性别增加一个默认约束,默认为'男'
ALTER table employees add constraint DF_EmpGender default('男') for EmpGender
--为年龄增加一个检查约束:年龄必须在-120岁之间,含岁与岁。
alter table employees add constraint CK_EmpAge check(empage>=0 and empage<=120)


--然后为Employee表增加一个DepId列。
alter table employees add DepId int


--增加外键约束


alter table employees add constraint FK_Employees_Department foreign key (DepId) references Department(DepId)



SELECT DISTINCT TSName FROM TblStudent---把重复的数据干掉了


==
SELECT '数学最高成绩', max(TMath) from TblScore


SELECT max(TMath) as 数学最高成绩 from TblScore


SELECT min(tenglish), max(TMath) from TblScore


SELECT sum(tenglish) from TblScore--null不参与运算
SELECT avg(tenglish) from TblScore
select count(*) FROM TblScore--在求总行数的时候 *




--求英语成绩


select '英语成绩'=sum(tenglish),tmath FROM TblScore


--查询年龄在20-30岁之间的男学生
select * FROM TblScore where tmath BETWEEN 120 AND 150 




--============================下面两种方法都能查询到 班级id为1,2,3的所有学生
select * FROM TblStudent where TClassId=1 OR TClassId=2 OR TClassId=3


select * FROM TblStudent where TClassId  IN(1,2,3)


========简单查
select * FROM TblStudent where TSName LIKE '张%'--%所有的字符
select * FROM TblStudent where TSName LIKE '张_'--_表示的是单个的字符
select * FROM TblStudent where TSName LIKE '张__'
select * from TblStudent where tSName like '张%' and LEN(tSName)=3


=========
--请从学生表中查询出每个班的班级Id和班级人数:
select TClassId as 班级id,班级的人数=count(*) FROM TblStudent
GROUP BY TClassId


--请从学生表中查询出每个班的班级Id和班级中男同学的人数
select TsClassId as 班级id,班级的人数=count(*) FROM TblStudent
where TSGender='男'
GROUP BY TsClassId


--1.热销售商品排名表,【即按照每种商品的总销售数量排序】。


SELECT 商品名称,sum(销售数量) as 商品销售总数量 FROM myorders
group BY 商品名称
order BY 商品销售总数量 desc


SELECT 商品名称,销售总价= sum(销售数量*销售价格)from myorders
group BY 商品名称
HAVING sum(销售数量*销售价格)>3000
order BY 销售总价 desc


select 购买人 ,sum(销售数量) as 购买量 FROM myorders
where 商品名称='可口可乐'
GROUP BY 购买人
order BY sum(销售数量) desc


--统计各个客户对"可口可乐"的喜爱度(既统计每个购买人对“可口可乐”的购买量)


select '年纪为'+cast(90 AS VARCHAR(10))
SELECT '年纪为'+convert(VARCHAR(10),90)




---------------字符串的函数


select len('小赵喜欢凤姐,凤姐喜欢老马,老马喜欢老杨')--计算字符串的个数(长度)


select datalength('小马f')


print ltrim('    哇塞,我去,建了一个表');
print rtrim('    哇塞,我去,建了一个表     ');
print ('    哇塞,我去,建了一个表     ');


--截取的
select left('小赵猥琐',2);
select right('老马邪恶',3);
select * from T6


select getdate() 获得当前时间