欢迎光临散文网 会员登陆 & 注册

[C#学习笔记24]T-SQL创建数据库、数据表、CRUD、检查约束、外键约束

2020-08-30 16:34 作者:技术龙的传人  | 我要投稿

打开数据库,新建查询,编写操作数据库的代码

基于T-SQL创建数据库

    数据库(课程管理系统数据)、课程表(保存课程信息)、课程分类表(课程分类信息)、讲师表

系统数据库:

    master数据主要用来管理其他数据库的信息

    model数据库:模板数据

用户数据库:

    数据文件:

        主数据文件,一个数据库有且仅有一个主数据文件。mdf扩展名

        次要数据文件,根据需要添加多个并且分布到不同的磁盘路径。ndf扩展名

        日志文件,有且至少有一个。ldf扩展名

    学习T-SQL脚本最大好处是在数据库兼容性上更强大。

特捏注意:drop关键字使用开发中要特别小心,万一删错了无法挽回。

给数据表添加约束是为了保证数据的有效性。LoginPwd varchar(18) check(len(LoginPwd)>=6 and len(LoginPwd)<=18) not null,

    检查约束就是添加数据的时候,会检查这个字段的值,是否在约束的条件范围之内

    主键约束要求不能重复

        标识列:这个列必须是唯一的,系统自动生成,不用显式的插入数据

        格式:identity(标识种子,增值量)     identity(100,1)

        常见错误:标识列显式给值;插入列的个数和对应的值个数不一致

标识列在删除数据后,不会自动补充,也没必要考虑这个

insert update delete select基本语法熟练运用

默认约束:给字段加入默认值

唯一约束

外键约束:两个数据表之间有关系,但没有约束,在添加数据时会造成数据不一致的情况

    作用:1)外键表中添加数据时,如果和主表建立关系,则会自动的从主表中对应的字段中查询数据是否一致,不一致会拒绝.保证数据一致.

            2)方便管理数据

使用innser join 实现联合查询

数据库关系图的建立(双击数据库关系图——是——右键新建——添加所有数据表)

练习代码如下:

--首先要指向操作的数据库

use master

go   --批处理的结束标志


if exists(select * from sysdatabases where name='CourseManageDB')

drop database CourseManageDB

go


create database CourseManageDB

on primary

(

name='CourseManageDB_data',

filename='D:\DB\CourseManageDB_data.mdf',--主数据文件

size=10MB,

filegrowth=1MB

)

,

(

name='CourseManageDB_data1',

filename='D:\DB\CourseManageDB_data1.ndf',--次要数据文件

size=10MB,

filegrowth=1MB

)

log on

(

name='CourseManageDB_log',

filename='D:\DB\CourseManageDB_log.ldf',--日志文件

size=10MB,

filegrowth=1MB

)

go

--指向要操作的数据

use CourseManageDB

go

--创建讲师表

if exists(select * from sysobjects where name='Teacher')

drop table Teacher

go

create table Teacher

(

-- TeacherId int primary key, --讲师编号,主键

    TeacherId int identity(100,1) primary key,--自增主键用identity(基数,增量)

LoginAccount varchar(50) not null,--登录帐号

LoginPwd varchar(18) check(len(LoginPwd)>=6 and len(LoginPwd)<=18) not null,

TeacherName varchar(20) not null,

PhoneNumber char(11) not null,

-- NowAdress nvarchar(100)

    NowAdress nvarchar(100) default('地址不详')--地址添加默认值

)

go


--课程分类表

if exists(select * from sysobjects where name='CourseCategory')

drop table CourseCategory

go

create table CourseCategory

(

CategoryId int identity(10,1) primary key,

CategoryName varchar(20) not null

)

go

--课程表

if exists(select * from sysobjects where name='Course')

drop table Course

go

create table Course

(

CourseId int identity(10,1) primary key,

CourseName varchar(20) not null,

CourseContent nvarchar(500) not null,

ClassHour int not null,

-- Credit int not null--学分

Credit int check(Credit>=1 and Credit<=30) not null,--学分约束范围1~30分

CategoryId int references CourseCategory(CategoryId) not null,--外键约束

TeacherId int references Teacher(TeacherId)

)

go

--根据需要添加其他数据表

--添加测试数据

--insert into Teacher(TeacherId,LoginAccount,LoginPwd,TeacherName,PhoneNumber)

--values(10000,'Dragon Yao','012345','姚小龙','1234567890'),

--(10001,'Dragon Li','111111','李小龙','1234567891'),

--(10002,'Dragon Liang','222222','梁小龙','1234567892')


--insert into Teacher(TeacherId,LoginAccount,LoginPwd,TeacherName,PhoneNumber)

--values(10000-1,'Dragon Yao','012345','姚小龙','1234567890')--主键不能


--当启用标识列的时候,不能显式的插入值,应该改成下面的方法

insert into Teacher(LoginAccount,LoginPwd,TeacherName,PhoneNumber)

values('Dragon Yao','012345','姚小龙','1234567890'),

('Dragon Li','111111','李小龙','1234567891'),

('Dragon Liang','222222','梁小龙','1234567892')

insert into Teacher(LoginAccount,LoginPwd,TeacherName,PhoneNumber,NowAdress)

values('Dragon Yao1','012345','姚小龙','1234567890','西安')

select * from Teacher 

--删除后主键值还会顺延自增,不受影响,全部删除也不会从头自增

delete from Teacher where TeacherId=102

delete from Teacher--全部删除

update Teacher set LoginPwd='000000',TeacherName='新老师' where TeacherId=104--修改

--添加课程分类

Insert Into CourseCategory(CategoryName)values('.Net'),('Java'),('C++')

select * from CourseCategory


--添加课程信息

Insert into Course(CourseName,CourseContent,ClassHour,Credit,CategoryId,TeacherId)

values('C#01','OOP/SQL',500,10,10,100)

Insert into Course(CourseName,CourseContent,ClassHour,Credit,CategoryId,TeacherId)

values('C#02','WinForm',500,10,11,101)


select * from Course

select CourseName,CourseContent,ClassHour,Credit,Course.CategoryId,CategoryName from Course

inner join CourseCategory on Course.CategoryId=CourseCategory.CategoryId

{

    name='CourseManageDB_log',

    filename='D:\DB\CourseManageDB_log.ldf,--日志文件名

    size=10MB,

    filegrowth=1MB

}

go




[C#学习笔记24]T-SQL创建数据库、数据表、CRUD、检查约束、外键约束的评论 (共 条)

分享到微博请遵守国家法律