SQL数据库自动生成id中表的id是干什么用的

三张表,主要字段是账户表的act_id,user_id.用户表user_id,name,school_id.学校表school_id,school_name.条件通过act_id来查询那些用户参与。分块显示,一个学校名字下面显示对应的name
全部答案(共1个回答)
select a.act_id,u.name,c.school_name from 账户表 as a
inner join 用户表 as u on u.user_id=a.user_id inner join 学校表 as s on s.school_id=u.school_id where a.act_id=@ActionID order by s.school_id
答: 有身孕三个月b超检查单数据一般是多少的呢?做的NT数据,我想参考下。
答: 没有恒心和耐不得寂寞者,不要去学
答: 首先的前提条件是,你们的局域网主机允许所属的工作机互访并具有对文件完全修改的权力(这是由管理员设定的)。
假如你的机器编号是a015(或是直接的网址如: ),另...
大家还关注
确定举报此问题
举报原因(必选):
广告或垃圾信息
激进时政或意识形态话题
不雅词句或人身攻击
侵犯他人隐私
其它违法和不良信息
报告,这不是个问题
报告原因(必选):
这不是个问题
这个问题分类似乎错了
这个不是我熟悉的地区要查数据表中第30到40条记录,有字段id,但是id并不连续。如何写sql语句?
SELECT TOP 10 *
SELECT TOP& 40 *
FROM dbo.Log
ORDER BY ID DESC
ORDER BY T.ID ASC&
SELECT *, (ROW_NUMBER() OVER ( ORDER BY ID DESC ) )AS ROWNUMBER
FROM dbo.Log
WHERE T.ROWNUMBER &= 40
AND T.ROWNUMBER & 30
liqunfeng2003的专栏用SQL数据库做多表关联应怎样设计库结构
http://7/143872/
多表关联的话表之间必须得存在关系才行呢,这样建立约束就行了,&
关系表中插入主表的主键做外键。&
假设表1学生表student (主键stu_id) 表2couse主键(c_id)
表3成绩表grade(这个是关系表)&
表3关联表1表2;表3成绩表grade中加上增加属性stu_id、c_id 如果有的话打开输入&
USE DATABASE 3表所在名字&
ALTER TABLE grade&
CONSTRAINT fk_grade_student_stu_id FOREIGN
KEY(stu_id)&
REFERENCES student(doc_id)&
ALTER TABLE grade&
CONSTRAINT fk_grade_couse_c_id FOREIGN
KEY(c_id)&
REFERENCES couse(c_id)&
建立外键约束就可以了
新建两张表:
  表1:student
截图如下:
  表2:course
截图如下:
  (此时这样建表只是为了演示连接SQL语句,当然实际开发中我们不会这样建表,实际开发中这两个表会有自己不同的主键。)
  一、外连接
  外连接可分为:左连接、右连接、完全外连接。
  1、左连接 left join 或 left outer join
  SQL语句:select * from student left join course on
student.ID=course.ID
  执行结果:
  左外连接包含left join左表所有行,如果左表中某行在右表没有匹配,则结果中对应行右表的部分全部为空(NULL).
  注:此时我们不能说结果的行数等于左表数据的行数。当然此处查询结果的行数等于左表数据的行数,因为左右两表此时为一对一关系。
  2、右连接 right join 或 right outer join
  SQL语句:select * from student right join course on
student.ID=course.ID
  执行结果:
  右外连接包含right join右表所有行,如果左表中某行在右表没有匹配,则结果中对应左表的部分全部为空(NULL)。
  注:同样此时我们不能说结果的行数等于右表的行数。当然此处查询结果的行数等于左表数据的行数,因为左右两表此时为一对一关系。
  3、完全外连接 full join 或 full outer join
  SQL语句:select * from student full join course on
student.ID=course.ID
  执行结果:
  完全外连接包含full
join左右两表中所有的行,如果右表中某行在左表中没有匹配,则结果中对应行右表的部分全部为空(NULL),如果左表中某行在右表中没有匹配,则结果中对应行左表的部分全部为空(NULL)。
  二、内连接 join 或 inner
  SQL语句:select * from student inner join course on
student.ID=course.ID
  执行结果:
  inner join 是比较运算符,只返回符合条件的行。
  此时相当于:select * from student,course where student.ID=course.ID
  三、交叉连接 cross
  1.概念:没有 WHERE
子句的交叉联接将产生连接所涉及的表的笛卡尔积。第一个表的行数乘以第二个表的行数等于笛卡尔积结果集的大小。
  SQL语句:select * from student cross join course
  执行结果:
  如果我们在此时给这条SQL加上WHERE子句的时候比如SQL:select * from student cross join
course where student.ID=course.ID
  此时将返回符合条件的结果集,结果和inner join所示执行结果一样。
  四、两表关系为一对多,多对一或多对多时的连接语句
  当然上面两表为一对一关系,那么如果表A和表B为一对多、多对一或多对多的时候,我们又该如何写连接SQL语句呢?
  其实两表一对多的SQL语句和一对一的SQL语句的写法都差不多,只是查询的结果不一样,当然两表也要略有改动。
  比如表1的列可以改为:
  Sno Name Cno
  表2的列可以改为:
  Cno CName
  这样两表就可以写一对多和多对一的SQL语句了,写法和上面的一对一SQL语句一样。
  下面介绍一下当两表为多对多的时候我们该如何建表以及些SQL语句。
  新建三表:
  表A: student 截图如下:
  表B: course 截图如下:
  表C: student_course 截图如下:
  一个学生可以选择多门课程,一门课程可以被多个学生选择,因此学生表student和课程表course之间是多对多的关系。
  当两表为多对多关系的时候,我们需要建立一个中间表student_course,中间表至少要有两表的主键,当然还可以有别的内容。
  SQL语句:select s.ame from student_course as sc left join
student as s on s.Sno=sc.Sno left join course as c o
  执行结果:
  此条SQL执行的结果是学生选课的情况。
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。我们在删除SQL Sever某个数据库表中数据的时候,希望ID重新从1开始,而不是紧跟着最后一个ID开始需要的命令
一、如果数据重要,请先备份数据
二、删除表中数据
SQL: Delete From ('表名')&
如:Delete From abcd
三、执行新语句
SQL: dbcc checkident('表名',reseed,0)
如:dbcc checkident('abcd',reseed,0)
DBCC CHECKIDENT ('table_name', RESEED, new_reseed_value)
检查指定表的当前标识值满足要求。
reseed,补种; 再播种于,即是重新指定标识值。
这样操作后,新插入的数据ID将从1开始。
TRUNCATE TABLE 在功能上与不带 WHERE 子句的 DELETE 语句相同:二者均删除表中的全部行。但 TRUNCATE TABLE 比 DELETE 速度快,且使用的和事务日志资源少。
DELETE 语句每次删除一行,并在事务日志中为所删除的每行记录一项。TRUNCATE TABLE 通过释放存储表数据所用的数据页来删除数据,并且只在事务日志中记录页的释放。
TRUNCATE TABLE 删除表中的所有行,但表结构及其列、约束、索引等保持不变。新行标识所用的计数值重置为该列的种子。如果想保留标识计数值,请改用 DELETE。如果要删除表定义及其数据,请使用 DROP TABLE 语句。
对于由 FOREIGN KEY 约束引用的表,不能使用 TRUNCATE TABLE,而应使用不带 WHERE 子句的 DELETE 语句。由于 TRUNCATE TABLE 不记录在日志中,所以它不能激活触发器。
TRUNCATE TABLE 不能用于参与了索引视图的表。
对用TRUNCATE TABLE删除数据的表上增加数据时,要使用UPDATE STATISTICS来维护索引信息。
如果有ROLLBACK语句,DELETE操作将被撤销,但TRUNCATE不会撤销。
TRUNCATE TABLE name [DROP/REUSE STORAGE]
DROP STORAGE:显式指明释放数据表和索引的空间
REUSE STORAGE:显式指明不释放数据表和索引的空间
truncate命令是会把自增的字段还原为从1开始的,或者你试试把table_a清空,然后取消自增,保存,再加回自增,这也是自增段还原为1 的方法。
还有两种方法是可以把表id还原为1 的:
1.delete from 你的表名(前述方法)
dbcc checkident(你的表名,reseed,0)
2.如果你要保存你的数据,介绍你第三种方法:(未使用过)
用phpmyadmin导出,你在里面会有发现哦
编辑sql文件,将其中的自增下一个id号改好,再导入。

我要回帖

更多关于 数据库自动生成id 的文章

 

随机推荐