mysql用来连接查询条件的关键字_mysql/mariadb学习记录——查询

连接查询:同时设计两个及以上的表的查询

连接条件或连接谓词:用来连接两个表的条件一般格式:

[] []

[] between [] and []

等值连接:

连接运算符为=

查询每个学生以及选修课程的情况

mysql> select student.*, sc.* from student,sc where student.sno=sc.sno;

+-------+--------+------+------+-------+-------+-----+-------+

| sno | sname | ssex | sage | sdept | sno | cno | grade |

+-------+--------+------+------+-------+-------+-----+-------+

| 95001 | 李勇 | 男 | 20 | CS | 95001 | 1 | 92 |

| 95001 | 李勇 | 男 | 20 | CS | 95001 | 2 | 85 |

| 95001 | 李勇 | 男 | 20 | CS | 95001 | 3 | 88 |

| 95002 | 刘晨 | 女 | 19 | IS | 95002 | 2 | 90 |

| 95002 | 刘晨 | 女 | 19 | IS | 95002 | 3 | 80 |

| 95004 | 张立 | 男 | 20 | IS | 95004 | 2 | 65 |

| 95004 | 张立 | 男 | 20 | IS | 95004 | 3 | NULL |

| 95004 | 张立 | 男 | 20 | IS | 95004 | 4 | NULL |

| 95005 | 张三 | 男 | 23 | CS | 95005 | 2 | 84 |

| 95005 | 张三 | 男 | 23 | CS | 95005 | 4 | NULL |

| 96001 | 刘军 | 男 | 30 | IS | 96001 | 1 | 87 |

| 96001 | 刘军 | 男 | 30 | IS | 96001 | 2 | 80 |

| 96001 | 刘军 | 男 | 30 | IS | 96001 | 3 | 90 |

| 96001 | 刘军 | 男 | 30 | IS | 96001 | 4 | 95 |

| 96001 | 刘军 | 男 | 30 | IS | 96001 | 5 | NULL |

| 96001 | 刘军 | 男 | 30 | IS | 96001 | 6 | NULL |

| 96001 | 刘军 | 男 | 30 | IS | 96001 | 7 | 86 |

| 97001 | 李四 | 男 | 26 | EN | 97001 | 4 | NULL |

| 97001 | 李四 | 男 | 26 | EN | 97001 | 5 | NULL |

+-------+--------+------+------+-------+-------+-----+-------+

自身连接:一个表与自己进行连接

需要给表起别名以示区别,且必须使用前缀

//查询每门课的间接先修课

mysql> select first.cno,second.cpno from course first,course second where first.cpno=second.cno;+-----+------+

| cno | cpno |

+-----+------+

| 3 | 5 |

| 1 | 7 |

| 4 | NULL |

| 7 | NULL |

| 5 | 6 |

+-----+------+

5 rows in set (0.05sec)//查询没门课先修课的名称

mysql> select FIRST.cno,FIRST.cname,FIRST.cpno,SECOND.cname from course FIRST,course SECOND where FIRST.cpno=SECOND.cno;+-----+--------------+------+--------------+

| cno | cname | cpno | cname |

+-----+--------------+------+--------------+

| 1 | 数据库 | 5 | 数据结构 |

| 3 | 信息系统 | 1 | 数据库 |

| 4 | 操作系统 | 6 | 数据处理 |

| 5 | 数据结构 | 7 | C语言 |

| 7 | C语言 | 6 | 数据处理 |

+-----+--------------+------+--------------+

多表连接:两个以上的表进行连接

mysql> select student.sno,sname,cname,grade from student,sc,course where student.sno=sc.sno and sc.cno=course.cno;+-------+--------+--------------+-------+

| sno | sname | cname | grade |

+-------+--------+--------------+-------+

| 95001 | 李勇 | 数据库 | 92 |

| 96001 | 刘军 | 数据库 | 87 |

| 95001 | 李勇 | 高等数学 | 85 |

| 95002 | 刘晨 | 高等数学 | 90 |

| 95004 | 张立 | 高等数学 | 65 |

| 95005 | 张三 | 高等数学 | 84 |

| 96001 | 刘军 | 高等数学 | 80 |

| 95001 | 李勇 | 信息系统 | 88 |

| 95002 | 刘晨 | 信息系统 | 80 |

| 95004 | 张立 | 信息系统 | NULL |

| 96001 | 刘军 | 信息系统 | 90 |

| 95004 | 张立 | 操作系统 | NULL |

| 95005 | 张三 | 操作系统 | NULL |

| 96001 | 刘军 | 操作系统 | 95 |

| 97001 | 李四 | 操作系统 | NULL |

| 96001 | 刘军 | 数据结构 | NULL |

| 97001 | 李四 | 数据结构 | NULL |

| 96001 | 刘军 | 数据处理 | NULL |

| 96001 | 刘军 | C语言 | 86 |

+-------+--------+--------------+-------+

排序:

select [ ] from order by [desc/asc];

mysql> select sno,sname from student order by sno; //默认为升序

+-------+--------+

| sno | sname |

+-------+--------+

| 12001 | bgg |

| 94001 | 山寨 |

| 95001 | 李勇 |

| 95002 | 刘晨 |

| 95003 | 王敏 |

| 95004 | 张立 |

| 95005 | 张三 |

| 96001 | 刘军 |

| 96004 | 芙蓉 |

| 97001 | 李四 |

+-------+--------+mysql> select sno,sname from student order by sno asc; //asc 修饰为升序

+-------+--------+

| sno | sname |

+-------+--------+

| 12001 | bgg |

| 94001 | 山寨 |

| 95001 | 李勇 |

| 95002 | 刘晨 |

| 95003 | 王敏 |

| 95004 | 张立 |

| 95005 | 张三 |

| 96001 | 刘军 |

| 96004 | 芙蓉 |

| 97001 | 李四 |

+-------+--------+

10 rows in set (0.05sec)

mysql> select sno,sname from student order by sno desc; //desc 修饰为降序

+-------+--------+

| sno | sname |

+-------+--------+

| 97001 | 李四 |

| 96004 | 芙蓉 |

| 96001 | 刘军 |

| 95005 | 张三 |

| 95004 | 张立 |

| 95003 | 王敏 |

| 95002 | 刘晨 |

| 95001 | 李勇 |

| 94001 | 山寨 |

| 12001 | bgg |

+-------+--------+

mysql> select sno,sname from student order by sno desc,sname asc; //先按sno降序 再按sname升序

+-------+--------+

| sno   | sname  |

+-------+--------+

| 97001 | 李四    |

| 96004 | 芙蓉    |

| 96001 | 刘军    |

| 95005 | 张三    |

| 95004 | 张立    |

| 95003 | 王敏    |

| 95002 | 刘晨    |

| 95001 | 李勇    |

| 94001 | 山寨    |

| 12001 | bgg    |

+-------+--------+

10 rows in set (0.05 sec)

选择的between操作(在mysql/mariadb中是闭区间):

select * from   where between 'a' and 'b';

mysql> select * from student where sno between '94001' and '96001';+-------+--------+------+------+-------+

| sno | sname | ssex | sage | sdept |

+-------+--------+------+------+-------+

| 94001 | 山寨 | 男 | 29 | CS |

| 95001 | 李勇 | 男 | 20 | CS |

| 95002 | 刘晨 | 女 | 19 | IS |

| 95003 | 王敏 | 女 | 19 | MA |

| 95004 | 张立 | 男 | 20 | IS |

| 95005 | 张三 | 男 | 23 | CS |

| 96001 | 刘军 | 男 | 30 | IS |

+-------+--------+------+------+-------+

//not between and

mysql> select * from student where sno not between '94001' and '96001';

+-------+--------+------+------+-------+

| sno   | sname  | ssex | sage | sdept |

+-------+--------+------+------+-------+

| 12001 | bgg    | M    | 26   | CS    |

| 96004 | 芙蓉    | 女   | 32   | CH    |

| 97001 | 李四    | 男   | 26   | EN    |

+-------+--------+------+------+-------+

mysql模糊查询(LIKE)关键字:

% 替代一个或多个字符;

_ 仅替代一个字符;

[charlist] 字符列中的任何单一字符;

[!charlist] 或 [^charlist] 不在字符列中的任何单一字符;

//查询sno以95开头的学生信息

mysql> select * from student where sno like '95%';+-------+--------+------+------+-------+

| sno | sname | ssex | sage | sdept |

+-------+--------+------+------+-------+

| 95001 | 李勇 | 男 | 20 | CS |

| 95002 | 刘晨 | 女 | 19 | IS |

| 95003 | 王敏 | 女 | 19 | MA |

| 95004 | 张立 | 男 | 20 | IS |

| 95005 | 张三 | 男 | 23 | CS |

+-------+--------+------+------+-------+

5 rows in set (0.05sec)//查询sno以01结尾的学生信息

mysql> select * from student where sno like '%01';+-------+--------+------+------+-------+

| sno | sname | ssex | sage | sdept |

+-------+--------+------+------+-------+

| 12001 | bgg | M | 26 | CS |

| 94001 | 山寨 | 男 | 29 | CS |

| 95001 | 李勇 | 男 | 20 | CS |

| 96001 | 刘军 | 男 | 30 | IS |

| 97001 | 李四 | 男 | 26 | EN |

+-------+--------+------+------+-------+

5 rows in set (0.05 sec)

//

查询sno以01结尾的学生信息

//not like

mysql> select * from student where sno not like '%01';

+-------+--------+------+------+-------+

| sno   | sname  | ssex | sage | sdept |

+-------+--------+------+------+-------+

| 95002 | 刘晨    | 女   | 19   | IS    |

| 95003 | 王敏    | 女   | 19   | MA    |

| 95004 | 张立    | 男   | 20   | IS    |

| 95005 | 张三    | 男   | 23   | CS    |

| 96004 | 芙蓉    | 女   | 32   | CH    |

+-------+--------+------+------+-------+

IN操作符:

IN操作符允许在WHERE子句中规定多个值;

//查询 sdept为MA,CS的信息

mysql> select * from student where sdept in ('MA','CS');+-------+--------+------+------+-------+

| sno | sname | ssex | sage | sdept |

+-------+--------+------+------+-------+

| 12001 | bgg | M | 26 | CS |

| 94001 | 山寨 | 男 | 29 | CS |

| 95001 | 李勇 | 男 | 20 | CS |

| 95003 | 王敏 | 女 | 19 | MA |

| 95005 | 张三 | 男 | 23 | CS |

+-------+--------+------+------+-------+

2018-05-01  20:24:33

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值