一说起数据库我们就能想到增删改查,这是数据库最基本也是最重要的功能,本篇文章我们会通过一些实例来详细的了解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工具网了解具体详情。
推荐阅读: