mysql单表、多表查询语句

#navicat与mysql8.0连接问题解决
1251–Client does not support authentication protocol requested by server 的解决办法:
下面这四步解决,可以忽略第二步也可以

USE mysql; 
ALTER USER ‘root’@’localhost’ IDENTIFIED BY 'password'  PASSWORDEXPIRE NEVER;
ALTER USER ‘root’@’localhost’ IDENTIFIED WITH mysql_native_password BY ‘密码自己设置’; 
FLUSH PRIVILEGES;

1.创建数据库,create database ***,查询数据库 show databases,
2.数据表 ;据表是数据库重要的组成部分,是其他对象的基础,使用数据库现有打开数据库,use ***,然后创建数据表:
create table test(
name varchar(20),
age tinyint unsigned,
salary float(6,2) unsigned
);
3. 查看数据表 show tables;查看数据表结构 show columns from ***;插入数据表内容 insert *** values();数据表记录查询 select * from ***;
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

a、简单查询
1.select * from ***; 第1个星号表示所有列,也可以单独列和多列逗号隔开,后面三个星号是表名
SELECT * from tb5 LIMIT 3;

在这里插入图片描述
2.SELECT e.age from tb5 e; 别名操作
SELECT e.age as ‘年龄’ from tb5 e; 还可以改变显示的列名
在这里插入图片描述
3.SELECT DISTINCT e.age from tb5 e; 表示去掉重复
4.SELECT CONCAT(“姓名”,e.username,“年龄”,e.age) from tb5 e; 多列连接成一列展示
在这里插入图片描述
#条件查询
5.

SELECT * from tb5 WHERE id=3;
SELECT e.* from tb5 e WHERE id>2; 
SELECT e.* from tb5 e WHERE id>2 and id<5;
SELECT e.* from tb5 e WHERE id=2 or id=5;  
SELECT e.* from tb5 e WHERE id in (2,5);  #这in包含意思与上面or执行效果一样
SELECT e.* from tb5 e WHERE e.id is not null; #不为空
SELECT e.* from tb5 e WHERE e.id !=0; #不为空
SELECT e.* from tb5 e WHERE username LIKE "k%";  #模糊查询
SELECT e.* from tb5 e WHERE username LIKE "%l%";  #只要包含l不管在前在后,取反还可以在like前加not
SELECT e.* from tb5 e WHERE username !="tom";   #和下面一样表示查询不是tom的所有
SELECT e.* from tb5 e WHERE username  <> "tom";

SELECT e.* from tb5 e ORDER BY e.age; #排序,一个升序自动不写默认asc,下面加desc降序
SELECT e.* from tb5 e ORDER BY e.age DESC;

在这里插入图片描述
在这里插入图片描述

#多表查询(没有关联条件会产生笛卡尔积,数量变成两个表数量积肯定不对)

添加外键:后面不写我直接在navicat直接右键表设计表外键,参考链接
在这里插入图片描述
在这里插入图片描述
6.

SELECT e.* FROM tb5 e,tb6 f WHERE e.username=f.username;
SELECT f.* FROM tb5 e,tb6 f WHERE f.username=e.username;

SELECT f.sex,e.age  FROM tb5 e,tb6 f WHERE f.username=e.username; #多表多信息查询

SELECT f.id,e.age  FROM tb5 e,tb5 f WHERE f.age=e.id;  #自链接,两个一样的表进行关联查询

SELECT e.*  FROM tb5 e LEFT JOIN tb6 f on(f.username=e.username); #左链接以左边为主,左边数据全部展示,右边如果关联上了就展示不然展示null,on后面是连接条件

在这里插入图片描述
在这里插入图片描述

7.结果合并展示查询union

SELECT * FROM tb5 
UNION ALL
SELECT * FROM tb5;   #全部展示
-------------------------------
SELECT * FROM tb5 
UNION 
SELECT * FROM tb5;   #去掉重复展示一半

8.通用函数
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_42357472/article/details/84192615