SQL-Server数据库创建数据库用户表和插入数据Transact-SQL
SQL Server数据库创建数据库、用户、表和插入数据(Transact-SQL)
SQL Server 基本操作
一、建数据库并创建用户
首先使用
create database <表名>
创建数据库,这里使用如下代码作为示例:
create database us1
刷新左侧“对象资源管理器”,刷新后新建的数据库会出现在数据库列表中
接下来就该创建数据库的用户,步骤如下:
1.首先,点击“us1”左侧的“+”,会出现隐藏的内容,点击刚刚显示出来的内容中的“安全性”左侧的“+”号
2.选中“安全性”下方的“用户”,右击用户,选中“新建用户”
3.在弹出窗口中输入要创建的用户名,输入完成后,点击蓝色方框标注的地方
4.在弹出的窗口中选择“浏览”
接下来,在浏览中选择第一个对象
点击一路确定,就完成了用户的创建,创建出的用户:
至此,我们完成了对数据、库用户的创建,接下来就需要创建模式了
二、创建模式
准备工作:需要把自己建的是数据库设为当前数据库,系统默认为master数据库,这里我使用us1
不这样做,编译器会报错并停止执行某些创建模式的语句
创建模式需要用到的脚本语言:
create schema <模式名> authorization <用户名>
这里使用
create schema "S-T" authorization WANG
课在us1下方的“安全性”-“架构”中找到创建的模式
三、建表并插入数据
新建查询,在下方可输入如下的代码,创建表格,要注意的需要先创建Student、Course表,后创建SC表,这是因为SC中有两个外码Sno(学生学号)、Cno(课程号),分别来自Student、Course
如果不这样做在插入SC的数据时编译器会出现
INSERT 语句与 FOREIGN KEY 约束"FK__SC__Cno__2B3F6F97"冲突。该冲突发生于数据
的提示,并停止执行
正确的建表方法:
CREATE TABLE Student
(
Sno CHAR(9) PRIMARY KEY, /* 列级完整性约束条件,Sno是主码*/
Sname CHAR(20) UNIQUE, /* Sname取唯一值*/
Ssex CHAR(2),
Sage SMALLINT,
Sdept CHAR(20)
);
CREATE TABLE Course
(
Cno CHAR(4) PRIMARY KEY,
Cname CHAR(40),
Cpno CHAR(4),
Ccredit SMALLINT,
FOREIGN KEY (Cpno) REFERENCES Course(Cno) /* 表级完整性约束条件, Cpno是外码,被参照表是自身*/
);
CREATE TABLE SC
(
Sno CHAR(9),
Cno CHAR(4),
Grade SMALLINT,
PRIMARY KEY (Sno,Cno), /* 主码由两个属性构成,必须作为表级完整性进行定义*/
FOREIGN KEY (Sno) REFERENCES Student(Sno), /* 表级完整性约束条件,Sno是外码,被参照表是Student*/
FOREIGN KEY (Cno)REFERENCES Course(Cno) /* 表级完整性约束条件,Cno是外码,被参照表是Course*/
);
这就完成了建表的操作,可以在左侧查看建立的表
接下来,就进行插入数据
插入数据的方法如下:
对Student表进行插入数据
INSERT INTO Student (Sno,Sname,Ssex,Sdept,Sage) VALUES ('201215121','李勇','男','CS',20);
INSERT INTO Student (Sno,Sname,Ssex,Sdept,Sage) VALUES ('201215122','刘晨','女','CS',19);
INSERT INTO Student (Sno,Sname,Ssex,Sdept,Sage) VALUES ('201215123','王敏','女','MA',18);
INSERT INTO Student (Sno,Sname,Ssex,Sdept,Sage) VALUES ('201215125','张立','男','IS',19);
INSERT INTO Student (Sno,Sname,Ssex,Sdept,Sage) VALUES ('201215128','陈冬','男','IS',20);
这里需要注意的是insert语句中的valuses中数据的顺序需要与表名后面括号里的名称的顺序一致,不然编译器就会报错,停止执行脚本
用下面的这一行代码可以显示插入的结果,用来检查上述插入方法执行后是否能够正确执行插入操作。
SELECT * FROM Student
同理对Course进行插入操作
INSERT INTO Course(Cno,Cname,Cpno,Ccredit) VALUES ('1','数据库',NULL,4);
INSERT INTO Course(Cno,Cname,Cpno,Ccredit) VALUES ('2','数学',NULL,4);
INSERT INTO Course(Cno,Cname,Cpno,Ccredit) VALUES ('3','信息系统',NULL,4);
INSERT INTO Course(Cno,Cname,Cpno,Ccredit) VALUES ('4','操作系统',NULL,4);
INSERT INTO Course(Cno,Cname,Cpno,Ccredit) VALUES ('5','数据结构',NULL,4);
INSERT INTO Course(Cno,Cname,Cpno,Ccredit) VALUES ('6','数据处理',NULL,4);
INSERT INTO Course(Cno,Cname,Cpno,Ccredit) VALUES ('7','Pascal语言',NULL,4);
UPDATE Course SET Cpno = '5' WHERE Cno = '1'
UPDATE Course SET Cpno = '1' WHERE Cno = '3'
UPDATE Course SET Cpno = '6' WHERE Cno = '4'
UPDATE Course SET Cpno = '7' WHERE Cno = '5'
UPDATE Course SET Cpno = '6' WHERE Cno = '7'
这里需要注意的事项与Student需要注意的事项一样。
查询插入的结果
SELECT * FROM Course
下面对SC中的数据进行操作:
方法如下:
INSERT INTO SC(Sno,Cno,Grade) VALUES ('201215121 ','1',92);
INSERT INTO SC(Sno,Cno,Grade) VALUES ('201215121 ','2',85);
INSERT INTO SC(Sno,Cno,Grade) VALUES ('201215121 ','3',88);
INSERT INTO SC(Sno,Cno,Grade) VALUES ('201215122 ','2',90);
INSERT INTO SC(Sno,Cno,Grade) VALUES ('201215122 ','3',80);
查询插入的结果
SELECT * FROM SC