SQL Server零基础学起你必会(一)图形化界面建表

  • 预备知识
  • 必备操作
    • 新建数据库
    • 删除数据库
    • 如何附加和分离数据库
      • 分离
      • 附加
    • 如何新建登录账户SQLServer权限简述
  • 数据库如何解决数据存储的问题
    • 表的相关数据
    • 实战
      • 建员工表
      • 建部门表
      • 建立联系
      • 连接展示
  • 利用SQL命令建表和约束
  • 六大约束
    • 实战
      • 指令合集
      • 实例流程
  • 关系
    • 实战
      • 指令合集
      • 实例流程
    • 查看数据关系的建立
    • 关系图
  • 总结
      • 主键
      • 外键
      • 先删主键表还是外键表
  • 相关知识链接

预备知识

  • 操作简单(我没说过)
    数据库语言是第四代语言,没有 f o r for for循环没有 i f if if,他写的是一个一个指令,不用写命令怎么实现,具体写增删改查实现的语言是 T L ‾ S Q L TL\underline{\hspace{0.5em}}SQL TLSQL
  • 数据结构和数据库的区别:
    数据库是从应用软件级别研究数据的存储和操作 (外存级别),数据结构是从系统软件级别研究数据的存储和操作 (内存级别)
  • 什么是连接:我们操作的 S Q L S e r v e r SQL Server SQLServer不是数据库而是可以访问后台的客户端软件,客户端工具和后台( O r a c l e   S Q L   D e v e l o p e r Oracle\,SQL\,Developer OracleSQLDeveloper)是分离的,客户端通过连接访问后台。
  • 有了编程语言为什么还需要数据库:
    对内存数据操作是编程语言的强项,但是对硬盘数据操作是编程语言的弱项,对硬盘数据的操作是数据库研究的核心问题。

数据库里面操作比较复杂时,将数据库调入内存,用编程语言进行操作再写入数据库

  • 初学者怎么学:
如何存储数据字段,记录,表,约束(主键 外键 唯一键 非空 c h e c k     d e f a u l t check\, \,\, default checkdefault)
如何操作数据 i n s e r t    u p d a t e    d e l e t e    T ‾ S Q L insert\,\, update\,\, delete\,\, T\underline{\hspace{0.5em}}SQL insertupdatedeleteTSQL存储过程 函数 触发器
如何显示数据 s e l e c t select select(重点的重点)

必备操作

. m d f .mdf .mdf数据文件, . L D F .LDF .LDF日志文件(什么时间地点进行了什么操作)

新建数据库

删除数据库

如何附加和分离数据库

分离


附加



如何新建登录账户SQLServer权限简述

  • Windows身份验证:本台电脑上无限制登录
  • SQL Server身份验证:其他设备上也可以无限制登录

    此处可修改登录方式:

    添加登录名(强制密码过期可去掉):

数据库如何解决数据存储的问题

表的相关数据

属性,列,字段:事物的某一个特征(如:姓名,年龄…)
元组,记录:字段的组合(比如一个特定的学生)

实战

建一个简单地公司员工表:

建员工表




建部门表

建立联系

一对多的关系下,联系一般在多的里面建立。


连接展示



总结:先建主键表再建外键表比较好。

利用SQL命令建表和约束

六大约束

约束:对一个表中属性操作的限制

项目Value
主键 ( P K ) (PK) (PK)约束不允许重复元素,避免数据冗余
外键 ( F K ) (FK) (FK)约束从语法上保证了本事物所关联的其他事物一定存在
c h e c k check check约束保证事物的属性在合法的范围内
d e f a u l t default default约束保证事物的属性一定会有一个值
u n i q u e unique unique唯一性约束不允许重复,但允许为空, S Q L S e r v e r SQLServer SQLServer不允许多列为空
  • 事物和事物之间的关联由外键体现
  • 外键不能来自另一个表的普通键,如果是普通键则可以一致,如果有重复的就无法判断来自于哪一个。
  • 不要用业务逻辑当主键,比如用户名,因为用户名可以改,加一些额外的操作,比如重新编个号。
  • 外键可以有多个,主键只可以有一个

实战

下面建一个简单的学生表,快跟着敲一遍:

指令合集

功能操作图例
建表 c r e a t e    t a b l e + 表 名 create\,\, table+表名 createtable+
主键 p r i m a r y    k e y primary\,\,key primarykey
约束条件 c h e c k ( . . .   a n d   . . . ) check(... \,and\, ...) check(...and...)
n o t    n u l l not \,\,null notnull非空
n v a r c h a r ( 100 ) nvarchar(100) nvarchar(100) n n n表示国际化支持汉字, v a r y vary vary变量, c h a r char char表示字符, ( 100 ) (100) (100)表示最大容量
d e f a u l t ( 默 认 值 ) default(默认值) default()默认为 . . . ... ...
i n s e r t insert insert插入 i n s e r t    i n t o + insert\,\, into+ insertinto+表名 + + +(需添加的列) v a l u e s + values+ values+(添加的信息)

数据库中单引号里面是字符串,双引号里是数据的名字

实例流程


我们会遇到这样的问题,老代码运行完后新代码加进去会报错,显示已存在

  • 如果是单独的指令可以
  • 如果是表内进行了新的修改,需添加:
IF OBJECT_ID('student') IS NOT NULL
DROP TABLE student

运行新表时带着该代码一起运行即可

  • n o t    n u l l not\,\, null notnull:默认 n u l l null null,用户不给该字段赋值,则字段默认值为 n u l l null null
create table dept2
(
dept2_id int primary key,
dept2_name nvarchar(100) not null,
dept2_address nvarchar(100)
)
create table emp2
(--不能写成{
emp2_id int constraint pk_id_hahaha primary key,--定义主键同时定义了名字
emp2_name nvarchar(20) not null ,
--n表示国际化支持汉字,vary变量,char表示字符,(20)最大20个
emp2_sex nchar(1),
dept2_id int constraint fk_dept_id_heihei foreign key references dept2(dept2_id),--列名,类型,约束,约束的名字,外键约束,外键是哪个表的
)
IF OBJECT_ID('student') IS NOT NULL
DROP TABLE student
create table student
(
student_id int primary key,
student_sal int check (student_sal>1000 and student_sal<8000),
student_sex nvarchar(2) default('男'),
student_name nvarchar(200) unique 
)
insert into student(student_id,student_sal,student_name) values (1,2000,'王五');
insert into student values (2,4000,'女','张三')
insert into student values (3,6000,'男','李四');

和约束的关系
黄金三句:

  • 数据库通过表来解决事物的存储问题
  • 数据库通过约束来解决事物取值的有效性和合法性问题
  • 建表的过程就是制定事物属性及其事物属性各种约束的过程

关系

  • 定义:表和表之间的联系
  • 实现方式:通过不同形式的外键来表示表和表的不同关系
  • 假设是表A和表B
分类Value
一对一可以把表A的主键充当B的外键,也可以把表B的主键充当表A的外键
一对多把表A的主键添加到表B来充当外键,或者说在多的一方添加外键
多对多必须通过单独的一张表来表示

实战

建立班级,学生,课程的具有多对多关系的表:
班级一张表,教师一张表,班级和教师的关系也是一张表。

指令合集

功能操作图例
约束及约束的命名 c o n s t r a i n t    + 命 名 constraint\,\, +命名 constraint+
外键及来源表格 f o r e i g n    k e y    r e f e r e n c e s foreign\,\, key\,\, references foreignkeyreferences

实例流程

--班级表
create table class
(
class_id int primary key,
class_num int not null,
class_name nvarchar(100)
)
--教师
create table teacher
(
teacher_id int primary key,
teacher_name nvarchar(200)
)
drop table class_teacher_mapping--没写完可以加这句话
--第三张表格,来模拟班级和教师的关系
create table class_teacher_mapping
(class_id int constraint fk_class_id foreign key references class(class_id),
teacher_id int foreign key references teacher(teacher_id),
course nvarchar(20),
constraint pk_class_id_teacher_id primary key (class_id,teacher_id,course)
)

查看数据关系的建立

关系图

总结

  • 数据库研究的是外存
  • 图灵证明了用顺序,选择,循环可以解决一切问题, S Q L S e r v e r SQLServer SQLServer用的是纯命令,没有流程,把顺序,选择和循环给删掉了,可以用可流程控制的 T L   S Q L ( 无 法 跨 平 台 ) TL\,SQL(无法跨平台) TLSQL()解决或者用高级语言对数据进行处理,再写入数据库
  • 数据库的所有操作都可以简化成增删改查的操作
  • (字段)表示一个特征,一(记录)表示这个事物,表示的是同一个事物的集合

主键

  • 主键:能唯一标识事物的一个字段,主键不允许修改,修改可能会出现重复。
  • 主键通常是整数,不建议用字符串(如果主键是用于集群式服务,才可以用字符串)
  • 主键通常 不允许修改,除非被本记录删除
  • 主键不要定义成 i d id id,而要定义成表名 I d Id Id或者表名_id
  • 要用代理主键,不要用业务主键,通常都是单独添加一个整型的编号充当主键字段

外键

  • 外键:如果一个表中若干字段来自另外若干表的主键或唯一键
  • 外键通常来 自另外表的主键 而不是唯一键,因为唯一键可能为 n u l l null null
  • 外键不一定来自另外的表,也可能来自本表的主键,如下图员工上司表,每个员工的上司也属于员工
  • 含有外键的表叫外键表,外键字段来自的那一张表叫做主键表

先删主键表还是外键表

  • 先删外键表,否则会报错

相关知识链接

SQL Server零基础学起你必会(一)图形化界面建表
SQL Server零基础学起你必会(二)表和约束概念详解,用SQL命令建表和约束
SQL Server零基础学起你必会(三)九种简单查询【史上最全】
数据库入门(一)范式理解:1NF,2NF,3NF,BCNF,4NF详析
数据库 SQLServer 视频教程全集(99P)| 22 小时从入门到精通
数据库知识点
一个小时上手SQL
sql语句,你肯定会听懂的
(重要顺序从上到下)

更多推荐

【数据库】SQL Server零基础学起你必会(一)图形化界面建表