sqlserver2016(基础概念与常用T-SQL语句)

数据库常用对象

  • 表(存放数据和表示关系的主要形式)
  • 视图(一个或多个表生成的引用表,也成为虚拟表,是查询数据的一种方式,里面不是存放数据,而是存放其查询定义。打开视图的时候就是执行查询定义然后产生相应数据)
  • 索引(对表的某个列或者列的组合进行排序,通过搜索索引表达式的值,可以实现对该类数据的快速访问)
  • 约束(用于保障数据的一致性和完整性)
  • 存储过程(一组完成特定功能的SQL语句组合,经过编译之后以名称的形式存储在SQLserver服务器端的数据库中,用户通过指定存储过程名称来执行)
  • 触发器(一种特殊类型的存储过程,在特定的事件发生时候触发执行)

系统数据库

  • 数据库在安装的时候默认会有4个默认数据库
  • master数据库(记录所有系统级的信息,数据库文件位置,初始化信息,master数据库如果无法使用,则SQLServer启动失败)
  • model数据库(所有数据库的模板,可以对其进行更改)
  • msdb数据库(用于计划报警和作业等)
  • tempdb数据库(临时数据库,用于保存临时对象和中间结果集)

文件和文件组

 文件:

  • 主数据文件(.mdf),一个
  • 次要数据文件(.ndf),0个或者多个
  • 日志文件(.ldf),一个或者多个
     文件组:
  • 主文件组(主数据文件、没有明确分配的、系统表分配在这里)
  • 用户定义文件组(CREAT DATEBASE 和 ALTER DATEBASE 语句中使用FILEGROUP指定的任何文件组)
  • 默认文件组(一次只有一个文件组作为默认文件组,如果没有指定,那么就是主文件组是默认文件组)
     设计规则:
  • 文件只能是一个文件组成员
  • 文件或则文件组只能有一个数据库使用
  • 数据和日志不能放一起,也就是说不能同属于一个文件或者一个文件组
  • 日志文件不是文件组的一部分,也就是说数据空间和日志空间是分开管理的。

数据库的创建

创建一个名为Student的数据库,其初始大小为5MB,最大大小为20MB,允许自动增长,按10%增长。日志文件初始大小为2MB,最大大小为8MB,按1MB增长。数据文件和日志文件的存放位置为SQL Server的数据库文件夹“C:\SQL练习”。

CREATE DATABASE Student
	ON --存放数据库的数据文件在之后定义
	(
		NAME='Student_DATA',--只是T-SQL中使用的逻辑文件名
		FILENAME='C:\SQL练习\Student.mdf',--存放路径和操作系统中实际文件名
		SIZE=5MB,
		MAXSIZE=20MB,
		FILEGROWTH=10%
	)
	LOG ON
	(
		NAME='Student_log',
		FILENAME='C:\SQL练习\Student.ldf',
		SIZE=2MB,
		MAXSIZE=8MB,
		FILEGROWTH=1MB
	)
GO

删除数据库

DROP DATABASE Student 

数据库的分离与附加操作

略,但是记住:一个数据库一旦被分离成功,从SQL Server角度来看,与删除这个数据库没有什么区别。不同的是,分离后的数据库的存储文件仍旧存在,而删除后的数据库的存储文件不再存在。

表结构

  • 组成表的各列的名称及数据类型,统称为表结构

记录

  • 每个表包含了若干行数据,它们是表的“值”。表中的一行称为一个记录。因此,表是记录的有限集合。

字段

  • 每个记录由若干个数据项构成。将构成记录的数据项称为字段。例如,表6-1中的表结构为(学号,姓名,性别,出生日期,专业,总学分,备注),包含7个字段,由8个记录组成。

空值

  • 空值(NULL)通常表示未知、不可用或将在以后添加的数据。若某列允许为空值,则向表中输入记录时可不为该列给出具体值;若某列不允许为空值,则在输入时必须给出具体值。

关键字

  • 如果表中记录的某个字段或字段组合能唯一标识记录,则称该字段或字段组合为候选关键字

主键

选定其中一个为主关键字(Primary Key),也称为主键。用来唯一标识记录。

外键

“子表”中对应于“主表”的列,在“子表”中称为外键或引用键。它的值要求与主表的主键相对应。外键用来强制参照完整性。一个表可以有多个外键。

数据类型

设计表

  • 表的命名采用Pascal命名规则,应以完整英文单词命名,避免使用缩写,英文单词采用单数形式。
  • 字段命名也采用Pascal命名规则。必须有一个主键。表的自增主键统一用ID。表的唯一主键名称统一用“表名+ID”,如StudentID。

约束

  • 约束是SQL Server提供的自动保持数据库完整性的一种方法,它通过限制字段中的数据、记录中的数据和表之间的数据来保证数据的完整性。在SQL Server中,对于基本表的约束分为列级约束和表级约束两种。

创建表

用CREATE TABLE语句创建数据库StudentManagement中的Course表,要求课程编号为主键,课程名字唯一,每门课的学分默认为4。

USE StudentManagement
GO
CREATE TABLE Course
(
    CourseID char(6) PRIMARY KEY,
    CourseTypeID char(2),
    CourseName nvarchar(30) UNIQUE,
    Info nvarchar(50),
    Credits numeric(2,0) DEFAULT(4),
    Time numeric(3,0),
    PreCourseID char(6),
    Term numeric(1,0)
)

用CREATE TABLE语句创建数据库StudentManagement中的SelectCourse表,记录学生选课的信息,并设置外键约束

USE StudentManagement
GO
CREATE TABLE SelectCourse
(
    SelectCourseStudentID char(10) FOREIGN KEY(SelectCourseStudentID) REFERENCES Student(StudentID),
    SelectCourseID char(6) FOREIGN KEY(SelectCourseID) REFERENCES Course(CourseID),
    Score numeric(3,1),
    PRIMARY KEY(SelectCourseStudentID,SelectCourseID)
)

修改表

  • 使用ADD子句添加列


    使用ALTER TABLE语句向Student表中增加StudentBonus列


    ALTER TABLE <表名> ADD <列名> <数据类型>[<完整性约束>]
ALTER TABLE Student ADD StudentBonus tinyint
  • 使用ADD CONSTRAINT子句添加约束


    对Student表中的Name列设置唯一约束


    ALTER TABLE <表名> ADD CONSTRAINT <约束名> 约束[<列名表>]
ALTER TABLE Student ADD CONSTRAINT Name01 UNIQUE(Name)
  • 使用ALTER COLUMN子句修改列属性


    Student表中Email列的长度改为50,并允许为空


    ALTER TABLE <表名> ALTER COLUMN <列名> <数据类型> [NULL|NOT NULL]
ALTER TABLE Student ALTER COLUMN Email varchar(50) NULL
  • 重命名列


    EXEC sp_rename ‘表名.原来的列名’, ‘更改后的列名’

EXEC sp_rename 'Student.Name', 'StudentName
  • 使用DROP COLUMN子句删除列


    删除Student表中的StudentBonus列。


    ALTER TABLE <表名> DROP COLUMN <列名>
ALTER TABLE Student
DROP COLUMN StudentBonus
  • 使用DROP CONSTRAINT子句删除约束


    删除Student表中Name列上的唯一约束


    ALTER TABLE <表名> DROP CONSTRAINT <约束名>
ALTER TABLE Student DROP CONSTRAINT Name01
  • 删除表
DROP TABLE TestDelete

向表中插入数据

  • 向Class表中添加4个班级记录
USE StudentManagement
GO
INSERT Class(ClassID, ClassDepartmentID, ClassTeacherID, ClassName, Amount)
    VALUES('20191101', '11', '20101123', '计算机1901', 30)
INSERT Class
    VALUES('20192602', '26', '20122652', '自动化1902', 40)
INSERT Class
VALUES('20193101 ','31','20113145', '哲学1901',60)
INSERT Class
    VALUES('20196202', '62', '20136238', '经贸1902', 40)
GO
SELECT * FROM Class
GO

修改表中数据

  • 将Class表中班级编号为“20196202”的班级名称改为“外经贸1902”,人数改为30。
USE StudentManagement
GO
UPDATE Class
    SET ClassName ='外经贸1902', Amount=30
    WHERE ClassID='20196202'
GO
SELECT * FROM Class
GO

删除表中记录

  • 删除Student表中姓名为“王一鸣”的学生的记录
USE StudentManagement
GO
DELETE Student
    WHERE StudentName='李一民'
Go
SELECT * FROM Student
GO

猜你喜欢

转载自blog.csdn.net/qq_45549336/article/details/108037262