sqlserver建库建表
创建数据库
建库成功
建表操作
新建一个学生表
建一个老师表
学生表与老师表是有关联的
一个老师带多个学生
多个学生由一个老师带
两张表的关系:
一对多的关系
一(老师),多(学生)
外键关联的原则
多表作为从表,一表作为主表
我们在此明确了主从关系
新建主表
新建主表的原因,优先新建请表的原因是
主表的数据不依赖别的表
明确主表中所需要有的列
id,name,skill
》 建老师表
选中数据库
右击
新建数据表
》id主键,自动增长
》其它列
新建学生表
学生表是从表
它会与老师表有一个外键的关联
会有一个列,它记录的数据是老师表的主键列
学生表需要的列有
id , name , tid , place
》学生表的主键列
》其它列
》创建外键关联
让学生表(从表)与老师表(主表)
产生关联
具体操作:
在从表的设计模式(数据表编辑模式)
右击,关系,添加关系,表和列规范
定义好了外键关系后,记得要保存一下
添加数据
先添加主表数据,再添加从表数据
因为,先有主才有从
先有了老师,才会有学生
》在老师表添加数据
》添加从表数据(学生表)
连表查询
》查询所有的老师信息
》查询所有学生信息
》查询学生信息 对应 老师的信息
查学生的老师是什么技能
select * from student inner join teacher on student.tid = teacher.id;
只需要获取期望的内容
在星花符号这里做操作
把*替换为需显示的列即可
select student.id, student.name, student.place, teacher.name, teacher.skill from student inner join teacher on student.tid = teacher.id;
存在的问题
这张表中有两个同名的列,后面用时不方便
期望修改,使列名不同
解决办法:起别名
select student.id, student.name as sname, student.place, teacher.name as tname, teacher.skill from student inner join teacher on student.tid = teacher.id;
再次演练
如果老师也要显示id
select student.id, student.name as sname, student.place, teacher.name as tname, teacher.skill, teacher.id from student inner join teacher on student.tid = teacher.id;
又出现了同名问题
列名又相同了
》使用同样的方案解决:起别名
select student.id, student.name as sname, student.place, teacher.name as tname, teacher.skill, teacher.id as teacher_id from student inner join teacher on student.tid = teacher.id;
小结
完成了
建库
建表
外键关联
添加数据(先主表,再从表)
连表查询(列重名,我们起别名)