sql基础知识总结

本文围绕SQL展开,介绍了刷题和学习教程资源,阐述了SQL可分为数据操作语言和数据定义语言,提及常用数据类型。着重讲解了SQL查询语句,包括多表查询及语句执行顺序。还介绍了自定义函数,分为标量值和表格值函数,最后补充了条件语句等内容。

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

前言

 

刷题或者练习sql的网站:题库 - 力扣 (LeetCode) 全球极客挚爱的技术成长平台

sql学习教程:

SQL 教程

SQL 教程 | 菜鸟教程

sql几个要点

  • SQL 对大小写不敏感

  • 某些数据库系统要求在每条 SQL 命令的末端使用分号。

我这里总结的是mysql,其他数据库可能会有差异


先来个SQL的简单了解:

可以把 SQL 分为两个部分:数据操作语言 (DML) 和 数据定义语言 (DDL)。

DML:

  • SELECT - 从数据库表中获取数据

  • UPDATE - 更新数据库表中的数据

  • DELETE - 从数据库表中删除数据

  • INSERT INTO - 向数据库表中插入数据

DDL:

SQL 中最重要的 DDL 语句:

  • CREATE DATABASE - 创建新数据库

  • ALTER DATABASE - 修改数据库

  • CREATE TABLE - 创建新表

  • ALTER TABLE - 变更(改变)数据库表

  • DROP TABLE - 删除表

  • CREATE INDEX - 创建索引(搜索键)

  • DROP INDEX - 删除索引

SQL常用数据类型:

数据类型

描述

  • integer(size)

  • int(size)

  • smallint(size)

  • tinyint(size)

仅容纳整数。在括号内规定数字的最大位数。

  • decimal(size,d)

  • numeric(size,d)

容纳带有小数的数字。

"size" 规定数字的最大位数。"d" 规定小数点右侧的最大位数。

char(size)

容纳固定长度的字符串(可容纳字母、数字以及特殊字符)。

在括号中规定字符串的长度。

varchar(size)

容纳可变长度的字符串(可容纳字母、数字以及特殊的字符)。

在括号中规定字符串的最大长度。

date(yyyymmdd)

容纳日期。


sql的具体操作:

CREATE DATABASE database-name //创建数据库

drop database dbname //删除数据库

CREATE TABLE 表名称
(
列名称1 数据类型,
列名称2 数据类型,
列名称3 数据类型,
....
)//创建表

drop table tabname //删除表

Alter table tab-name add column col-name type //新加一列

Alter table tab-name drop 字段名 //删除一列

ALTER TABLE 旧表名 rename to 新表名;//修改表名

ALTER table student change 旧字段 新字段 数据类型;//修改字段名

//增删改查
insert into tab-name(field1,field2) values(value1,value2) //增
delete from table1 where 范围//删除数据
update table1 set field1=value1 where 范围//更新

//查
select * from tab-name where 范围  //查询数据
where:
    条件表达式:where grade>10;name='mike'
    in关键字: where name [not] in('tom','kik','bvb')
    between and关键字: where id [not] between 1 and 100
distinct:
    select distinct age ,gender from stu//年龄和性别都不同的学生
    //可以作用于多个字段
like:
    where name [not] like '_123%'
    %匹配0或多个
    _匹配一个
    \转义字符来匹配% _
and:
    多条件查询
or:
    满足一个条件即可查询
and优先级比or高


sql最重要和最难的还是查询语句,所以下面都是围绕查询来写的

高级查询:
   聚合函数
            count(*)
            sum(字段名)
            avg(字段名)
            max(字段名)
            min(字段名)
            等等(具体可以查相关文档)
查询结果排序
              order by 字段名1[desc][asc]  字段名2[desc][asc] 
分组查询
                group by 字段名//将字段分组
                通常和聚合函数一起,例如count
                与having一起使用
                having后面可接聚合函数,where不能
                例子:SELECT sum(age),bb from  `student` GROUP BY bb HAVING SUM(age)>20;
limit限制查询结果数量
            limit [offset],记录数量
            例子: select * from student limit 1,2//从第1条数据(默认是0开始)开始显示两条数据
    函数
            if()  ifnull()  md5()  ,concat() , length() sort() 等等(具体可以查相关文档)
为表和字段取别名
            表名 as 别名
            字段名 as 别名
多表查询
    table1 cross join table2 //笛卡儿积
    inner jion=join //内连接
    外连接
JOIN: 如果表中有至少一个匹配,则返回行
LEFT JOIN: 即使右表中没有匹配,也从左表返回所有的行
RIGHT JOIN: 即使左表中没有匹配,也从右表返回所有的行
FULL JOIN: 只要其中一个表中存在匹配,就返回行

复合查询:

    in()

    exists()

    any()

    all()

多表查询:看图,加具体的练习就懂了,这个其实不难的

具体操作一下就懂了


sql语句的执行顺序以及流程:

这里是个人认为在掌握基本语法后最重要的一点了

SELECT DISTINCT
FROM
JOIN
ON
WHERE
GROUP BY
HAVING
ORDER BY
LIMIT

如果你知道每个关键字的意思,作用,如果你还用过的话,那再好不过了。但是,你知道这些语句,它们的执行顺序你清楚么?如果你非常清楚,你就没有必要再浪费时间继续阅读了;如果你不清楚,非常好,你应该庆幸你阅读到了这么好的一篇文章。

sql语句的执行顺序以及流程(详细掌握)

这篇文章写的很好,我觉得有必要看看


SQL自定义函数

自定义函数分为二种:一种是标量值函数,另一种是表格值函数

(这个我自己用的也比较少,但是记一下吧)

1 标量值函数 :返回一个标量值

语法:

Create function 函数名(参数)
Returns 返回值数据类型
as
begin
SQL语句(必须有return 变量或值)
End

例子:

2 表格值函数 ,表格值函数有二种(内联表格值函数,多句表格值函数)

语法:

create function 函数名(参数)
returns table
as
return(一条SQL语句)

其他用法:

case when

例子:


最后:

这些都是个人这几天又简单复习了一遍数据库,以前没总结全忘了,现在总结一下,可能还会有更新

上面只是数据库知识的冰山一角,还有很多方面没有涉及到,如果有错误,请不吝啬你的指出,谢谢啦

共勉

---

2023.6.29补充

条件语句用if()

SELECT 
    stu_no, IF(score_prize >= 60, 'T', 'F') score_status
FROM
    score;

多条件用 case when 

SELECT
    STUDENT_NAME,
    (CASE WHEN score < 60 THEN '不及格'
        WHEN score >= 60 AND score < 80 THEN '及格'
        WHEN score >= 80 THEN '优秀'
        ELSE '异常' END) AS REMARK
FROM
    TABLE

有关时间的用

select day(date) as day	,count(result) as question_cnt
from question_practice_detail

where month(date)=8 and year(date)=2021
group by date

# year(),month(),day()3个函数

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值