sql基础知识总结

前言

刷题或者练习sql的网站:https://leetcode-cn.com/problemset/database/

sql学习教程:

http://www.w3school.com.cn/sql/index.asp

https://www.runoob.com/sql/sql-tutorial.html

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基础知识总结_第1张图片

 

 

具体操作一下就懂了


 

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

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

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

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

http://www.360doc.com/content/18/0716/00/5758241_770676287.shtml

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

 


SQL自定义函数

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

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

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

语法:

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

 

例子:

sql基础知识总结_第2张图片

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

语法:

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

其他用法:

case when

例子:

sql基础知识总结_第3张图片


 

最后:

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

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

共勉

你可能感兴趣的:(sql)