上一篇数据库的博客里只是把经常用到的SQL语句列了出来,并没有深入学习(当然,大多数也就是看一遍就会了)。自我感觉关于键的问题如果不熟悉的话,好像还是有点复杂,这里再提一下。
—————————————————————————————————————————————————————————
主键是数据表的唯一索引,比如学生表中有学号、姓名之类的,姓名有可能有重名的,但是学号是唯一的,要查找学生的什么信息就有通过唯一的学号去查找。这就是主键。SQL语句中主键(自增长类型)通常设置方法为:
id int(10) not null primary key auto_increment ;
学生表(学号,姓名,性别,班级)
其中每个学生的学号是唯一的,学号就是一个主键
课程表(课程编号,课程名,学分)
其中课程编号是唯一的,课程编号就是一个主键
成绩表(学号,课程号,成绩)
成绩表中单个属性无法唯一标识一条记录,学号和课程号的组合才能唯一标识一条记录,所以学号和课程号的属性组是一个主键
成绩表中的学号不是成绩表的主键,但是它和学生表中的学号相对应,并且学生表中的学号是其主键,则称成绩表中的学号是学生表的外键,同理,成绩表中的课程号是课程表的外键。
定义主键和外键是为了维护关系数据库的完整性:
1.主键是确定唯一一条记录的唯一标识,不会重复,比如一个人的身份证号确定年龄,性别,姓名等。
2.外键用于与另一张表的关联。能够确定另一张表记录的字段,用于保证数据的一致性和完整性。
* 创建时添加:foreign key 当前table(主键,如id) references 关联table(对应标识,如id)
* 创建后修改:alter table emp add foreign key 当前表名(dno) references 关联的表(did);
A,B为表,a,b分别为A,B的字段
内连接:
普通内连接示例:select * from A inner join B on A.a = B.b;
隐式内连接示例(用得最多):select * from A,B where A.a = B.b;
外连接:
左外链接(看左表,把左表所有的数据全部查询出来):
select * from A left outer join B on A.a = B.b;
右外链接(看右表,把右表所有的数据全部查询出来):
select * from A right outer join B on A.a = B.b;
* 在sql语言中,select…from…语为一个查询块,将一个查询块嵌套在另一个查询块中作为条件称为嵌套查询,也称为子查询.
select * from 表名 where 字段 > (select * from 表名 where 条件);
* 外层的查询块称为父查询,内层的查询块称为子查询
子查询常用运算符:
any 任意
all 全部
>any 大于结果的最小值
>all 大于结果的最大值
>、>=、<、<=、=、<> 或 != (不等于)、in(范围)
关于多表联合查询,子查询的练习可以参考(https://blog.csdn.net/LIAO_7053/article/details/82662617)