SQL 数据的增删改查

增  insert into

-- 添加单条数据

-- insert into 学生表 values('40','邹扬光','男','2003-5-8','信息工程',19875189221);

-- 添加多条数据
--INSERT INTO 学生表 (学号,姓名,性别,所在系) VALUES
--('小乔大王1','小乔大王','女','宇宙社会学'),
--('小乔大王2','小乔大王','女','宇宙社会学'),
--('小乔大王3','小乔大王','女','宇宙社会学')

--查询结果添加
--insert into 学生选课表 select * from sc选课

改 
--update 表名 
--set 列名=值 
--from 多表的情况 (可选) 
--where 条件表达式(可选)

--update 学生选课表 
--set 学生选课表.成绩=学生选课表.成绩+学生选课表.成绩*(课程表.学分/100.0)
--from 学生表,课程表
--where 学生表.所在系='现代交通' and 学生选课表.学号=学生表.学号 and  学生选课表.成绩<90 and 学生选课表.成绩 is not null and 学生选课表.课程号=课程表.课程号;

--删除 表数据
--delete 表名
--from 多表的情况(可选)
--where 条件表达(可选)

--delete 学生选课表
--where 成绩 is null

--delete 学生选课表
--from 学生表
--where 成绩 is null and 学生选课表.学号=学生表.学号 and 所在系='信息工程'

--查看数据

--SELECT 列名
--FROM 表名
--WHERE 条件表达式
--GROUP BY 分组列名
--HAVING  筛选 条件表达式
--ORDER BY 排序规则


--SELECT * FROM 学生表 WHERE 学生表.姓名 in ( '邹扬光','小乔大王');
--select DATEADD(YEAR,1,'2023-11-15') DATEADD(要改变时间单位,要修改多少(负数减少,正数添加),要修改的时间) DATEADD 增加 减少时间
--SELECT GETDATE();当前时间
--SELECT YEAR(GETDATE())当前时间的年份
--SELECT 学生表.出生日期 FROM 学生表 WHERE 出生日期 is not null;--出生日期 不是空的
--SELECT datediff(YEAR,GETDATE(),'2026') --datediff 计数日期间隔函数 datediff(日期和时间单位,开始日期和时间,结束日期和时间)
--SELECT lower(课程表.课程号)as'课程表' from 课程表 -- lower 小写
--SELECT upper(课程表.课程号)as'课程表' from 课程表 -- upper 大写
--SELECT len(课程表.课程号)as'课程表' from 课程表 -- len 长度
--SELECT distinct  学生选课表.学号  FROM 学生选课表 --distinct 去重
--SELECT 查询的数据 FROM 表名 别名 LEFT JOIN 表名 别名 ON 条件 --JOIN 链接 LEFT JOIN左链接 左边为主表
--SELECT * FROM 学生表 WHERE 学生表.所在系='信息工程' and 学生表.出生日期 between '1990-1-1' and '1999-12-31';--between 范围
--SELECT * FROM 学生选课表 WHERE  not 学生选课表.成绩  = 90; --not 不

;--LIKE 字符匹配  %任意字符 _单个字符 [] 或 
--SELECT * FROM 学生表 WHERE 学生表.姓名 like '小%'   
--SELECT * FROM 学生表 WHERE 学生表.姓名 like '李_'
--select * from 学生表 WHERE 所在系 = '信息工程' AND 学生表.姓名  LIKE '[李张王]%' AND YEAR(GETDATE())-YEAR(出生日期) >= 18;

-- ORDER BY 排序 默认 升序
-- ASC 升序
-- DESC 降序
-- SELECT * FROM 表名称 ORDER BY 列名称 ASC
-- SELECT * FROM 表名称 ORDER BY 列名称 DESC
-- ORDER BY 多重排序
-- SELECT * FROM 表名称 ORDER BY 列名称 ASC,列名称 DESC

-- COUNT 统计数量
-- SELECT COUNT(*) AS '人数' FROM 学生表;
-- AVG 平均
-- MAX 最大
-- MIN 最小
-- SUM 和
-- Top 排在前面的数据 PERCENT百分比
-- SELECT top 5 * FROM 学生表;--前5条
-- SELECT TOP 10 PERCENT * FROM 学生选课表 ORDER BY 学生选课表.成绩 DESC;--前 10 % 条 PERCENT %

--联合查询
-- SELECT * FROM 学生表 WHERE 所在系 = '信息工程' AND 学生表.出生日期=(SELECT MIN(学生表.出生日期) FROM 学生表 WHERE 所在系 = '信息工程');

-- GROUP BY 对数据进行分组
-- HAVING 过滤
-- SELECT 学号, COUNT(*) AS 选课门数 FROM 学生选课表 WHERE 学生选课表.成绩  IS NOT NULL  GROUP BY 学生选课表.学号 HAVING COUNT(*) >4;

-- 多表查询
--SELECT 查询的数据 FROM 表名 别名 LEFT JOIN 表名 别名 ON 条件
--SELECT 学生表.姓名,学生选课表.*,课程表.课程名 
--FROM 学生选课表,学生表,课程表 
--WHERE 学生选课表.学号=学生表.学号 AND 学生选课表.课程号=课程表.课程号

--嵌套查询
--查询各门课程的最高分的学生综合信息(学号,姓名,课程名,最高分,所在系)
--select 学生表.学号,姓名,课程名,最高分,所在系
--from 学生表,学生选课表,
--(select 课程表.课程号,课程名,max(成绩) '最高分'
--from 学生选课表,课程表
--where 课程表.课程号=学生选课表.课程号
--group by 课程表.课程号,课程名) T
--where 学生表.学号=学生选课表.学号 and 学生选课表.课程号 = T.课程号 and 学生选课表.成绩 = T.最高分 
--ORDER BY 课程名

--查询姓氏出现次数最多的学生信息
--(分析:该题属于按照姓氏查找学生信息,需要进行字符串截取。
--先根据姓氏进行分组,统计每个姓氏的次数,然后提取出次数的最大值,
--再次找出该次数所对应的姓氏,最后根据姓氏找出符合该条件的学生)
--SELECT * from 学生表 where  left(学生表.姓名,1) in (
--SELECT  left(学生表.姓名,1) FROM 学生表 group by left(学生表.姓名,1) having count(*)=(
--SELECT top 1 count(*) FROM 学生表 group by left(学生表.姓名,1) ORDER BY count(*) desc));


--切片
--SELECT left(学生表.姓名,1)  FROM 学生表;

-- into 备份 表
--SELECT  *  into s FROM 学生表
--SELECT  *  into c FROM 课程表
--SELECT  *  into sc FROM 学生选课表

--集合操作
--(12345)(23896)
--union 并 (12345689)
--EXCEPT 差 (145)
--INTERSECT 交(23)

--、查询信息工程系的学生以及成年的学生信息(学号,姓名)
--select * from 学生表 
--where 学生表.出生日期 is not null and  datediff(YEAR,学生表.出生日期,GETDATE())>=18
--union 
--select * from 学生表 where 学生表.所在系='信息工程';


--恢复
--delete 学生选课表
--select * from 学生选课表
--insert into 学生选课表 select * from sc选课

--insert into 学生选课表 select * from sc选课 where 成绩 is null

--insert into 学生选课表 
--select * from 学生表,学生选课表 
--where  成绩 is null and 学生选课表.学号=学生表.学号 and 所在系='信息工程'

  • 5
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值