【SQL Server】表与表数据操作

一. 创建表结构

USE TEST_427    --使用TEST_427这个数据库,表示对该数据库进行建表操作
GO
CREATE TABLE XSB    --创建XSB表
(
    StudentNo char(6) NOT NULL PRIMARY KEY,    --列名 + 类型 + 是否可为空,最后设置主键
    StudentName char(8) NOT NULL,
    StudentSex bit NULL DEFAULT 1,    --用default设置默认值,此处设为1
    Sbrithday date NULL,
    StudentSpecialty char(12) NULL,
    SumCredit int NULL,
    StudentRemarks varchar(500) NULL --最后不用逗号
)

如果不加上 USE TEST_427,那么默认所创建的表为当前数据库的。

创建一个带计算列的表

--创建一个带计算列的表
USE TEST_427
GO
CREATE TABLE TEST_1
(
    CourseID char(3) PRIMARY KEY,    --由于主键本身不能为空,所以在此可以不加NOT NULL,因为本身就不为空
    SumScore real NOT NULL,    --real 是浮点型的一种,精度为7位有效数字
    SumNumberOfStudent int NOT NULL,
    AverageScore AS SumScore/SumNumberOfStudent PERSISTED --使用AS字段,还有persisted,表示留存
)

如果没有使用PERSISTED关键字,则在计算列上不能添加 PRIMARY KEY, UNIQUE, DEFAULT等约束条件,由于计算列上的值是通过服务器计算得到的,所以在插入或者修改数据时不能对计算列赋值。

二、修改表结构

--增加列

--在表中增加新列
USE TEST_427
GO
ALTER TABLE XSB    --修改表XSB
    ADD scholarship tinyint NULL --增加奖学金这一列
GO

USE TEST_427
GO
ALTER TABLE TEST_1
    ADD scholarship_1 tinyint NULL,--添加两个列,用逗号隔开即可
        scholarship_2 tinyint NULL
GO

--删除列

--在表中删除列
USE TEST_427
GO
ALTER TABLE XSB
    DROP COLUMN scholarship --注意添加column表示删除的是列
GO

在写这段代码的时候,容易忘了添加一些关键字,如column

所以我们可以翻译成字面意思来加深记忆和理解,翻译如下:

使用(use)数据库TEST_427(名称)

立即执行(上面的代码)

修改(alter)一个表(table),它的名称叫TEST_1

  删除(drop)表中一个列(column),它的名称叫scholarship

立即执行(上面的代码)

小技巧:在敲SQL语句的时候,可以在心里默念这样的中文,一来容易记忆,二来不容易出错漏掉一些关键字

--修改列属性

--修改表中的属性,使用alter
--将姓名的列长度改为10,将出生日期的数据类型从data改为datatime
USE TEST_427
GO
ALTER TABLE XSB
    ALTER COLUMN StudentName char(10) --使用alter表示更新修改
GO
ALTER TABLE XSB
    ALTER COLUMN Sbirthday datetime
GO

--删除表

--删除表
USE TEST_427
GO
DROP TABLE XSB --drop删除表

三、操作表-插入记录

插入记录使用 insert 语句

--操作表数据-插入记录
/*
向数据库TEST_427的表XSB中插入如下一行数据:
123456,天天,1,1994-11-21,软件工程,60,NULL
*/
USE TEST_427
GO
INSERT INTO XSB --不要忘了加上into
    VALUES(‘123456‘,‘天天‘,1,‘1994-11-21‘,‘软件工程‘,60,NULL) --values 单词后面有s

若表中有默认值,那么在插入表的时候,可以不用对默认值进行赋值操作。

在SQL Server中,可以一次插入多条记录,每条数据之间用逗号可开即可:

INSERT INTO XSB
    VALUES
    (‘123457‘,‘晓晓‘,1,‘1994-11-24‘,‘软件工程‘,60,NULL), --注意此处用逗号隔开
    (‘123458‘,‘明明‘,1,‘1994-11-22‘,‘软件工程‘,60,NULL)

从表XSB中生成计算机专业的学生表,包括学号、姓名、专业,要求新表中的数据结果集中在前4行:

/*
从表XSB中生成计算机专业的学生表,包括学号、姓名、专业,要求新表中的数据结果集中
在前4行。
*/
--先创建表
USE TEST_427
GO
CREATE TABLE XSB1
(    studentNo char(10) PRIMARY KEY,
    studentName char(12) NOT NULL,
    speiality char(10) NULL
)

--插入数据
INSERT TOP(4) INTO XSB1    --此处top(4)表示插入的数据为另一个表的前4个数据
    SELECT StudentNo,StudentName,StudentSpecialty --按照题目要求,插入的是XSB表中的这几个元素
        FROM XSB    --用from表示来自哪个表
        WHERE StudentSpecialty = ‘软件工程‘ --约束条件
GO

上面这条INSERT语句的功能是:将XSB中专业名为“软件工程”的各记录的学号、姓名、专业名列的值插入到表XSB1的各行中。

使用下面的查询语句进行检验查询:

SELECT *
    FROM XSB1

运行结果:

关于SQL Server的其他学习笔记

时间: 2025-01-01 11:16:03

【SQL Server】表与表数据操作的相关文章

快速查看SQL Server 中各表的数据量以及占用空间大小

快速查看SQL Server 中各表的数据量以及占用空间大小. CREATE TABLE #T (NAME nvarchar(100),ROWS char(20),reserved varchar(18) ,Data varchar(18) ,index_size varchar(18) ,Unused varchar(18) ) GO INSERT #T EXEC SP_MSFOREACHTABLE 'EXEC sp_spaceused "?"' SELECT * FROM #T O

sql Server中临时表与数据表的区别

sql server 中临时表与数据表的区别 1.如何判断临时表和数据表已生成 --如何判断临时表是否已创建--- if exists(select * from tempdb..sysobjects where id=object_id('tempdb..#Temp_Student')) begin print '存在临时表'; end else begin print '不存在临时表'; end --如何判断数据表是否已创建--- if exists(select * from sys.ta

SQL Server 索引和表体系结构(三)

原文:SQL Server 索引和表体系结构(三) 包含列索引 概述 包含列索引也是非聚集索引,索引结构跟聚集索引结构是一样,有一点不同的地方就是包含列索引的非键列只存储在叶子节点:包含列索引的列分为键列和非键列,所谓的非键列就是INCLUDE中包含的列,至少需要有一个键列,且键列和非键列不允许重复,非键列最多允许1023列(也就是表的最多列-1),由于索引键列(不包括非键)必须遵守现有索引大小的限制(最大键列数为 16,总索引键大小为 900 字节)的要求所以引进了包含列索引. 正文 创建包含

SQL server 数据库用户表名称

转自(http://blog.163.com/jlj_sk/blog/static/22579293200861422833924/) 取得SQL server 数据库中 所有用户表名称 select name from sysobjects where xtype='U' order by name SQL server数据库系统表详解: sysaltfiles 主数据库 保存数据库的文件 syscharsets 主数据库字符集与排序顺序 sysconfigures主数据库 配置选项 sysc

SQL Server 索引和表体系结构(二)

原文:SQL Server 索引和表体系结构(二) 非聚集索引 概述 对于非聚集索引,涉及的信息要比聚集索引更多一些,由于整个篇幅比较大涉及接下来的要写的"包含列的索引","索引碎片"等一些知识点,可能要结合起来阅读理解起来要更容易一些.非聚集索引和聚集索引一样都是B-树结构,但是非聚集索引不改变数据的存储方式,所以一个表允许建多个非聚集索引:非聚集索引的叶层是由索引页而不是由数据页组成,索引行包含索引键值和指向表数据存储位置的行定位器, 既可以使用聚集索引来为表或

SQL Server 索引和表体系结构(非聚集索引)

原文:SQL Server 索引和表体系结构(非聚集索引) 非聚集索引 概述 对于非聚集索引,涉及的信息要比聚集索引更多一些,由于整个篇幅比较大涉及接下来的要写的“包含列的索引”,“索引碎片”等一些知识点,可能要结合起来阅读理解起来要更容易一些.非聚集索引和聚集索引一样都是B-树结构,但是非聚集索引不改变数据的存储方式,所以一个表允许建多个非聚集索引:非聚集索引的叶层是由索引页而不是由数据页组成,索引行包含索引键值和指向表数据存储位置的行定位器, 既可以使用聚集索引来为表或视图定义非聚集索引,也

SQL Server 索引和表体系结构(包含列索引)

原文:SQL Server 索引和表体系结构(包含列索引) 包含列索引 概述 包含列索引也是非聚集索引,索引结构跟聚集索引结构是一样,有一点不同的地方就是包含列索引的非键列只存储在叶子节点:包含列索引的列分为键列和非键列,所谓的非键列就是INCLUDE中包含的列,至少需要有一个键列,且键列和非键列不允许重复,非键列最多允许1023列(也就是表的最多列-1),由于索引键列(不包括非键)必须遵守现有索引大小的限制(最大键列数为 16,总索引键大小为 900 字节)的要求所以引进了包含列索引. 正文

SQl Server误编辑删除数据,操作撤回

SQl Server误编辑删除数据,操作撤回 操作撤回 select?*?into?..?遇到大表咋办? 建议用? begin?tran ??update?...??--更新 ??select?...??--确认 ? ? commit?tran?--提交 或 rollback?tran?--回滚

Oracle\MS SQL Server Update多表关联更新

原文:Oracle\MS SQL Server Update多表关联更新 一条Update更新语句是不能更新多张表的,除非使用触发器隐含更新.而表的更新操作中,在很多情况下需要在表达式中引用要更新的表以外的数据.我们先来讨论根据其他表数据更新你要更新的表   一.MS    SQL    Server   多表关联更新      sql server提供了update的from 子句,可以将要更新的表与其它的数据源连接起来.虽然只能对一个表进行更新,但是通过将要更新的表与其它的数据源连接起来,就

SQL Server数据库、表、数据类型基本概念

一.SQL Server的数据存储结构 SQL Server是一个数据库管理系统,需要以有效方式存储高容量数据.要更好地理解SQL Server处理数据的方式,就需要了解数据的存储结构. 1.文件类型 数据库在磁盘上是以文件为单位存储的,由数据文件和事务日志文件组成.一个数据库至少应该包含一个数据文件和一个事务日志文件. 主数据文件:主数据文件包含数据库的启动信息,指向数据库中的其他文件,每个数据库都有一个主数据文件(有且只有一个),推荐文件扩展名是.mdf: 次要(辅助)数据文件:除主数据文件