sqlserver增删改查语句实例详解

TheDisguiser 2020-09-08 17:04:15 java常见问答 6511

一说起数据库我们就能想到增删改查,这是数据库最基本也是最重要的功能,本篇文章我们会通过一些实例来详细的了解sqlserver数据库是如何增删改查的,快一起来看看吧。

示例

-----------------查询 insert----------------
--计算表达式,运算功能
select 1+2; --3
select (1+2)*4; --12
select 5/2;
--1、查询所有记录(行和列): *
--查看中国明星表中的所有内容
select * from 中国明星表;
--查看外国明星表中的所有内容
select * from 外国明星表;
--2、查询指定的列 :列名
--从中国明星表中找出所有明星的姓名、人气指数
select 姓名,人气指数 from 中国明星表;
--从外国明星表中找出所有明星的name_f和name_d
select name_f,name_d from 外国明星表;
--3、给列指定别名(代号)
--从外国明星表中找出所有明星的name_f和name_d,
--并将列名改为“名”、“姓”(两种更改方式)
---方法一: AS关键字
select name_f as '名',name_d as '姓' from 外国明星表;
---方法二: =等号
select '名'=name_f,'姓'=name_d from 外国明星表;
--4、连接多个字段:+
--字符+字符=拼接字符
--从外国明星表找出所有明星的名字,以“名.姓”的形式显示出来
select name_f+'.'+name_d as '姓名' from 外国明星表;
--数字+数字=求和
--将外国明星表中每个明星的年龄增加10岁并显示出来
select name_f,age+10 as '十年后' from 外国明星表;
--数字+字符,需要进行数据类型转换 Convert
--字符+字符
select '狗不理包子'+'好吃'
select convert(varchar(10),'狗不理包子')+'好吃' --狗不理包子好吃
select convert(varchar(8),'狗不理包子')+'好吃' --狗不理包好吃
select convert(varchar(2),'狗不理包子')+'好吃' --狗好吃
select convert(varchar(3),'狗不理包子')+'好吃' --狗不理包子好吃
--数字+字符串
select 123456+'好吃'
select convert(varchar(6),123456)+'好吃' --123456好吃
select convert(varchar(7),123456)+'好吃' --123456好吃
select convert(varchar(5),123456)+'好吃' --*好吃
--查找中国明星表中所有明星的姓名及年龄(作为一列显示)
select 姓名+convert(varchar(3),年龄) from 中国明星表
--按指定格式显示结果:编号为**的**年龄是**
select '编号为'+convert(varchar(2),编号)+'的'+姓名+'年龄是'+convert(varchar(3),年龄) as 
'信息' from 中国明星表
--5、查询指定行:where筛选
--查找编号为1的中国明星
select * from 中国明星表 where 编号=1
--查找编号为1或者5的中国明星
select * from 中国明星表 where 编号=1 or 编号=5
--查找编号大于5的中国明星
select * from 中国明星表 where 编号>5
--查找人气指数大于10的中国明星
select * from 中国明星表 where 人气指数>10
--6、取前面几条记录:top
--取中国明星表的前五条记录
select top 5 * from 中国明星表
--查询中国明星表中,排在第一位的明星姓名
select top 1 * from 中国明星表
--取中国明星表的前30%的记录 ( percent )
select top 30 percent * from 中国明星表
--7、排序:order by 列名 [asc||desc]
--默认升序,asc
--降序,desc
--注意不能对image,text,ntxet类型的字段排序
--将中国明星表按人气从高到低显示出来
---默认是升序
select * from 中国明星表 order by 人气指数
---asc是升序
select * from 中国明星表 order by 人气指数 asc
---desc是降序
select * from 中国明星表 order by 人气指数 desc
--按地址进行排序
select * from 中国明星表 order by 地址
--找出中国明星表人气指数最高的三位
select top 3 * from 中国明星表
order by 人气指数 desc
--多个字段排序
--首先按人气指数降序,如果人气相同,按出场费升序
select * from 中国明星表
order by 人气指数 desc,出场费 asc,年龄 asc
--8、查询null值:is null
--找出中国明星表中地址为空的明星
select * from 中国明星表 where 地址 is null
--找出中国明星表中地址不为空的明星
select * from 中国明星表 where 地址 is not null
--找出中国明星表中地址为''的明星
select * from 中国明星表 where 地址=''
-----------------增加 insert----------------
/*做增加操作的时候,先确定数据库是否正确
新建查询的时候,默认情况下是master数据库
想切换到指定数据库,一共有两种方式:
1、直接手动切换:
2、代码切换:
use 指定数据库的名字
*/
use MySchool138;
/*
向数据库中增加数据,一共有两种增加方式:
1、指定列名
2、不指定列名
*/
/*
-------------------- 指定列名的代码-------------
insert into 表名(字段1,字段2,字段3,字段4)
values (值1,值2,值3,值4)
注意:
1、不要写标识列
2、字段的顺序可以改变
3、可以为空的字段可以不写
4、不能为空的字段必须要写
5、如果某个字段不能为空,但是有默认值,可以不写,里面出现的就是默认值
6、如果某个字段可以为空,同时也有默认值,如果不写,出现的是默认值
7、时间datetime的格式:2017-3-7 13:09:12
时间date的格式:2018-11-28
*/
--标准的添加代码
insert into 
student(StudentNo,LoginPwd,StudentName,Sex,GradeId,Phone,Address,BornDate,Email)
values('s138001','123','小红','男','1','13888886666','北京大胡同','2000-1-2','chengan@qq.com');
--字段的顺序可以改变(比如交换密码和姓名的位置)
insert into 
student(StudentNo,StudentName,LoginPwd,Sex,GradeId,Phone,Address,BornDate,Email)
values('s138002','小刚','666','男','1','13999999999','长沙下水沟','1999-9-9','zhaodi@163.com');
--可以为空的字段可以不写
insert into 
student(StudentNo,StudentName,LoginPwd,Sex,GradeId,Phone,Address)
values('s138003','小天','888','女',1,'11122233344','大海');
--不能为空,但是有默认值,可以不写,里面出现的就是默认值
insert into student(StudentNo,StudentName,LoginPwd,Sex,GradeId,Phone)
values('s138004','小明','654321','男',1,'11122233344');
--增加一门科目java(subjectId是标识列,标识列的数字是系统自己放上去的,用户千万不要给值)
insert into Subject(SubjectName,ClassHour,GradeId)
values('java',88,1);
--为小红添加java成绩:88
insert into result(StudentNo,SubjectId,StudentResult,ExamDate)
values('s138001',5,88,'2018-11-28');
/*
---------如果不指定字段-----------------------
insert into 表名 values(值,值,值,值)
注意:
1、必须按照表字段的顺序把所有值依次输入进去,除了标识列以外
2、如果希望为空,请插入关键null
3、如果希望为默认值,请插入关键字default
*/
--添加学生
insert into student 
values('s138005','1234','海绵宝宝','女',1,'1234567','菠萝','2000-2-5','abc@qq.com')
insert into student 
values('s138007','1234','派大星','男',1,'1234567','大盖子',null,null);
insert into student 
values('s138008','1234','煤老板','男',1,'1234567',default,null,null);
--添加sql科目
insert into Subject values('sql',60,1);
--添加sql成绩:60
insert into result values('s138002',6,60,'2018-11-28');
/*
------------多行插入----------------
insert into 表名(列名1,列名2)
select 值1,值2 union
select 值1,值2 union
select 值1,值2
注意:
1.使用UNION插入数据时实际插入顺序和SQL语句中的顺序可能不一致
2.有一些限制,例如不能使用default等
3.只有有一条语句出错,比如违反检查约束等,所有数据都无法插入
3.基本不用这种插入方式
*/
/*
----------- 复制表(多行插入) ---------
1、新表一定不能存在
select 列名
into 新表
from 原表
2、新表一定要存在
insert into 新表名(列名)
select 列名
from 原表
*/
--1.将学员信息表复制到表StudentInfo_BackUp留做备份.
--2.将考试成绩表复制到StudentExam2,要求不需要复制表中数据。
--3.将考试成绩表中数据插入到表StudentExam2(上题建立的表)之中
/*
------------更新数据-------------
update 表名 set 列名=更新值 where 更新条件
注意:
1.如果不加更新条件,则所有数据全部更新
2.如果有多列需要更新,中间用逗号隔开
*/
--把所有学生的年级都改为1
update student set gradeId = 1;
--小红密码修改为888888
update student set loginPwd='888888'
where studentName='小红'
--煤老板性别改为女
update student set sex='女' where studentName='煤老板';
--小天性别改为男,并且电话改为18866668888
update student set sex='女',phone='18866668888'
where studentName='小天'
--java成绩+5分
update result set studentResult=studentResult+5
where subjectId=5;
/*
-----------删除数据--------------
delete from 表名 where 删除条件
注意:
1.delete是整行删除,所有没有列名
2.如果有主外键关联,要先删除子表数据,再删除主表数据
3.删除数据后,再做增加操作,标识列会继续增加
truncate table 表名
注意:
1.不能用于有外键约束引用的表,即主表中的数据,无论外键表中是否有相关数据
2.标识列重新开始编号
3.只能整表删除,不能加条件
4.实际工作中应用尽量少用TRUNCATE TABLE,因为它删除的数据不能恢复
*/
--删除小明
delete from student where studentName='小明'
--删除小红
--直接删除小红会报错,因为小红有成绩在result表中
--先把小红存在的所有痕迹都删除,再删除小红
delete from result where studentNo='s138001';
delete from student where studentName='小红';
--不加条件,会把整个表的数据全部删除
delete from result ;
delete from student;
select * from Subject;
select * from student;
select * from result;

以上就是今天的全部内容,需要了解更多java常见问题及解决方法的小伙伴请记得关注网站奇Q工具网了解具体详情。

推荐阅读:

sqlserver存储过程怎么编写?

sqlserver端口如何设置?

sqlserver使用教程解析