1、(可以在int 和primary中间加上constraint 约束名称)。 sch_add nvarchar(30) foreign key references student (stu_numb); 顺带回忆一下主键和外键的定义:主键:能够唯一标示一个事物的的字段或者多个字段的组合,叫主键。(含有主键的表叫做主键表,主键一般是整数不建议用字符串,而且一般用代理主键不要用业务主键,也就是说不要用有业务的字段作为主键,一般就用没有含义的编号当做主键。) 外键:如果一个表中的若干个字段来自若干个表的主键或者唯一键,就称这若干个字段为外键。(含有外键的表叫做外键表,通常都来自主键,因为唯一键可能为
2、null,而且外键不一定来自别的表可能就来自本表)。自认为总结的超好。 哦哦,还有删除表的时候先删外键表,不然先删主键会报错,原因很简单,外键引用错误。 没完,主键约束:不允许重复元素,避免了数据的冗余。外键约束:从语法上保证所关联的事物一定存在,而且事物和事物之间的关系是通过外键来体现的。3. check语句: stu_mark int check(stu_mark=60 and stu_mark=1500 and salary =5000 等价于where salary between 1500 and 5000需要注意的是:select * from emp(;=5000是不可取的,这两
3、个命令是一起的,中间不能打分号。查找另外一个范围的数据时可以用以下语句:where salary not between 1500 and 5000(另外一种是:where salary 4. in【若干个孤立的值】select * from emp where salary in (1500,3000)select * from emp where salary =1500 or salary =3000select * from emp where salary not in (1500,3000)select * from emp where salary 1500 and salary
4、 3000 也作select * from emp where salary !=1500 and salary != 3000-数据库中不等于有两种写法: != 和 推荐使用第二种。-or取反时记得改为and,呵呵。5. top【最前面的若干个记录,专属于sql server不可移植到其他数据库】select top 5 * from emp;select top 15 percent * from emp;-此语句输出的是百分之15的行数的所有字段,如果经计算百分之15是2.1,则输出的是三行。而且 * 不能省略,否则报错。6. null【没有值 空值】零和null不一样,null表示没有
5、值,而零表示一个确定的值。null不能参与这些运算: != =可以参与如下运算:is is not (下面的例子中emp 表示表名,而 comm表示字段名)select * from emp where comm is null;-输出的是奖金为空的员工的信息。select * from emp where comm is not null;-输出的是奖金不为空的员工信息。select * from emp where comm 2000 -where是对原始记录的过滤having avg(sal)3000 -对分组之后的记录的过滤 (where不能出现聚合函数)12. 连接查询定义:将两个或
6、者两个以上的表以一定的连接条件连接起来,从中检索出满足条件的数据。分类内连接【重点的重点 也是难点的难点】1. select from A,B 的用法产生的结果:行数是A B 的乘积列数是A B 之和或者说把A表的每一条记录都和B 表的每一条记录组合起来了形成的是一个笛卡尔积 注意:select from A,B 和 select from B,A 是一摸一样的。2. select from A,B where 的用法其中A和B能够互换而且产生的笛卡尔积通过where的条件语句进行过滤-输出5行 11列select *from emp,dept -dept和emp 互换 输出的结果不变wher
7、e empno = 73693. select from A join B on 的用法select from A join B on -A和B 互换 输出结果不变4. select , from ,where ,join , on , order , top ,having ,的混合使用查询的顺序 select top from A join B on join C where group by having order by 例子: -把工资大于的所有的员工按照部门分组把部门平均工资大于的最高前个的部门的编号部门的名称部门平均工资的等级 -第一种写法 select “T” .*,”D”select from A join B on -A和B互换输出结果不变5. select , from, where , join , on , group ,order, top , having 的混合使用Select top From A Join B OnJoin cOn WhereGroup byHavingOrder by把工资大于的所有员工按部门平均工资大于的最高前个的部门的编号部门的名称部门品均工资的等级第一种写法Select “T” 感谢下载!欢迎您的下载,资料仅供参考
copyright@ 2008-2023 冰点文库 网站版权所有
经营许可证编号:鄂ICP备19020893号-2