SQLSERVER手动建库 建表

时间:2021-02-28 08:36:13

SQLSERVER手动建库 建表 

 

exec xp_cmdshell ' md E:\S2'--建立文件夹 --建立数据库 if exists(select*from sysdatabases where name='stud') drop table stud create  database stud     on primary ( name='stud_data', filename='E:\S2\stud_data.mdf', size=3mb ) log on ( name='stud_log', filename='E:\S2\stud_data.ldf', size=1mb ) go

--建立表s添加约束 if exists(select*from sysobjects where name='s') drop table s create table s ( SID int not null constraint pk_SID primary key , sn varchar(40) not null, sd varchar(40) not null, sa int not null ) go --建立表c添加约束 if exists(select*from sysobjects where name='c') drop table c create table c ( cid varchar(40) not null constraint pk_cid primary key, cn varchar(40) not null ) go --建立表 sc if exists(select*from sysobjects where name='sc') drop table sc create table sc ( cid varchar(40) not null constraint pk_sc primary key(cid,sid),constraint fk_cid foreign key(cid) references c(cid),      sid int  not null constraint fk_sid foreign key(sid) references s(sid), G int not null ) go

insert into s(SID,sn,sd,sa)values(1001,'林林','中国汽车',28) insert into s(SID,sn,sd,sa)values(1002,'白杨',' 望帆科技',30) select *from s

insert into c(cid,cn)values('s001','税收基础') insert into c(cid,cn)values('s002','初级韩语') insert into c(cid,cn)values('s003','雅思英语') select *from c

insert into sc(cid,sid,g)values('s001',1001,85) insert into sc(cid,sid,g)values('s002',1001,76)

 

下面是Sql Server 和 Access 操作数据库结构的常用Sql

 

新建表: create table [表名] ( [自动编号字段] int IDENTITY (1,1) PRIMARY KEY , [字段1] nVarChar(50) default \'默认值\' null , [字段2] ntext null , [字段3] datetime, [字段4] money null , [字段5] int default 0, [字段6] Decimal (12,4) default 0, [字段7] image null , )

 

删除表: Drop table [表名]

 

插入数据: INSERT INTO [表名] (字段1,字段2) VALUES (100,\'51WINDOWS.NET\')

 

删除数据: DELETE FROM [表名] WHERE [字段名]>100

 

更新数据: UPDATE [表名] SET [字段1] = 200,[字段2] = \'51WINDOWS.NET\' WHERE [字段三] = \'HAIWA\'

 

新增字段: ALTER TABLE [表名] ADD [字段名] NVARCHAR (50) NULL

 

删除字段: ALTER TABLE [表名] DROP COLUMN [字段名]

 

修改字段: ALTER TABLE [表名] ALTER COLUMN [字段名] NVARCHAR (50) NULL

 

重命名表:(Access 重命名表,请参考文章:在Access数据库中重命名表) sp_rename \'表名\', \'新表名\', \'OBJECT\'

 

新建约束: ALTER TABLE [表名] ADD CONSTRAINT 约束名 CHECK ([约束字段] <= \'2000-1-1\')

 

删除约束: ALTER TABLE [表名] DROP CONSTRAINT 约束名

 

新建默认值 ALTER TABLE [表名] ADD CONSTRAINT 默认值名 DEFAULT \'51WINDOWS.NET\' FOR [字段名]

 

删除默认值 ALTER TABLE [表名] DROP CONSTRAINT 默认值名

 

删除Sql Server 中的日志,减小数据库文件大小 dump transaction 数据库名 with no_log backup log 数据库名 with no_log dbcc shrinkdatabase(数据库名) exec sp_dboption \'数据库名\', \'autoshrink\', \'true\'

 

\\\'添加字段通用函数 Sub AddColumn(TableName,ColumnName,ColumnType) Conn.Execute(\"Alter Table \"&TableName&\" Add \"&ColumnName&\" \"&ColumnType&\"\") End Sub

 

\\\'更改字段通用函数 Sub ModColumn(TableName,ColumnName,ColumnType) Conn.Execute(\"Alter Table \"&TableName&\" Alter Column \"&ColumnName&\" \"&ColumnType&\"\") End Sub

 

\\\'检查表是否存在

 

sql=\"select count(*) as dida from sysobjects where id = object_id(N\'[所有者].[表名]\') and OBJECTPROPERTY(id, N\'IsUserTable\') = 1\"

 

set rs=conn.execute(sql)

 

response.write rs(\"dida\")\'返回一个数值,0代表没有,1代表存在

 

判断表的存在: select * from sysobjects where id = object_id(N\'[dbo].[tablename]\') and OBJECTPROPERTY(id, N\'IsUserTable\') = 1

 

某个表的结构 select * from syscolumns where id = object_id(N\'[dbo].[你的表名]\') and OBJECTPROPERTY(id, N\'IsUserTable\') = 1

 

 

 

create table student( Sno int not null primary key, Sname char(10)not null, Ssex bit not null, Sage tinyint not null, Sdept char(20) not null)

 

create table course( Cno int not null primary key, Cname char(20)not null, Cpno int not null, Ccredit tinyint not null)

 

create table sc( Sno int not null, Cno int not null, Grade tinyint not null foreign key(Sno)references student(Sno) foreign key(Cno)references course(Cno) )

 

 

 

 

 

(1) seleCt top 1 S.sno,sname from SC,S where Cno='C2' and SC.sno=S.sno order by grade desC;

 

(2) seleCt sname,age from Student,SC where SC.sno not in( seleCt SC.sno from SC where Cno='C2' )and SC.sno=S.sno; (3) seleCt sno, avg(grade) as average from SC group by sno having(avg(grade)>80); (3)法二 seleCt sno, avg(grade) ' average' from SC group by sno having(avg(grade)>80);

 

(4) delete from SC where SC.sno in(    seleCt sno    from S    where sname='S5'); (5) seleCt sname from S where sdept='英语'and sex='男'; (6) seleCt SC.sno,avg(grade) as average from S,SC where S.sno=SC.sno group by SC.sno;

 

(7) seleCt S.sname as 姓名 ,grade as 成绩 ,C.cname as 选修课程 from SC,S,C where S.sno=SC.sno and SC.cno=C.cno and SC.cno in(      seleCt cno      from C      where cname='DB'); (8) select TOP 1 sno as 学号,grade as 分数,cname as 课程名 from SC,C where SC.cno=C.cno and cname='OS' order by grade desc; (9) select Sname from   S where not exists(       select *       from SC       where Sno=S.Sno and Cno=1); (10) select Sname from S where not exists(       select *       from C       where not exists(             select *             from SC             where Sno=S.Sno and Cno=C.Cno));

 

(11) select distinct Sno from SC,SCX where not exists(       select *       from SC SCY       where SCY.Sno=95001 and         not exists(             select *             from SC SCZ             where SCZ.Sno=SCX.Sno and SCZ.Cno=SCY.Cno)); (12) select top 3 Cno as 课程号, Sno from SC where Cno=1 order by Grade desc;

 

 

 

create database stu
use stu
create table S ( sno char(6), sname char(10), age int, sex char(2), constraint PK_S primary key (sno), constraint CK_age check(age>=0 and age<=150) )
create table C ( cno char(8), cname char(16), credit int, constraint PK_C primary key (cno), constraint CK_credit check (credit>=0) )
create table SC ( sno char(6), cno char (8), constraint PK_SC primary key (sno,cno), constraint FK_s foreign key (sno) references S(sno), constraint FK_c foreign key (cno) references C(cno) )
insert into S values ('001','zhang',19,'男')
insert into S values('002','li',16,'女')
select * from S