• SQL关键字详解


    当前市场中,数据库在互联网整个技术链中的重要性是亘古不变的,站在实现业务功能的角度来说我们最常用的就是与数据库和缓存进行交互,而最终持久化存储最常见的依旧是关系型数据库。数据库中我们做常用的就是SQL基本查询语言,甚至有些人认为数据库就是SQL,SQL就是数据库。虽然这种观点是错误的,但是也确实从一个方面体现了这种面向结果的查询语言的重要性。

    SQL语言:DDL、DML、DQL、DCL

    • 数据定义语言(DDL)

    DDL全称是Data Definition Language,即数据定义语言,定义语言就是定义关系模式、删除关系、修改关系模式以及创建数据库中的各种对象,比如表、聚簇、索引、视图、函数、存储过程和触发器等等。

    数据定义语言是由SQL语言集中负责数据结构定义与数据库对象定义的语言,并且由CREATE、ALTER、DROP和TRUNCATE四个语法组成。

    • 数据操纵语言(DML)

    数据操纵语言全称是Data Manipulation Language,主要是进行插入元组、删除元组、修改元组的操作。主要有insert、update、delete语法组成。

    • 数据查询语言(DQL)

    数据查询语言全称是Data Query Language,所以是用来进行数据库中数据的查询的,即最常用的select语句

    • 数据控制语言(DCL)

    数据控制语言:Data Control Language。用来授权或回收访问数据库的某种特权,并控制数据库操纵事务发生的时间及效果,能够对数据库进行监视。

    比如常见的授权、取消授权、回滚、提交等等操作。

    SQL语言的基本定义

    (1)基本数据类型:

    类型含义

    char(n)

    存放固定长度的字符串,用户指定长度为n。如果没有使用n个长度则会在末尾添加空格。

    varchar(n)

    可变长度的字符串,用户指定最大长度n。char的改进版,大多数情况下我们最好使用varchar。

    int

    整数类型

    smallint

    小整数类型

    numeric(p,d)

    定点数,精度由用户指定。这个数有p位数字(包括一个符号位)d位在小数点右边。

    real ,double precision

    浮点数和双精度浮点数。

    float(n)

    精度至少位n位的浮点数

    (2)特殊关键字:

    类型

    含义

    示例

    primary key

    主键,后面括号中是作为主键的属性

    primary key(student_id)

    foreign key references

    外键,括号中为外键,references后为外键的表

    foreign key(course_id) references Course

    not null

    不为空,前面为属性的定义

    name varchar(10) not null

    (3)SQL插入:

    类型

    含义

    create table

    创建一张表

    insert into…values

    向表中插入一条信息

    delete from

    从表中删除一条信息

    update…set…where

    在where的位置,更新内容为set的值

    drop table

    删除表

    alter table…add

    向表中添加某个属性

    alter table…drop

    将表中的某个属性删除

    SQL查询:(SQL中最重要的就是查询)

    (1)单关系查询:(只一张表中的内容查询有关信息,不涉及其他的表)

    类型

    含义

    select

    表示要查找出的表所含有的属性

    from

    表示要操作的表

    where

    判断条件,根据该判断条件选择信息

    distinct

    在select后加入关键字distinct表示将结果去重

    all

    在select后加入关键字all表示不去重(默认)

    and

    在where中使用and表示将判断条件连接起来

    or

    在where中使用or表示判断条件多选一

    not

    在where中使用not表示判断条件取反

    (2)多关系查询:(多个表中通过一些操作查找出希望的信息

    A,B

    在from后面通过逗号连接多张表,表示将这些表进行笛卡儿积运算

    natural join

    将natural join关键字前后的两张表进行自然连接运算

    A join B using(c)

    将A和B通过c属性自然连接

    A inner join B on内连接,只返回符合条件的行
    A left join B on左连接,包含左边所有行,如果左边某行在右边无匹配,则结果为空(null)
    A right join B on右连接,包含右边所有行,如果右边某行在左边无匹配,则结果为空(null)
    A full join B on全外连接,包含full join左右两表中所有的行,如果左边某行在右边无匹配,则结果为空(null),如果右边某行在左边无匹配,则结果为空(null)
    A cross join B on交叉连接,没有where子句的交叉连接将产生连接所涉及的表的笛卡尔积(笛卡尔积是第一个表行数乘以第二个表行数积的大小)

    外连接(左连接、右连接、完全外连接)| outer join(left join、right join、full join)

    内连接 | inner join

    交叉连接 | cross join

    (补充:笛卡尔积)

     

    下面举例说明多关系表连接案例:

    Student表                      course表

                          

     (1)A left join B on

    select * from student left join course on student.ID=course.ID

     

    (2)A right join B on

    select * from student right join course on student.ID=course.ID

     

    (3) A full join B on

    select * from student full join course on student.ID=course.ID

    (4) A inner join B on

    select * from student inner join course on student.ID=course.ID

    (5) A cross join B on

    select * from student inner join course on student.ID=course.ID

    (3)附加运算查询

    类型

    含义

    as

    将as前的关系起一个别名,在此语句中,可以用别名来代指这个表

    *

    在select中通过: “表名.*” 来表示查找出这个表中所有的属性

    order by

    让查询结果中的信息按照给定的属性排序(默认升序,上小下大)

    desc

    在order by之后的属性后使用,表示采用降序排序

    asc

    在order by之后的属性后使用,表示采用升序排序(默认)

    between

    在where中使用between表示一个数在两个数值之间取值

    not between

    between的反义词,在两个数之外取值

    union/union all

    将两个SQL语句做并运算,并且自动去重,添加all表示不去重

    intersect/intersect all

    将两个SQL语句做交运算,并且自动去重,添加all表示不去重

    except/except all

    将两个SQL语句做差运算,并且自动去重,添加all表示不去重

    is null

    在where中使用is null表示这个值是空值

    is not null

    在where中使用is not null表示这个值不是空值

    (4)聚集函数运算查询

    类型

    含义

    avg

    平均值

    min

    最小值

    max

    最大值

    sum

    总和

    count

    计数

    distinct

    表示将distinct后的属性去重

    group by

    将在group by上取值相同的信息分在一个组里

    having

    对group by产生的分组进行筛选,可以使用聚集函数

  • 相关阅读:
    南京市玄武区委常委、组织部部长任宁一行率企业家研修班莅临麒麟信安调研交流
    微软开源 MS-DOS「GitHub 热点速览」
    推荐一个屏幕上鼠标高亮显示的小工具
    折腾一晚上的事情,明白了一个道理
    2.360 度视频的流式传输技术
    19182 石子合并(基础版)
    Flink从入门到放弃—Stream API—常用算子(map和flatMap)
    在对抗生成网络学习(十)——attentiveGAN实现影像去雨滴的过程(tensorflow实现)复现过程中,自己训练的结果以什么形式保存在哪里呢,或者我看到帖子中有说可以使用作者训练好的模型
    【6.824】分布式lab1 mapReduce
    在element-plus中想要多选框(Checkbox)的功能,但是想要单选框(Radio)的圆形样式如何实现
  • 原文地址:https://blog.csdn.net/XZB119211/article/details/128073748