MySQL——连接查询

含义: 又称多表查询,当查询的字段来自于多个表时,就会用到连接查询

比如下面两张表:

查询每个每个类型下的社团信息,这里面的数据来源于两个表,就用到了多表查询。

语法:

-- 查询社团名称和社团分类名称
select klasifiko_name,name from club,club_klasifiko;

查询出的数据只是club与club_klasifiko进行无条件匹配。

笛卡尔积现象:表1有m行,表2有n行,结果=m*n行

发生原因:没有有效的连接条件

如何避免:添加有效的连接条件

select klasifiko_name,name from club_klasifiko,club where club_klasifiko.id=club.klasifiko_id;
连接查询分类:

按功能分类:

  1. 内连接
    1. 等值连接
    2. 非等值连接
    3. 自连接
  2. 外连接
    1. 左外连接
    2. 右外连接
    3. 全外连接(MySQL不支持)
  3. 交叉连接
1. 等值连接:

在连接条件中使用等于号(=)运算符比较被连接列的列值

例如:查询出每个社团类型下对应的社团名称

select klasifiko_name,name from club_klasifiko,club where club_klasifiko.id = club.klasifiko_id;
  • 为表起别名:

    • 优点:提高语句的简洁度,区分多个重名的字段
    • 注意:如果为表起了别名,则查询的字段就不能使用原来的表名去限定
  • 当查询语句中设计多张表或者表名比较复杂时,我们可以为其起别名

select c1.klasifiko_name,c2.name from club_klasifiko as c1,club as c2 where c1.id=c2.klasifiko_id;
  • 当从多张表查询数据时,表的顺序可以任意调换
select c1.klasifiko_name,c2.name from club as c2,club_klasifiko as c1 where c1.id=c2.klasifiko_id;
  • 加筛选条件
-- 查询出每个文化体育类型下对应的社团名称
select c1.klasifiko_name,c2.name from club_klasifiko c1,club c2 where c1.id=c2.klasifiko_id and c1.klasifiko_name='文化体育';
2. 非等值连接:

连接条件不为’=’

例如:查询员工的工资和工资级别,如下图所示:


                
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
建立一个博客系统需要以下步骤: 1. 确定需求,设计数据库表结构。 2. 搭建开发环境,安装 PHP 和 MySQL。 3. 编写代码,实现用户管理、博客管理、评论管理等功能。 4. 将代码部署到服务器上,配置好权限和安全设置。 以下是一个简单的博客系统的数据库表设计: 1. 用户表(users) |字段名|类型|说明| |----|----|----| |id|int|用户ID,自增主键| |username|varchar(50)|用户名| |password|varchar(50)|密码| |email|varchar(50)|邮箱| |avatar|varchar(100)|头像| 2. 博客表(blogs) |字段名|类型|说明| |----|----|----| |id|int|博客ID,自增主键| |title|varchar(100)|博客标题| |content|text|博客内容| |create_time|datetime|创建间| |update_time|datetime|更新间| |user_id|int|用户ID,外键| 3. 评论表(comments) |字段名|类型|说明| |----|----|----| |id|int|评论ID,自增主键| |content|text|评论内容| |create_time|datetime|创建间| |user_id|int|用户ID,外键| |blog_id|int|博客ID,外键| 在 PHP 中,可以使用 mysqli 或 PDO 扩展来操作 MySQL 数据库。具体实现可以参考以下步骤: 1. 连接数据库: ```php $conn = new mysqli($servername, $username, $password, $dbname); ``` 2. 执行 SQL 语句,例如插入一条博客记录: ```php $title = "Hello World"; $content = "This is my first blog."; $user_id = 1; $sql = "INSERT INTO blogs (title, content, user_id) VALUES ('$title', '$content', $user_id)"; $conn->query($sql); ``` 3. 查询数据,例如查询所有博客: ```php $sql = "SELECT * FROM blogs"; $result = $conn->query($sql); while ($row = $result->fetch_assoc()) { echo $row["title"] . "<br>"; } ``` 4. 更新数据,例如更新一条博客记录: ```php $id = 1; $title = "Hello World 2"; $content = "This is my second blog."; $sql = "UPDATE blogs SET title='$title', content='$content' WHERE id=$id"; $conn->query($sql); ``` 5. 删除数据,例如删除一条博客记录: ```php $id = 1; $sql = "DELETE FROM blogs WHERE id=$id"; $conn->query($sql); ``` 以上是一个简单的博客系统的实现方法,但在实际开发中还需要考虑安全性、性能等问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值