2021-12-8

#左关联,将左表作为主表,然后关联右面从表,若有关联数据则关联显示,若无关联数据则使用null值
SELECT s.*,o.* FROM students s LEFT JOIN object o ON s.id=o.user_id
#右关联,将右表作为主表,然后关联左面从表,若有关联数据则关联显示,若无关联数据则使用null值
SELECT s.*,o.* FROM students s RIGHT JOIN object o ON s.id=o.user_id
#内关联,取两个表中能关联的数据,没有关联关系的数据全部舍弃
SELECT s.*,o.* FROM students s INNER JOIN  object o ON s.id=o.user_id

#查询所有拥有物品的学生
#students表作为主表,一条一条记录进行对比
#IN关键字,对比每条记录id是否在子查询结果中,如果在查询结果中输入记录,如果不在查询结果中则舍弃记录
SELECT * FROM students WHERE id IN (SELECT user_id FROM object)
#EXISTS关键字,判断每条记录与object表是否存在关联关系,如果存在输入记录,如果不存在则舍弃记录
SELECT s.* FROM students s WHERE EXISTS (SELECT o.* FROM object o WHERE o.user_id=s.id)

#查询年龄最大的学生
#ALL相当于字段与子查询结果用多个AND连接
#age>=21 AND age>=16 AND age>=26 AND age>=31 
SELECT * FROM students WHERE age>= ALL (SELECT age FROM students)

#查询年龄不是最小的学生
#ANY、SOME相当于字段与子查询结果用多个OR连接
#age>21 AND age>16 AND age>26 AND age>31 
SELECT * FROM students WHERE age> ANY (SELECT age FROM students)

#将两个表中所有id都查询
#UNION 去重查询(效率较低)
SELECT id FROM students UNION SELECT id FROM object;
#UNION ALL 全部查询(效率较高)
SELECT id FROM students UNION ALL SELECT id FROM object;



#UNIQUE唯一性(可为空,但不能重复)
#NOT NULL非空性(不为空,但可以重复)
#PRIMARY KEY主键(非空且不能重复,等于UNIQUE+NOT NULL)
#CHECK检查性约束(自定义)
CREATE TABLE money(
id INT(5) PRIMARY KEY COMMENT '主键-id',
name VARCHAR(10) UNIQUE COMMENT '唯一性-姓名',
money DOUBLE(10,2) NOT NULL COMMENT '非空-金额',
age int(5) COMMENT 'CHECK-年龄',
Check(age>10)
)

INSERT INTO money(id) VALUES(NULL);#id非空
INSERT INTO money(id) VALUES(1);#money非空
INSERT INTO money(id,money) VALUES(1,2000.5);
INSERT INTO money(id,money) VALUES(1,2000.5);#id不可重复
INSERT INTO money(id,money) VALUES(2,2000.5);
INSERT INTO money(id,name,money) VALUES(3,'A',2000.5);
INSERT INTO money(id,name,money) VALUES(4,'A',2000.5);#name不可重复
INSERT INTO money(id,name,money,age) VALUES(5,'C',1000.5,15);





SELECT * FROM money;
#表增加字段
ALTER TABLE money ADD sex int(1);
#表字段更名
ALTER TABLE money CHANGE sex sexs int(1);
#表字段类型转换
ALTER TABLE money MODIFY sexs CHAR(1);
#表字段删除
ALTER TABLE money DROP sexs;
#表更名
ALTER TABLE money RENAME TO moneys;





#索引,加快查询速度(相当于字典添加目录)
#(给经常作为WHERE条件子句的字段加索引)
#创建索引
CREATE INDEX money_index ON moneys(money);
#删除索引
DROP INDEX money_index ON moneys;




#创建视频(虚拟表),一般保存多个表查询结果,可当做正常表查询
CREATE OR REPLACE VIEW so 
AS
SELECT s.id sid,s.name sname,o.id oid,o.name oname
FROM students s LEFT JOIN object o ON s.id = o.user_id



#LIMIT 开始记录序号,查询个数,常用在分页处理
SELECT * FROM so LIMIT 2,2

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值