‘壹’ sql中主键的使用
其实很简单,你就知道一下几点就可以了,在以后的工作中就足够了。
1,主键非空,也就是说被设定为主键的列在插入数据的时候就不能为空,如果为空SQL就会报错。
2,主键是唯一的,一个表通过一个主键可以确定一条记录,有一条记录的主键是SF110如果你再向里面插入SF110的记录SQL就会报错。
3,有时可以用两个字段来建立主键,这叫联合主键。这种情况出现在当一个字段无法唯一的时候要借助另一个字段来确保唯一性的时候。
主键一般都是挑选能够唯一表示一条记录的字段来做,你比如说现在有一个“学生表”里面有“学生编号”“学生姓名”“学生年龄”等
根据原则肯定要以“学生编号”为主键。
CREATE TABLE student
(sid char(4) not null PRIMARY KEY,
sname VARCHAR(10),
sage int,
)
sid 就是主键 唯一标识每一个学生
‘贰’ 请高手详解SQL主键
所谓sql主键,说简单点,就是能够唯一确定一条数据库记录信息的一个字段或单个字段的组合。其实质,就是唯一性,这样才能对数据库信息进行唯一判定。
EMPLOYEE_TBL:name可以相同、phone可以相同、start_date可以相同、address可以相同,如果用它们中的任何一个做主键,就不能具体定位到某一个雇员,这样就可以有多个雇员被查到,无法做到唯一性。而employee_number来说,一般就是每位雇员有一个编号,不会出现两位雇员的编号一致,如果一致,那就是数据库设计的不完善了,这样它就可以做为主键,根据它查找的雇员,最终肯定会是一位,这就是唯一性。
同理,INVENTORY_TBL的主键是item_number, EQUIPMENT_TBL的主键是equipment_number.
大概就是这样吧,说的不是很专业~~~
‘叁’ 在SQL 中怎样在一张表中创建两个主键
ALTER TABLE 选课表 x0dx0a ADD CONSTRAINT pk_选课表 PRIMARY KEY(学号, 课程编号);x0dx0ax0dx0a一个表只能一个主键.x0dx0ax0dx0a主键可以由2个字段组成
‘肆’ SQL数据库练习题
1.DISTINCT、top
2.convert
3.查询、更新、管理
4.主键、外键
5.ROLLBACK TRAN、COMMIT TRAN
6.sp_renamedb
8.identity
9.插入数据的列数必须和表中列数相等
10.空
12.truncate
14.原子性、一致性、隔离性、永久性
16.count、avg、len、substring
17.cast
18.windows
19.物理数据表
20.<>、!=
‘伍’ SQL怎样用命令设置主键
可以参考下面的方法:
建表的时候,可以直接在列名后面增加主键约束,比如:
IDchar(5)primarykey。
对已经建表的列增加主键约束:
alter table 表名addconstraint约束名 primary key (ID)
(5)sql不同主键练习扩展阅读:
sql语句
添加主键
Alter table tabname add primary key(col)
删除主键
Alter table tabname drop primary key(col)
创建索引
create [unique] index idxname on tabname(col….)
删除索引
drop index idxname
‘陆’ 写出下列sql语句:请给表中各列设计合适的数据类型,主键和外键。
1.社团(社团名称 char(50),成立时间 datetime,社团负责人名 char(10),学号 decimal(10),总人数 number(10)),主键:社团名称,外键:学号
2.社团成员(社团名称 char(50),成员名 char(10),学号 decimal(10),加入时间 datetime,退出时间 datetime,团内职务 char(20)),主键:社团名称+学号,外键:社团名称,学号
3.社团活动申请(社团名称 char(50),活动内容简介 char(100),申请时间 datetime,申请地点 char(100),活动经费预算 decimal(10,2),批准情况 char(10),审核人 char(10)),主键:社团名称+申请时间+申请地点,外键:社团名称
4.社团活动(社团名称 char(50),活动时间 datetime,活动地点 char(100),活动经费 decimal(10,2),活动效果 char(30)),主键:社团名称+活动地点+活动地点,外键:社团名称
5.社团成员活动情况(社团名称 char(50),成员名 char(10),学号 decimal(10),活动时间 datetime,活动地点 char(100),承担任务 char(40)),主键:社团名称+学号,外键:社团名称,学号
‘柒’ SQL的练习,求答案!!!
/*创建Moonfox_db数据库*/
use master
if exists(select * from sysdatabases where name='Moonfox_db')
drop database Moonfox_db
create database Moonfox_db
on
(
name='Moonfox_db_data',
filename='D:\Visual Studio 2008 & Sql server 2005\Sql server\Moonfox_db.mdf',
size=10,
filegrowth=2MB
)
log on
(
name='Moonfox_db_log',
filename='D:\Visual Studio 2008 & Sql server 2005\Sql server\Moonfox_db.ldf',
size=5,
filegrowth=20%
)/*创建Department表*/
use Moonfox_db
if exists(select * from sysobjects where name='Department')
drop table Department
create table Department
(
DID int identity (1,1)primary key,--部门编号,主键
Dname nvarchar(20),--部门名称
Address nvarchar(50),--部门地址
Photo decimal(12,0),--电话
)/*创建Employee表*/
use Moonfox_db
if exists(select * from sysobjects where name='Employee')
drop table Employee
create table Employee
(
EID int identity (1,1)primary key,--职工编号,主键
Ename varchar(10),--职工名
Gender nchar(2) check(Gender='男' or Gender='女'),--性别,添加限制
Position nvarchar(10) check(Position='员工' or Position='组长' or Position='经理'),--职务,添加限制
Address nvarchar(50),--家庭地址
DID int,--部门编号,外键
foreign key(DID) references Department(DID)--外键约束
)
/*创建Care表*/
use Moonfox_db
if exists(select * from sysobjects where name='Care')
drop table Care
create table Care
(
CID int identity (1,1)primary key,--保健卡编号,主键
EID int,--职工号,外键
foreign key(EID) references Employee(EID),--外键约束
CheckDate datetime,--检查身体日期
PhysicalCondition nvarchar(4) check(PhysicalCondition='一般' or PhysicalCondition='差' or PhysicalCondition='好'),--健康状况
)
/*创建Care表约束*/
alter table Care
add
constraint DF_CheckDate default(getdate()) for CheckDate--缺省,默认净时间为当前计算机时间 路径自己修改,试图自己做,选择语句自己写。我该睡觉了,抱歉,你试着在sql server中运行下,我等着休息,也不知道写的有没有错误,没时间帮你写省下的了。不急着用的话我明天帮你写吧。
‘捌’ sql如何将不同主键的表联系起来
表中的具体字段不清呀
create table stu(
sid int primary key ,
sname char(8))
go
create table gro(
gid int primary key,
gname char(8))
go
create table stu_gro(
sgid int primary key not null identity(1,1), --主键值从 1 一直加
sid int ,
gid int )
--创建一个存储过程
create proc insert_SG @sid int,@gid int
as
if(not exists (select sid from ddy where sid=@sid))
begin
insert into ddy(sid,gid) values(@sid,@gid)
print'成功插入'
end
else print'该学生已插入'
--执行存储过程,@sid 为指定的学生,@gid 为指定的组
exec insert_SG '@sid','@gid'
‘玖’ 最近在学sql,请问有没有一些操作的练习呢比如说一些多表查询啊什么的 感激不尽喔。。。
网上一般会有一些公用的数据库可以下载,比如:国家代码,IP地址库,等等,你可以下载下来然后自己给自己设置题目来写SQL语句就可以了。
我每次放URL都回答不了问题,就不放了,如果需要,使用Hi找我吧。