![](https://img-blog.csdnimg.cn/20210109140248505.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
sql基础
sql相关基础
Scc_hy
不断进取的攻城狮
展开
-
Mysql合并行
创建表-- 合并行 group_concat(list, separeator ',') drop table if exists table1; create table table1( company_name varchar(20) not null, person_name varchar(20) not null, person_position varchar(20) not null原创 2018-05-02 18:33:07 · 704 阅读 · 0 评论 -
SQL进阶——SQL语句优化
运行环境 win10 / oracle(DB11g) 一、使用高效查询 1、用exists 替代 IN 使用exists 时更快的原因有两个: 如果连接列(id)上建立了索引,那么查询class_b_11时不用查实际的表,只需查索引就可以了 如果使用exists,那么只要查到一行数据满足条件就会终止查询,不用像使用IN时一样扫描全表 例子: create table C...原创 2018-07-01 10:17:07 · 555 阅读 · 0 评论 -
SQL进阶--EXISTS谓词的用法
SQL谓词指的是返回真值的函数 EXISTS与其他谓词不同,接受的参数是集合 因此EXISTS可以看出一种高阶的函数 SQL中没有与全称量词相当的谓词,可以使用not exists代替 1、存在量化 -- 建表 create table meetings( meeting varchar(10), person varchar(10) ); in...原创 2018-06-10 20:38:18 · 1068 阅读 · 0 评论 -
SQL进阶——用SQL处理数列
运行环境 win10 / oracle(DB11g) 1、将数值看作字符串的组合 用0-9数值做出0-99的数 -- 创表 create table digit_9( digit integer ); insert into digit_9 values(1); insert into digit_9 values(2); insert into digit_9 values...原创 2018-06-18 11:20:03 · 627 阅读 · 0 评论 -
SQL进阶——Having子句
运行环境 win10 / oracle(DB11g) 1、可以出勤的队伍 思路: 一个集合中,如果元素最大值和最小值相等,那么这个集合中肯定只用一种值 -- 创表 create table teams_10 ( member varchar(10), team_id integer, status1 varchar(10) ); ins...原创 2018-06-24 20:19:27 · 5740 阅读 · 0 评论 -
SQL进阶--用SQL进行集合运算
1、比较表和表 drop table if exists tbl_a; create table tbl_a( key1 varchar(10), col_1 int4, col_2 int4, col_3 int4 ); insert into tbl_a values('A', 2, 3, 4); insert into tbl_a values('B', 0, 7, 9); inser...原创 2018-06-03 12:19:23 · 430 阅读 · 0 评论 -
SQL进阶--用关联子查询比较行与行
1、增长、减少、维持现状 -- 建表 drop table if exists sales; create table sales( year1 year, sale int8 ); insert into sales values(1990, 50); insert into sales values(1991, 51); insert into sales values(1992, 52...原创 2018-05-27 09:28:11 · 939 阅读 · 0 评论 -
SQL进阶--外连接的用法
用外连接进行行列转换(1):制作交叉表 drop table if exists course; create table course( name1 varchar(8), course varchar(10) ); insert into course values('赤井','SQL入门'); insert into course values('赤井','UNIX基础'); insert...原创 2018-05-20 13:27:52 · 445 阅读 · 0 评论 -
SQL进阶--Having子句的力量
查找缺失值 drop table if exists seqtbl; create table seqtbl( seq int8, name1 varchar(10) ); insert into seqtbl values(1, '迪克'); insert into seqtbl values(2, '安'); insert into seqtbl values(3, '莱露'); inser...原创 2018-05-20 12:24:27 · 428 阅读 · 4 评论 -
SQL进阶--三值逻辑和NULL
not in 和 not exists -- not in 和 not exists drop table if exists class_a; create table class_a( name1 varchar(20), age int8, city varchar(30) ); insert into class_a values('布朗', 22, '东京'); insert...原创 2018-05-13 17:53:50 · 703 阅读 · 0 评论 -
SQL进阶--自连接
卡迪尔直积:-- 创建product表 drop table if exists products; create table products( name1 varchar(20), price int8); insert into products(name1, price) values('苹果', 50); insert into products(name1, price) values(原创 2018-05-06 21:45:52 · 429 阅读 · 0 评论 -
SQL进阶--case表达式
exists 高效-- 创建课程一览表 drop table if exists coursemaster; create table coursemaster( course_id int auto_increment, course_name varchar(20) not null, Primary key (course_id) ); -- 插入数据 insert原创 2018-05-04 22:37:19 · 423 阅读 · 0 评论 -
SQL进阶——GROUP BY 和 PARTITION BY
运行环境 win10 / oracle(DB11g) 一、rank() 、 dense_rank() 、row_number() -- 创表 create table teams_5 ( member varchar(6), team varchar(4), age SMALLINT ) ; insert into teams_5 values (...原创 2018-07-07 11:37:31 · 21341 阅读 · 0 评论