1、在一条 INSERT、SELECT INTO 或大容量复制语句完成后,@@IDENTITY 中包含此语句产生的最后的标识值。若此语句没有影响任何有标识列的表,则 @@IDENTITY 返回 NULL。若插入了多个行,则会产生多个标识值,@@IDENTITY 返回最后产生的标识值。如果此语句激发一个或多个执行产生标识值的插入操作的触发器,则语句执行后立即调用 @@IDENTITY 将返回由触发器产生的最后的标识值。若 INSERT 或 SELECT INTO 语句失败或大容量复制失败,或事务被回滚,则 @@IDENTITY 值不会还原为以前的设置。
在返回插入到表的 @@IDENTITY 列的最后一个值方面,@@IDENTITY、SCOPE_IDENTITY 和 IDENT_CURRENT 函数类似。
@@IDENTITY 和 SCOPE_IDENTITY 将返回在当前会话的所有表中生成的最后一个标识值。但是,SCOPE_IDENTITY 只在当前作用域内返回值,而 @@IDENTITY 不限于特定的作用域。
2、去掉重得记录
你的表中有唯一的ID吗?
如果有就可以这样实现。
select * from 表 where id in (select min(id) from 表 group by titlename)
这样就可以实现了!!!
3、查询数据库中的随机有限条记录
随机取5个:
access:
SELECT TOP 5 * FROM tablename ORDER BY rnd(id)
sql:
SELECT TOP 5 * FROM tablename ORDER BY newid()
4、
一、表结构定义:CREATE TABLE student(sno C(8),sname C(10),birthday D,age I,merried L)
2.表结构修改:
增加字段:ALTER TABLE student ADD COLUMN telphone C(20)
修改字段类型:ALTER TABLE student ALTER COLUMN name c(20)
3.创建视图:CREATE VIEW s_view AS SELECT student.sno,sname,cname,grade FROM student,sc,course
WHERE student.sno=sc.sno AND sc.cno=course.cno
二、数据操纵(p70)
1.数据插入:INSERT INTO student(sno,sname,sex,age) VALUES(‘S01’,’张三’,’男’,20)
2.数据删除:DELETE FROM student WHERE sex=’男’
3.数据修改:UPDATE student SET age=21 WHERE sno=’S01’
三、权限与角色
授予GRANT,收回REVOKE
四、查询
连表、选取、投影
集函数:MIN、MAX、AVG、SUM、COUNT
分组GROUP BY 分组条件HAVING
子查询:普通子查询、相关子查询
五、例子
1.查询成绩在85分以上的学生的学号和姓名
SELECT 学号,姓名 FROM student WHERE 学号 NOT IN(SELECT 学号 FROM sc WHERE 成绩<85)
2.查询成绩最高的学生
SELECT * FROM student WHERE 成绩>=ALL(SELECT 成绩 FROM sc)
或 SELECT * FROM student WHERE 成绩=ALL(SELECT MAX(成绩) FROM sc)
3.查询同时向工程号为J1和J2的工程提供零件的供应商号
SELECT DISTINCT 供应商号 FROM SPJ
WHERE 工程号=’J1’ AND 供应商号 IN
(SELECT 供应商号 FROM SPJ WHERE 工程号=’J2’)
4.检索至少选修了学号是S3的学生选修的全部课程相同的学生学号和姓名
SELECT 学号,姓名 FROM student
WHERE NOT EXISTS
(SELECT * FROM sc scx
WHERE scx.学号=’S3’ AND NOT EXISTS
(SELECT * FROM sc scy
WHERE scy.学号=student.学号 AND scy.课程号=scx.课程号))
IDENT_CURRENT 不受作用域和会话的限制,而受限于指定的表。IDENT_CURRENT 返回任何会话和任何作用域中为特定表生成的标识值。