专栏首页渔夫数据库基础知识

数据库基础知识

数据库基础知识

数据库和数据库管理软件

  • 数据库(database) 保存有组织的数据的容器(通常是一个文件或一组文件)。
  • 数据库管理系统(DBMS),又称为数据库软件,我们通过数据库软件来创建和管理数据库。

我们之所以常常把 DB 等价位 DBMS,是因为我们使用 DBMS 来访问 DB,DB 对我们来说是透明的。

一个数据库由一到多个表组成。

表(table):某种特定类型数据的结构化清单。

  • 结构化:表由列、行分割成一个个网格组成。
  • 特定类型:表的每条记录将有着相同项,不应将顾客的清单和订单的清单存储在一个表中。
  • 表名:数据库中的每个表都有一个名字,用来标识自己。此名字是唯一的, 这表示数据库中没有其他表具有相同的名字。不同数据库的表可以用相同的名字。

模式(schema):关于数据库和表的布局及特性的信息。

(column):表中的一个字段。所有表都是由一个或多个列组成的。每一列数据含义相同且属于不同条的用户,比如 1 列 id、2 列 姓名。

数据类型(datatype):所容许的数据的类型。每个表列都有相应的数据类型,它限制(或容许)该列中存储的数据。数据类型有利于统一规则进行排序。

(row):表中的一个记录。表中的数据是按行存储的,一条记录一个行。

主键

主键(primary key):一列(或一组列),其值能够唯一区分表中每个行。没有主键,更新或删除表中特定行很困难,因为没有安 全的方法保证只涉及相关的行。设计人员应当确保其设计的每一个表都有一个主键,以便以后的数据操纵和管理。

表中的任何列都可以作为主键,只要它满足以下条件:

  • 任意两行都不具有相同的主键值;
  • 每个行都必须具有一个主键值(主键列不允许NULL值)。

主键通常定义在表的一列上,但这并不是必需的,也可以一起使用多个列作为主键。在使用多列作为主键时,上述条件必须应用到构成主键的所有列,所有列值的组合必须是唯一的(但单个列的值可以不唯一)。


主键的最好习惯

除 MySQL 强制实施的规则外,应该坚持的

几个普遍认可的最好习惯为:

  • 不更新主键列中的值;
  • 不重用主键列的值;
  • 不在主键列中使用可能会更改的值。(例如,如果使用一个名字作为主键以标识某个供应商,当该供应商合并和更改其名字时,必须更改这个主键。)

SQL

SQL(发音为字母 S-Q-L 或 sequel)是结构化查询语言(Structured Query Language)的缩写。SQL 是一种专门用来与数据库通信的语言。

SQL有如下的优点。

  • SQL不是某个特定数据库供应商专有的语言。几乎所有重要的 DBMS都支持SQL,所以,学习此语言使你几乎能与所有数据库打交道。
  • SQL简单易学。它的语句全都是由描述性很强的英语单词组成,而且这些单词的数目不多。
  • SQL尽管看上去很简单,但它实际上是一种强有力的语言,灵活使用其语言元素,可以进行非常复杂和高级的数据库操作。

但是 SQL 虽然企图抽象出一个查询规范,但是事实上任意两个 DBMS 实现的 SQL 都不完全相同(大体相同)。

客户机—服务器软件

MySQL、Oracle以及Microsoft SQL Server等数据库是基于客户机—服务器的数据库。客户机—服务器应用分为两个不同的部分。服务器部分是负责所有数据访问和处理的一个软件。这个软件运行在称为数据库服务器的计算机上。

  • 服务器软件:与数据文件打交道。服务器软件为MySQL DBMS。你可以在本地安装的副本上运行,也可以连接到运行在你具有访问权的远程服务器上的一个副本。
  • 客户机软件:与用户打交道的软件。客户机可以是开发语言(如ASP、ColdFusion、JSP和 PHP)、程序设计语言(如 C、C++、Java)等。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 学习SQLite之前:什么是数据库,RDBMS指的是什么?

    数据库管理系统(英语:Database Management System,简称DBMS)是为管理数据库而设计的电脑软件系统,一般具有存储、截取、安全保障、备份...

    Fisherman渔夫
  • Java-直接内存 DirectMemory 详解

     下面是 《深入理解 Java 虚拟机 第三版》2.2.7 小节 关于 Java 直接内存的描述。

    Fisherman渔夫
  • 算法-合并两个有序链表

    版权声明: h...

    Fisherman渔夫
  • 关于windows完成端口(IOCP)的一些理解(三)

    系列目录 关于windows完成端口(IOCP)的一些理解(一) 关于windows完成端口(IOCP)的一些理解(二) 关于windows完成端口(IOCP)...

    范蠡
  • Zabbix监控调用map.get并且下载图文件

    #!/usr/bin/env python # -*- coding: utf-8 -*- # @Time : 17/8/28 上午9:09 # @Aut...

    98k
  • 数据蒋堂 | SQL是描述性语言?

    本文共1200字,建议阅读8分钟。 用SQL写代码时一般不用再关心变量、循环的具体动作,但要操心表、字段这些概念上的计算过程。

    数据派THU
  • 一个Java快速排序实现的调试

    Jerry Wang
  • 安装SQL Server 2005 遇到的问题及解决方法

    Windows无法启动SQL Server FullText Search(MSSQLSERVER)服务(位于本地计算机上) 错误 1075:服务不存在,或已...

    飞奔去旅行
  • DI/FS/ETL系统中数据准确性验证的羽量级实现

    DI :数据集成,数据集成系统是为用户访问多个有效的、异构的数据源提供统一的应用系统,从而使用户真正将注意力集中在他们想要的特定结果上,而不必关心如何获得这...

    张树臣
  • 面向对象(二十九)-MySql

    数据库是存储数据的集合的单独的应用程序。每个数据库具有一个或多个不同的API,用于创建,访问,管理,检索和复制所保存数据。

    雷潮

扫码关注云+社区

领取腾讯云代金券