【SQL】(高级篇):函数、多表操作、操作关联表、连接查询以及子查询

函数在SQL数据库中使用十分广泛,下面分别介绍了一些比较常用的函数用法,具体请看下表。

函数名称 作用
ABS(x) 返会的绝对值
SQRT(x) 返会x的非负2次方根
MOD(x,y) 返会x被y除后的余数
CEILING(x) 返会不小于x的最小整数
FLOOR(x) 返会不大于x的最大整数
ROUND(x,y) 对x进行四舍五入,小数点后保留y位
TRUNCATE(x,y) 舍去x中的小数点y位后面的数
SIGN(x) 返会x的符号(正负1、0)

函数名称 作用
LENGTH(str) 返会字符串的长度
CONCAT(S1,...,S n 返会一个或者多个字符串连接产生的新字符串
trim(str) 删除字符串两则的空格
replace(str,S1,S 2 使用字符串S2替代字符串str中的所有字符串S1
substring(str,n,len) 返会字符串str的子串,起始位置为n,长度为len
reverse(str) 返会字符串反转后的结果
lacate(S1,str) 返会字符串S1在字符串str中的起始位置

比较懒...就不做表格了,直接上图


函数功能(续)

举几个实际中使用函数的语句

  • (1)
SELECT CONCAT( id,'_', name,'_', grade,'_', gender) 
FROM student;
  • (2)
SELECT if(total_price % 2 = 1,total_price, 0)
 FROM tb_order;
  • (3)
SELECT CONCAT( id,'_', name,'_', grade,'_', gender) 
FROM student;

关于表和字段的别名
  • 为表取别名
SELECT * FROM 表 名 [AS] 别名;
  • 为字段取别名
SELECT 字段 名 [AS] 别名[, 字段 名 [AS] 别名,…] 
FROM 表 名;

多表操作(SQL中的重点操作)

(1) 外键
【概述】:外 键 是指 引用 另一个 表中 的 一列 或 多列, 被 引 用的 列 应该 具 有主 键 约束 或 唯一 性 约束。

【注意】:引入外键后,外键列的值只能是参照列的值,并且参照列中的值不能被删除。

  • 为表添加外键约束
alter table 表 名 add constraint FK_ ID foreign 
key( 外 键 字段 名) REFERENCES 外表 表 名( 主 键 字段 名);

【补充】show create table 表名:可执行此操作来查看约束效果。

【例】

 create table 表名(
    字段描述,
   constraint fk_name foreign
key (外键字段名) references 外键表表名(主键字段)
)
constraint fk_name foreign key (cat_id)
 references tb_category(id)

【注意点】:

  • 1、建立外键的表必须是InnoDB型

  • 2、定义外键名时不能加引号

添加外键约束参数

 alter table 表 名 add constraint FK_ ID foreign key(外键字段名) 
REFERENCES 外表表名( 主键字段名); 
[ON DELETE {CASCADE | SET NULL | NO ACTION || RESTRICT}]
[ON UPDATE {CASCADE | SET NULL | NO ACTION | RESTRICT}]

  • 关于几个外键约束参数的功能汇总表
参数名称(小写) 作用描述
cascade 删除包含与已删除键值有参照关系的所有记录
set null 修改包含与已删除键值有参照关系的所有记录,并使用NULL值替换(不用于已标记的Not NULL字段)
no action 不进行任何操作
restrict 拒绝主表删除或者修改外检关联列。(在不定义ON DALETE 和ON UPDATE 的子句时,这是默认设置,也是比较安全的设置)
  • 删除外键约束
alter table 表名 drop foreign key 外键名;

关于 - 操作关联表

主要分为三种情况:

  • 1、多对一(员工与部门)外键;

  • 2、多对多(课程与学生)关系表;

  • 3、一对一(证件号码与个体)一般情况;


连接查询

主要分为交叉连接、内连接以及外连接三种情况。

  • 交叉连接
    【笛卡儿积】:两个表行数的乘积。
    交叉连接返会的就是笛卡尔积。
 SELECT * FROM department(部门) CROSS JOIN employee(员工);
  • 内连接
    【解释】:在内连接查询 中, 只有满足 条件的记录才能出现在查询结果中。
SELECT 查询 字段 FROM 表 1 
[INNER] JOIN 表 2 ON 表 1\. 关系字段 = 表 2\. 关系字段
  • 外连接
    【解释】: 返回查询结果中不仅包含符合条件的数据,而且还包括左表( 左连接或左外连接)、右表(右连接或右外连接)或两个表(全外连接)中的所有数据。
SELECT 所 查字 段 FROM 表 1 LEFT| RIGHT [OUTER] JOIN 表 2 
ON 表 1\. 关系 字段= 表 2\. 关系 字段 WHERE 条件

关于左连接与右连接的区别

  • LEFT JOIN(左连接):返会包括左表中的所有记录和右表中符合连接的条件的记录;
  • RIGHT JOIN(右连接):返会包括右表中的所有记录和左表中符合连接的条件的记录;(没有数据的部分,使用NULL来补充

子查询

【解释】:指 一个查询语句嵌套在另 一个查询语句内部的查询。

  • 带 IN 关键字的子查询
SELECT * FROM department WHERE did 
 IN( SELECT did FROM employee WHERE age= 20);
  • 带 ANY 关键字的子查询
SELECT * FROM department 
WHERE did > any( select did from employee);
  • 带 ALL 关键字的子查询
SELECT * FROM department 
WHERE did > all( select did from employee);
  • 带 比较运算符 的子查询
SELECT * FROM department 
WHERE did=( select did from employee where name=' GGG');
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,128评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,316评论 3 388
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,737评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,283评论 1 287
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,384评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,458评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,467评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,251评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,688评论 1 306
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,980评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,155评论 1 342
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,818评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,492评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,142评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,382评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,020评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,044评论 2 352