通过SQL命令创建表、删除表
创建表命令
--emp表(员工表)
create table emp (
empno int primary key,
ename nvarchar(200),
job nvarchar(200),
mgr int ,
hiredate datetime,
sal int ,
comm int,
deptno int constraint fk_deptno foreign key references dept(deptno)
)
--以上表解读
--create table 表名(
-- 列名1 数据类型 主键,
-- 列名2 数据类型,
-- ...
-- 列名7 数据类型,
-- 列名8 数据类型 外键(dept表中deptno的外键)
--)
--dept表(部门表)
create table dept(
deptno int primary key,
dname nvarchar(200),
loc nvarchar(200),
)
--以上表解读
--create table 表名(
-- 列名1 数据类型 主键,
-- 列名2 数据类型,
-- 列名3 数据类型,
--)
--salgrade表(工资表)
create table salgrade(
grade int primary key,
losal int,
hisal int,
)
表中插入数据命令
insert into dept values (001,'研发部','111')
--执行成功
insert into dept values (002,'市场部','222')
--error 列名或所提供值的数目与表定义不匹配。
insert into dept(deptno,dname) values (003,'财务部')
--执行成功
insert into dept(deptno,dname,loc) values (004,'行政部')
--INSERT 语句中列的数目大于 VALUES 子句中指定的值的数目。
--VALUES 子句中值的数目必须与 INSERT 语句中指定的列的数目匹配。
select * from dept --查询表dept中所有数据
删除表命令
drop table emp
关系
什么是关系: 表和表之间的联系
实现方式: 通过设置不同形式的外键来体现表和表的不同关系
分类:
一对一: 例如既可以把表1的主键充当表2的外键,也可以把表2的主键充当表1的外键
一对多: 把表1的主键充当表2 的外键,即把表1的主键添加到表2中充当表2的外键
注意:在数据使用次数多的那一方添加外键
多对多: 多对多必须通过单独的一张表来表示,例如班级和教师之间的关系也可以用一张表表示(一个班级可以对应多个教师,而一个教师也可以对应多个班级)
主键
概述:能唯一标识一个事物的一个字段或者多个字段的组合
特点:
1、含有主键的表称之为主键表
2、主键通常都是整数,不建议使用字符串当主键(如果主键是用于集群式服务,才可以考虑用字符串当主键)
3、主键的值通常都不允许修改,除非本记录被删除
4、主键不要定义为id,而要规范定义,如表明Id或表明_id
5、要用代理主键(无实际含义),而不要用业务主键(有实际意义的),所以通常在表中单独添加一个整型的编号充当主键字段
6、主键是否连续增长并不是十分重要
外键
概述:如果一个表中的若干字段是来自另外若干个表的主键或唯一键,则这个若干字段就是外键
注意:
1、外键统称是来自另外表的主键,而不是唯一键,因为唯一键可能为null
2、外键不一定是来自另外的表,也可能来自本表的主键
3、含有外键的表称之为外键表,外键字段来自的那一张叫做主键表
Question:主键表、外键表若需删除,该先删除哪一个?
先删外键表,因为如果先删除了主键表,那么会导致外键表中的数据引用失败