SQL进阶

本文详细介绍了MySQL中的约束操作,包括如何添加和删除主键及外键约束。接着,讲解了内连接和外连接查询,特别是左外连接的使用。此外,还探讨了不同类型的子查询,包括单行单列、多行单列和多行多列的结果处理。这些概念对于理解和优化数据库查询至关重要。
摘要由CSDN通过智能技术生成

                                MySQL的约束

 


-- 建表后单独添加主键约束
ALTER TABLE student MODIFY id INT PRIMARY KEY;
-- 删除主键
ALTER TABLE student DROP PRIMARY KEY;

外键约束
    标准语法:
CONSTRAINT 外键名 FOREIGN KEY (本表外键列名) REFERENCES 主表名(主表主键列名)

    删除外键约束
    标准语法:
        ALTER TABLE 表名 DROP FOREIGN KEY 外键名;

-- 删除外键约束
ALTER TABLE orderlist DROP FOREIGN KEY ou_fk1;

内连接查询
    隐式内连接
    标准语法:
        SELECT 列名 FROM 表名1,表名2 WHERE 关联条件;

-- 查询用户姓名,年龄。和订单编号
SELECT
    u.name,        -- 用户姓名
    u.age,        -- 用户年龄
    o.number    -- 订单编号
FROM
    USER u,        -- 用户表
    orderlist o     -- 订单表
WHERE
    o.uid=u.id;

外连接查询

左外连接
    标准语法:
SELECT 列名 FROM 表名1 LEFT [OUTER] JOIN 表名2 ON 条件;

 

-- 查询所有用户信息,以及用户对应的订单信息
SELECT
    u.*,
    o.number
FROM
    USER u
LEFT OUTER JOIN
    orderlist o
ON
    o.uid=u.id;

----------------------------------------子查询
    结果是单行单列的
    标准语法:
        SELECT 列名 FROM 表名 WHERE 列名=(SELECT 列名 FROM 表名 [WHERE 条件]);
-- 查询年龄最高的用户姓名

SELECT MAX(age) FROM USER;
SELECT NAME,age FROM USER WHERE age=(SELECT MAX(age) FROM USER);

结果是多行单列的
标准语法:
        SELECT 列名 FROM 表名 WHERE 列名 [NOT] IN (SELECT 列名 FROM 表名 [WHERE 条件]); 

-- 查询张三和李四的订单信息
SELECT * FROM orderlist WHERE uid IN (1,2);
SELECT id FROM USER WHERE NAME IN ('张三','李四');
SELECT * FROM orderlist WHERE uid IN (SELECT id FROM USER WHERE NAME IN ('张三','李四'));

    结果是多行多列的
    标准语法:
        SELECT 列名 FROM 表名 [别名],(SELECT 列名 FROM 表名 [WHERE 条件]) [别名] [WHERE 条件];

 

-- 查询订单表中id大于4的订单信息和所属用户信息
SELECT * FROM orderlist WHERE id > 4;
SELECT
    u.name,
    o.number
FROM
    USER u,
    (SELECT * FROM orderlist WHERE id > 4) o
WHERE
    o.uid=u.id;

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值