SQL学习笔记[牛客专项练习]

本文介绍了SQL的基础知识,包括执行顺序、DDL、DML和DCL的区别。通过示例讲述了如何查询学生成绩、处理运动会比赛信息数据库、以及在雇员表中的各种操作。此外,还讨论了SQL注入问题和存储过程的创建。内容涵盖了SELECT、INSERT INTO、WHERE、GROUP BY和HAVING等语句的使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

CHARINDEX()

The CHARINDEX() function searches for a substring in a string, and returns the position. If the substring is not found, this function returns 0.

SELECT CHARINDEX(‘t’, ‘Customer’) AS MatchPosition;
4

SQL执行顺序

from
where
group by
having
select
order by

DROP、DELETE、TRUNCATE

drop完全删除表,包括表结构
delete是删除表数据,保留表的结构,而且可以加where,只删除一行或者多行
truncate 只能删除表数据,会保留表结构,而且不能加where

处理效率:drop > truncate> delete,论清理表数据的速度,truncate一般比delete更快
delete不影响所用extent,高水线保持原位置不动;truncate会将高水线复位

DDL、DML、DCL

  • DDL: CREATE, ALTER,DROP
  • DML: SELECT, INSERT, UPDATE, DELETE
  • DCL: GRANT, REVOKE, DENY

有一张学生成绩表sc(sno 学号,class 课程,score 成绩),请查询出每个学生的英语、数学的成绩(行转列,一个学生只有一行记录)

法一:

SELECT 
    sno,
    CASE
        WHEN class = 'english' THEN score
        ELSE 0
    END,
    CASE
        WHEN class = 'math' THEN score
        ELSE 0
    END
FROM
    sc
WHERE
    class IN ('english' , 'math')
GROUP BY sno;

法二:

SELECT 
    sno,
    SUM(IF(class = 'english', score, 0)) AS english,
    SUM(IF(class = 'math', score, 0)) AS math
FROM
    sc
WHERE
    class IN ('english' , 'math')
GROUP BY sno

运动会比赛信息的数据库,有如下三个表:

运动员ATHLETE(运动员编号 Ano,姓名Aname,性别Asex,所属系名 Adep), 项目 ITEM (项目编号Ino,名称Iname,比赛地点Ilocation), 成绩SCORE (运动员编号Ano,项目编号Ino,积分Score)。
写出目前总积分最高的系名及其积分,SQL语句实现正确的是:

SELECT 
    Adep, SUM(Score)
FROM
    ATHLETE
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值