
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 · 740 阅读 · 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 · 612 阅读 · 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 · 1134 阅读 · 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 · 673 阅读 · 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 · 5789 阅读 · 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 · 513 阅读 · 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 · 1016 阅读 · 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 · 487 阅读 · 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 · 494 阅读 · 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 · 766 阅读 · 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 · 479 阅读 · 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 · 870 阅读 · 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 · 21441 阅读 · 0 评论