#左关联,将左表作为主表,然后关联右面从表,若有关联数据则关联显示,若无关联数据则使用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
2021-12-8
最新推荐文章于 2024-08-19 22:23:29 发布