sql基础语句(联表查询)
SQL联表查询
1、创建数据库、表
-- 创建一个测试的数据库
create database test charset = utf8;
-- 选择切换到这个数据库
use test;
-- 创建一个学生表
create table student(
stuid integer auto_increment primary key, -- 学生编号 数据类型 自增 主键
stuname varchar(50) not null, -- 学生姓名 数据类型 非空
stusex varchar(10) default '男', -- 学生性别 数据类型 默认男
stuage integer default 18, -- 学生年龄 数据类型 默认18岁
tid integer references teather(tid) -- 教师编号 数据类型 外键(通过tid来进行连接)
);
-- 创建一个教师表
create table teather(
tid integer auto_increment primary key, -- 教师编号 数据类型 自增 主键
tname varchar(50) not null, -- 教师姓名 数据类型 非空
tage integer default 22 -- 教师年龄 数据类型 默认22岁
);
插入数据
-- 插入几条数据
-- 插入学生表
insert into student(stuname,tid) values("张一",1);
insert into student(stuname,tid) values("张二",2);
insert into student(stuname,tid) values("张三",3);
insert into student(stuname,tid) values("张四",1);
insert into student(stuname,tid) values("张五",2);
insert into student(stuname,tid) values("张六",3);
insert into student(stuname,tid) values("张七",1);
insert into student(stuname,tid) values("张八",2);
insert into student(stuname,tid) values("张九",3);
-- 插入教师表
insert into teather(tname) values("王大");
insert into teather(tname) values("王二");
insert into teather(tname) values("王三");
查询
-- 查询
-- select 所有 from 所要查询的表 where 条件(通过外键进行关联)
select * from student,teather where student.tid = teather.tid;
-- select 表名.列名(因为表较多的时候字段有冲突,所以要表名点要查询的列名)...from 所要查询的表 where 条件(通过外键进行关联)
select student.stuname 学生姓名,student.stusex 学生性别,teather.tname 教师姓名 from student,teather where student.tid = teather.tid;