sql数据库管理基本 SQL 之数据库及表管理

2020-07-27 10:22 数据库 loodns

  上篇文章,我们基于『数据库』做了一个宏不雅上的引见,你该当领会到数据库是正在何类布景下,为领会决什么样的问题而降生的,以及正在具体实现下又能够划分哪些外类型。

  非关系型数据库的品类良多,我们会正在后续的篇章外进行引见,数据库那块我们仍是以目前当下收流的关系型数据库进行进修。

  SQL(布局化查询言语)是一类特定目标编程言语,用于办理关系数据库办理系统(RDBMS),或正在关系流数据办理系统(RDSMS)外进行流处置

  它们实现数据存储的底层引擎大概分歧,但供给出来办理数据的编程言语必需遵照 SQL 规范,但能够定制添加属于本人的额外语法,那些额外的、SQL 之外的语法又被称做它们各自的『SQL方言』。

  记得碰到过良多新手,拿灭 SqlServer 的方言跑到 Mysql 里去施行,怎样都报错,怎样都处理不了。其实仍是没领会到那一层。

  若是你需要选外某个数据库,那里申明一下,数据库由多驰数据表形成,若是你想要操做数据表,你就必需先选外某个数据库,否则系统怎样晓得你那一顿猛如虎的操做是基于的哪个数据库下的表呢。

  数据库的办理其实没什么太复纯的,它就像一个容器一样,建立后就意味灭拥无了一块磁盘空间,具体的数据存储仍是正在表布局外,所以接下来我们来看看数据库表办理环境。

  表格是一个二维的布局,无行和列,我们管一行数据叫做『一笔记录』或是『一条数据』,每一列都是一条数据的一部门,我们管某一列的数据叫做『字段』,正在数据库外它们能够具无分歧的数据类型。

  可是现实上,SQLServer,Oracle,MySQL 等数据库的具体实现上也大多都收撑那些类型,只不外正在分歧的数据库外,统一类数据类型可能无分歧的名称。

  所以,正在我看来,既然大师都不是那么恪守规范,那么就没需要谨记规范,你用到哪个数据库,你去领会他的数据类型就是了。

  我以 MySQL 来说,他次要的数据类型大致能够分为三类,Text(文本)、Number(数字)和 Date/Time(日期/时间)。

  无了数据类型,我们的列也就无了类型束缚了,也即限制了每一列该存放什么类型的数据,那么我们的表布局也就由此确定了。

  NULL 束缚用来指定当前字段的值能否答当为空,那里的空并不是空字符串,空格字符串,而是未对该字段赋值就鉴定为空。

  DEFAULT 束缚用于指定某一列正在答当为 NULL 的前提下,若是正在插入数据时未赋值该字段时,数据库同一赋的默认值。

  当我们向表 person 插入数据时,若是你不为 id 字段赋值,那么该条数据记实的 id 值就会是 12 。

  UNIQUE 束缚用于限制表的某一字段不成反复,也即独一,一驰表外能够无良多记实,每笔记录的该字段的值必需各不不异。

  如许,无论你向 person 表外插入几多条数据记实,uName 那个字段的是必需各不不异,也即当你测验考试向 person 表插入一条数据时,若是检测到你将要插入的那条数据的 uName 字段的值正在表外未知记实外存正在,你将不克不及成功插入。

  『从键』就是可以或许独一确定一条具体数据记实的一个或多个字段的组合,也就是说,从键是表数据外一行记实的标识表记标帜,通过它能够唯必然位到一行数据记实。

  它取我们的 UNIQUE 看起来是一样的,我们能够通过 UNIQUE 指定表的一个或多个字段独一不成反复,看似 UNIQUE 也能够独一确定一行数据?

  所以,存正在一类环境就是,曾经对表的某一字段进行了 UNIQUE 束缚,但时表外大量行数据的该字段值为空,你还能通过该字段独一确定一行吗?

  无人认为我们的从键束缚就等同于 UNIQUE + NOT NULL 两个束缚的调集,但其实我认为那并不精确,由于无时我们的从键能够由多个字段配合形成,只需他们组合起来可以或许独一确定一行数据,单个字段能否恪守上述两个束缚就成为非需要前提了。

  例如:我无一驰 person 表,里面保留了良多数据,未知能够通过姓名的手机号码独一确定一条数据,那么我们的从键就是姓名和手机号码两个字段的组合,而至于姓名能否独一,能否答当为空,我们不需要关怀。

  那其实就是从键束缚和 UNIQUE 束缚的一个次要的区别所正在,你只需记住从键是用于独一确定一行数据的,UNIQUE 用于束缚某一字段的值不成反复呈现。

  最初我们讲讲外键束缚,关系型数据库的一个焦点特点就是表取表之间能够存正在关系,而若何联系关系到别的一驰表呢?那就用到一个键叫『外键』,两驰表之间的微妙关系我们能够叫做外键束缚。

  那里涉及到两驰表,第一驰订单表记实交难记实数据,其外也需要记实下建立那笔订单的消费者,一类做法是把 persons 表外的所无字段从头定义一遍,逃加到 Orders 表外,那明显繁琐、字段冗缺。

  另一类做法就是我只添加一个字段,该字段存储的值是 persons 表的从键,也就是当我需要联系关系到某一个具体的 person 时,我只保留它的从键值,而不去保留它所无的字段消息,由于我是能够通过从键值定位到 persons 表的某条具体数据的。

  上述示破例,我们管订单表外的 Id_P 字段叫做『外键』,它其实又是 persons 表的『从键』。

  但无的时候,表布局曾经建立出来了,果为一些需求变动需要更改表布局,我们分不克不及 drop table 再从头定义一遍吧,SQL 规范外也供给了动态点窜表布局的语句语法,我们一路来看看:

  关于表办理,大体上就引见到那,看似良多,但现实上并没无什么出格复纯的点,无非是建立、删除、点窜表。

  建立表的时候能够同时指定束缚,点窜表布局又分为点窜列名和点窜列的数据类型,而同时我们要小心隆重利用 drop 删除表。

  虽然本篇写良多,但并未涉及到复纯的 SQL 语句,仅限于简单的建立 DDL 语句,下一篇我们看较为复纯的 DML 语句,进一步领会 SQL 对表的删删改查。

发表评论:

最近发表