- 1,外键约束
- 以创建一个dog表为例,其中有个字段为owner, 同已经创建的person表进行约束,约束语句如下:(最后一句为约束语句)
- 也可以通过navicat进行生成该语句进行使用
CREATE TABLE "dog" (
"name" TEXT,
"age" INTEGER,
"id" INTEGER NOT NULL,
"owner" integer,
PRIMARY KEY("id"),
CONSTRAINT "fk_dog_ref_person" FOREIGN KEY ("owner") REFERENCES "person" ("id")
)
- 2,表的连接:
- 需要联合多张表才能查到自己想要的数据,下面看一下为什么要连接表:
- 如下有具体菜和菜系两张表:
- 如果想要从具体菜中找出所有属于“鲁菜”的菜,不使用连接表的时候需要在表一种找到鲁菜具体的 food_type_id等于多少,然后才可以进行真正的查到鲁菜,写法如下:
select * from t_food where food_type_id = 3;
- 但是在连接表之后可以不用查看表一,直接这样写
-- 1,嵌套查询,严格意义上来说,嵌套查询不属于表连接
select * from t_food where food_type_id = (SELECT id from t_food_type WHERE name = '鲁菜');
-- 2,表连接(起别名然后进行调用对应的属性)
SELECT *FROM t_food food, t_food_type type where
type.name = '鲁菜'
AND
food.food_type_id = type.id;
-- 3,表连接,展示特定的属性,其实还是起别名
SELECT food.name foodName, type.name typeName FROM t_food food, t_food_type type where
type.name = '鲁菜'
AND
food.food_type_id = type.id;
注意嵌套查询也是一种不错的选择,但是如果查询的内容不仅仅是一张表里的内容,那么肯定需要用连接