SQL学习笔记3——用代码实现数据的 增、删、改、查

--添加数据
--第一种方式
insert into 表名(列名1,列名2) values(值1,值2)
insert into Class(ClassName, ClassDesc) values('1班','史上最牛x的班级')
--添加数据显示的受影响的行数

--第二种方式
insert into 表名 values(值)
insert into Class values('2班','和之前班比逊色了一些')

--第三种方式,一次性插入多条数据
insert into Class values('3班','和之前班比逊色了一些')
insert into Class values('4班','和之前班比逊色了一些')
insert into Class values('5班','和之前班比逊色了一些')
insert into Class values('6班','和之前班比逊色了一些')

--第四种方式--一次插入多条数据
insert into Class(ClassName, ClassDesc)
select '7班','不知道什么样' union
select '8班','啥样啊1' union
select '9班','啥样啊2' union
select '10班','啥样啊3'

select 100+10 --结果返回两个数的和110
--删除
--第一种,数据没了,表还在,但是id接着删除前表的最大id继续加1
delete from class where classid=15
--返回的都是受影响的行数

--第二种,表没了,数据也没了
drop table class--轻易不要尝试

--第三种方式,表存在,数据没了,id从1开始
truncate table class

delete和truncate的区别:

(1)truncate语句非常高效。由于truncate操作采用按最小方式来记录日志,所以效率非常高,对于几百万条数据使用truncate删除只要几秒,而对于delete则可能需要几个小时。

(2)truncate会把表中的自动编号重置为默认值

(3)truncate不会触发delete触发器

--修改数据
select * from class
update 表名 set 列1=值1,列2=值2 
update Class set ClassDesc='都是好厉害的'
--修改或者更新表中的数据返回的是受影响的行数
update Class set ClassDesc='都很厉害啊' where ClassId<>1

--把名字为李三的人 他的性别变成女 同时年龄变成12
update student set TSGender=0 ,TSAge=12 where TSName='李三'
--年龄大于25岁的所有的人年龄再加1
update student set TSAge=TSAge+1 where TSAge>25

--查询数据
select * from student --查询表中所有列的数据

select tsname,tsage,tsgender from student --查询特定列的数据

--给查询出的数据的列标题起别名
--第一种方式
select tsname as '姓名',tsage as '年龄' from student
--第二种方式
select tsname as 姓名,tsage as 年龄 from student
--第三种方式
select 名字=tsname,年龄=tsage from student

select 名字=tsname,年龄=tsage from student where TSGender=1

--查询所有的数据中的前10条数据,数据库中的数据是已无序的方式存储
select top 10 * from student
--查询年龄最小的5个学生的信息
select top 5 * from student order by TSAge
--从大到小排序 查询的是 年龄最大的百分之10的学生信息
select top 10 percent * from student order by TSAge desc --10%
select * from student
--去除重复
select distinct TSName from student


--聚合函数实际就是将多行数据合并为一行,其中NULL值不参与聚合函数的计算

--查询总共多少条的数据
select COUNT(*) from student

--查询的是最高的数学成绩
select MAX(TSMath) from TblScore
--数学成绩最高的这个人的英语成绩和数学成绩
select MAX(tsmath),TSEnglish from TblScore --错误写法
select top 1 tsenglish,TSMath from TblScore order by TSMath desc --正确写法

--成绩表中数学成绩最低的是多少
select MIN(TSEnglish) from TblScore

--总和
select SUM(tsenglish) from TblScore

--平均值
select AVG(tsenglish) from TblScore

--聚合函数可以联合使用
select 
	MAX(tsenglish) as 英语最高成绩,
	MIN(tsenglish) as 最低成绩,
	SUM(tsenglish) as 总和,
	AVG(tsenglish) as 平均成绩
from TblScore

--区间查询

--between and
--第一种方式
select * from student where TSAge>=20 and TSAge<=30 and TSGender=1
--第二种方式
select * from student where TSGender=1 and TSAge between 19 and 29 --优先用between and,已经过内部优化了,查询速度快

--in
--第一种方式
select * from student where TClassId=1 or TClassId=2 or TClassId=3
--第二种方式
select * from student where TClassId in(1,2,3) --优先用in<span style="font-family: Arial, Helvetica, sans-serif;">,已经过内部优化了,查询速度快</span>


--模糊查询

--查询的是以张开头的所有的名字
select * from tblstudent where TSName like '张%' --%匹配任意多个字符

--查询的是以张开头的名字,只有两个字
select * from tblstudent where TSName like '张_' --_匹配一个字符

--查询的是以张开头的名字,三个字
--第一种方式
select * from TblStudent where tSName like '张%' and LEN(tSName)=3
--第二种方式
select * from tblstudent where TSName like '张__'

--第2个字符为字母
select * from TblStudent where tSName like '张[a-z]%'

select * from TblStudent where TSName like '%张%'

select * from TblStudent where TSName like '张[%]%' --第2个字符为%

select * from TblStudent where tSName like '张[0-9]_'

select * from TblStudent where tSName like '张[^0-9]_' --第2个字符不为数字

select * from TblScore where english = null


--空值查询

--错误写法select * from TblScore where TSEnglish = null
select * from TblScore where TSEnglish is null
--错误写法select * from TblScore where TSEnglish != null
select * from TblScore where TSEnglish is not null

--排序

--英语成绩高的按数学成绩排
select * from TblScore order by TSEnglish desc,TSMath desc

select * ,总成绩=(TSEnglish+TSMath)from TblScore order by (tsEnglish+tsMath) desc

--分组查询

--例1:请从学生表中查询出每个班的班级Id和班级人数
select tclassid as 班级的id,COUNT(*) as 班级的人数 from student group by TClassId
having COUNT(*)>3
--having 是在分组后再次进行筛选.......
--例2:请从学生表中查询出每个班的班级Id和班级中男同学的人数 
select tclassid as 班级的id,COUNT(*) as 班级的人数 from student where TSGender=1 group by TClassId


--case end分组查询

select  
数学成绩=
case
	when TSEnglish>100 then '优'
	when TSEnglish>90 then '良'
	when TSEnglish>80 then '中'
	when TSEnglish>70 then '及格'
	when TSEnglish is NULL then '缺考'
	else '不及格'
end
from TblScore

select (case when a>b then a else b end),(case when b>c then b else c end ) from t8


--把一个查询的结果放在另外一个查询中使用叫子查询

select * from (select * from student where TSGender=1) as t where TSAge>20




SQL语句执行顺序:

(1)From表

(2)Where条件

(3)Group by列

(4)Having筛选条件

(5)Select 5-1>选择列,5-2>distinct,5-3>top

(6)Order by列


SqlHelper.java连接数据库通用类... package org.jdbc.com.util; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; public class SqlHelper { /** * 设置单例 */ public static SqlHelper instance = new SqlHelper(); /** * 设置单例的一个实例方法 * * @return */ public static SqlHelper getInstance() { if (instance == null) { synchronized (SqlHelper.class) { instance = new SqlHelper(); } } return instance; } /** * 得到MySql连接 * * @return */ public static Connection getMySqlConnection() { Connection conn = null; String url = "jdbc:mysql://127.0.0.1:3306/jdbc?useUnicode=true&characterEncoding=utf-8"; String user = "root"; String password = "root"; String driver="com.mysql.jdbc.Driver"; try { Class.forName(driver); conn = DriverManager.getConnection(url, user, password); } catch (Exception e) { System.out.println("连接数据库出现异常" + e.getMessage()); } return conn; } /** * 得到MMSQL连接 * @return */ public static Connection getMMSQLConnection() { String url = "jdbc:sqlserver://localhost:1433;DatabaseName=jdbc"; String user = "sa"; String password = "sa"; String Driver="com.microsoft.sqlserver.jdbc.SQLServerDriver"; Connection conn = null; try { Class.forName(Driver); conn = DriverManager.getConnection(url, user, password); } catch (Exception e) { System.out.println("连接数据库出现异常" + e.getMessage()); } return conn; } /** * 得到Oracle连接 * @return */ public static Connection getOracleConnection() { String url = "jdbc:oracle:thin:@127.0.0.1:1521:orcl"; String user = "scott"; String password = "scott"; String Driver="oracle.jdbc.driver.OracleDriver"; Connection conn = null; try { Class.forName(Driver); conn = DriverManager.getConnection(url, user, password); } catch (Exception e) { System.out.println("连接数据库出现异常" + e.getMessage()); } return conn; } /*** * 释放资源... * * @param rs * @param st * @param conn */ public static void Relesae(ResultSet rs, Statement st, Connection conn) { try { if (rs != null) rs.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值