SQL 专项训练刷题总结

本文深入探讨了SQL语言的核心概念,包括where、groupby、orderby和having子句的用法,以及DML、DDL和TCL的区别。讲解了如何使用SQL进行数据查询、分组筛选和事务控制,并介绍了存储过程的概念及其创建方法。此外,还提到了数据库安全、权限管理和SQL注入的相关知识。

1、where 筛选、group by 分组、order by 排序、having+group by 筛选分组

区块链:公有链(Public Blockchain)、私有链(Private Blockchain)、联盟链(Consortium Blockchain)三大类。

2、order by 排序,desc表示降序,asc表示升序,默认情况下是asc升序。

3、子查询必须是完整语句

检索所有比“王华“年龄大的学生姓名、年龄和性别。

select sn,age,sex,from s where age>(select age from s where sn="王华");

4、order by 排序 后面必须列出排序的字段名,可以是多个字段名

group by 分组 必须有”聚合函数“--sum()、count()、avg()等来配合使用,使用时至少需要一个分组标志字段

count()属于聚合函数,where后面不能接聚合函数,所以就有了having子句

having子句可以接聚合函数,筛选分组后的各组数据

5、having用在group by后面,筛选group by分组后的各组数据

6、SQL注入的关键是单引号的闭合,“ ”  “ --

7、删除表:delecte、drop、truncate

处理效率:drop>trustcate>delete

删除范围:drop删除整个表、trustcate删除全部记录,但不删除表、delect删除部分记录

delect不影响所用extent,高水线保持原位置不动,trustcate会将高水线复位

8、where子句 = 指定行所对应的条件 过滤行 在分组之前使用

having子句 = 指定组所对应的条件 过滤分组 在分组之后使用

实际上所有的where子句都可以用having代替,两者也可同时使用

grouping by 的作用是限定分组条件,而having则是对group by 中分出来的组进行条件筛选

所以用having就一定要和group by连用,且是先group by XXX 然后再having XXX,用group by 不一定有having,因为group by只是一个筛选条件

9、count(*) 包括了所有的列,相当于行数,在统计结果的时候,不会忽略列值为NULL

count(1) 包括了忽略所有列,用1代表代码行,在统计结果的时候,不会忽略列值为NULL

count(列名)只包括列名那一列,在统计结果的时候,会忽略列值为空

所有的统计函数都会忽略空值(null)

10、在子表元素大于1时,不能用 = 要用 in 

  in  (子表)

11、case......when.....then......else......end一个固定搭配

12、drop 是完全删除表,包括表结构

delete 是删除表数据,保留表的结构,而且可以加where,只删除一行或者多行

truncate 只能删除表数据,会保留表结构,而且不能加where

13、db_accessadmin    可以添加、删除用户的用户

db_datareader     可以查看所有数据库中用户表内数据的用户

14、修改表 字段的缺省值

alter table 表名 alter column 字段名 set default 默认值

15、存储过程(stored procedure)是一组为了完成特定功能的SQL语句集合,经编译后存储在服务器端的数据库中,利用存储过程可以加速SQL语句的执行。

它可以提高SQL的速度,存储过程是编译过的,如果某一个操作包含大量的SQL代码或分别被执行多次,那么使用存储过程比直接使用单条SQL语句执行速度快的多。

不带参数的存储过程:

create procedure proc_sql1  
as  
begin  
    declare @i int  
    set @i=0  
    while @i<26  
      begin  
         print char(ascii('a') + @i) + '的ASCII码是: ' + cast(ascii('a') + <a href="/profile/5" data-card-uid="5" class="js-nc-card" target="_blank">@i as varchar)   
         set @i = @i + 1  
      end  
end</a>

带参数的存储过程:

create proc proc_sql6  
@num1 int,  
@num2 int,  
@num3 int  
as  
begin  
   declare @max int  
   if @num1>@num2    
      set @max = @num1  
   else set @max = @num2  
     
   if @num3 > @max  
      set @max = @num3  
        
   print '3个数中最大的数字是:' + cast(<a href="/profile/20" data-card-uid="20" class="js-nc-card" target="_blank">@max as varchar)  
end</a>

16、MySQl是最好的RDBMS(Relational Database Management System,关系数据库管理系统)应用软件。

17、SQL语言类别:

DQL:数据查询语言
凡是带有select关键字的都是查询语句

select...

DML:数据操作语言
凡是对表当中的数据进行增删改的都是DML

insert delete update

insert 增、delete 删、update 改

这个主要是操作表中的数据data。

 DDL:数据定义语言
凡是带有create、drop、alter的都是DDL,DDL主要操作的是表的结构。不是表中的数据。

create:新建,等同于增

drop:删除

alter:修改

这个增删改和DML不同,这个主要是对表结构进行操作。

TCL:事务控制语言
事务提交:commit;

事务回滚:rollback;

DCL:数据控制语言。
例如:授权grant、撤销权限revoke....

18、编写顺序

   select 
        ...
    from
        ...
    where
        ...
    group by
        ...
    having
        ...
    order by
        ...
    
    以上关键字只能按照这个顺序来,不能颠倒。

    执行顺序?
        1. from
        2. where
        3. group by
        4. having
        5. select
        6. order by
19、distinct 用于返回唯一不同的值,去除重复行

20、DDL(Data Definition language):数据定义语言

用来定义数据库对象:数据库、表、列等。

关键字:create、drop、alter等

DML(Data Manipulation Language):数据操作语言

用来对数据库中的表进行增删改操作。

关键字:insert、delete、updata等

DQL(Data Query Language):数据查询语言

用来查询数据库中表的记录(数据)。

关键字:select、where等

DCL(Data Control Language):数据控制语言

用来定义数据库的访问控制权限和安全级别,及创建用户。

关键字:grant、revoke等

21、insert into 语句用于向表格中插入新的行

insert into table_name values(值1,值2.....)

指定所要插入数据的列:

insert into table_name(列1,列2....)

values(值1,值2....)

        select into 语句从一个表中选取数据,然后把数据插入另一个表中。常用于创建表的备份附件或者用于对记录进行存档

把所有的列插入新表

select * into new_table_name [in externaldatabase] from old_tablename

只把希望的列插入新表

select column_name(s) into new_table_name [in externaldatabase] from old_tablename

22、charindex()用于判断一个字符串中是否包含另一个字符串

返回字符串中指定字符的起始位置,没有指定字符返回0

基本语法:

charindex(expressionToFind,expressionToSearch [,start_location])

expressionToFind:目标字符串,就是想要找到的字符串,最大长度为8000

expressionToSearch:用于被查找的字符串

start_location:开始查找的位置,为空时默认从第一位开始查找

数据库中字符串开头位置是1

len()获取字符串长度

23、求和用累加sum(),求行的个数用累计count()

24、< 对应 &lt;

        >对应 &gt;

case when 判断条件 then 成功结果 then 不成功结果 end

25、datediff()函数返回两个日期之间的时间

语法:datediff(datepart,startdate,enddate)

datepart缩写
yy,yyyy
季度qq,q
mm,m
年中的日dy,y
dd,d
wk,ww
星期dw,w
小时hh
分钟mi,n
ss,s
毫秒ms
微秒mcs
纳秒ns

getdate()得出的是当前日期+时间(精准到毫秒)

26、all:对所有数据都满足条件,整个条件才成立

any:只要一条 数据满足条件,整个条件成立

some的作用和any一样

<think>好的,用户需要寻找可以练习SQL目的网站或在线资源。首先,我需要回顾一下用户提供的引用内容,看看里面有哪些推荐的资源。引用[1]提到一个免费的SQL练习网站,有18个练习项目,覆盖了大部分基础操作,用户可以直接在上面写SQL并运行,这个应该推荐。引用[2]是菜鸟教程,虽然教程详细但没有练习,可以作为补充学习资源。引用[3]和[4]是关于具体SQL语句的例子,可能来自某个练习,但没直接提到网站,所以暂时不考虑。 接下来,用户的需求是练习和提升SQL技能,所以需要推荐既有教程又有实践练习的平台。除了用户提到的资源,我还能想到其他常用的网站,比如LeetCode和HackerRank,它们提供大量的SQL目,适合不同水平的用户。还有Mode Analytics的SQL教程,结合了理论知识和实际案例,可能也不错。另外,SQLZoo是一个互动性强的平台,用户可以直接在浏览器中编写和测试SQL语句,适合初学者。W3Schools的SQL教程也有在线练习,虽然目可能比较简单,但适合入门。 需要考虑用户的不同水平,比如有些可能是初学者,需要从基础开始,而有些可能需要进阶练习。因此,推荐的资源应该涵盖不同难度和内容。例如,SQLBolt适合入门,提供基础练习,而LeetCode和HackerRank有更复杂的目。同时要确保推荐的网站是免费或部分免费的,因为用户可能不希望付费。 还要注意用户提到的引用中的资源是否正确应用。例如,引用[1]中的网站不需要注册,直接练习,这点要强调。同时引用[4]中的例子说明练习中可能遇到的实际问,比如运算符优先级,好的练习平台应该能帮助用户理解这些细节。 最后,整理推荐列表,按推荐程度或适合的学习阶段排序,并简要说明每个资源的特点,帮助用户根据自己的需求选择。同时可能需要提醒用户结合教程和练习,以及实际项目来提升技能。</think>根据您的需求,我将推荐几个适合练习SQL的在线平台,并结合不同学习阶段的特点进行分类: ### 一、基础入门练习平台 1. **SQL在线练习平台(引用[1])** - 特点:无需注册,提供18个练习项目,覆盖$SELECT$、$WHERE$、$JOIN$、子查询等基础操作 - 优势:内置数据集和自动判系统,可直接验证语句正确性 - 示例目:创建$student$表(引用[3])、处理运算符优先级问(引用[4]) 2. **SQLZoo(sqlzoo.net)** - 提供交互式教程,包含$CREATE\ TABLE$、聚合函数等基础练习 - 每个章节附带在线代码编辑器,实时反馈执行结果 ### 二、进阶提升平台 3. **LeetCode数据库库(leetcode.cn/problemset/database)** - 包含180+道SQL目,按难度分级 - 典型型:排名问、复杂连接、窗口函数应用 ```sql -- 示例:查找语文或数学大于90且英语大于90的学生(引用[4]) SELECT 姓名,语文,数学,英语 FROM student WHERE (语文 > 90 OR 数学 > 90) AND 英语 > 90; ``` 4. **HackerRank(hackerrank.com/domains/sql)** - 特色:提供$CASE\ WHEN$、递归查询等进阶练习 - 包含企业级数据场景模拟 ### 三、系统学习资源 5. **菜鸟教程SQL部分(引用[2])** - 适合作为知识词典查询,配套基础语法示例 - 建议结合其他平台的练习使用 6. **Mode Analytics SQL School(mode.com/sql-tutorial)** - 特色:商业分析视角的SQL教学 - 提供真实电商数据集练习 ### 四、专项训练推荐 7. **SQLBolt(sqlbolt.com)** - 通过游戏化关卡设计学习基础操作 - 包含数据定义语言(DDL)练习(引用[3]) 8. **W3Schools SQL练习场(w3schools.com/sql)** - 每个语法章节附带在线测试 - 支持$ALTER\ TABLE$、事务控制等练习
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值