null是什么意思(女生说nullnull是什么意思)

什么是数据库?大家都有过以下经历吧?收到曾经为自己诊治过的牙医寄来的明信片,上面写着“距上次检查已有半年,请您再来做个牙齿健康检查”。在生日的前一个月,收到曾入

null是什么意思(女生说nullnull是什么意思)

什么是数据库?

大家都有过以下经历吧?

收到曾经为自己诊治过的牙医寄来的明信片,上面写着“距上次检查已有半年,请您再来做个牙齿健康检查”。在生日的前一个月,收到曾入住过的旅店或宾馆发来的“生日当月入住优惠”的邮件或者明信片。在网上商城购物之后,收到内附“推荐商品列表”的邮件。

这可能是因为牙医、酒店或商场的经营者有顾客的最后就诊日期、生日、购买历史等信息,有能从大量汇总信息中快速获取所需信息(如你的住址或爱好)的设备(计算机系统)。我真的不知道手工完成同样的工作需要多长时间。

此外,现在所有地区的图书馆都配备了电脑,实现了图书的自动查询。通过使用这个系统,你可以通过搜索书名或出版年份快速找到你想借的书的位置以及它是否被借出。正是因为有了可以保存书名、出版年份、存放地点、借阅情况等信息,并且可以按需查询的设备,这一切才成为可能。

这样就保存了大量的数据,通过计算机处理可以高效访问的数据集就叫做数据库(DB)。将姓名、地址、电话、邮箱、爱好、家庭构成等数据保存到数据库中,随时可以快速获取想要的信息。

数据库管理系统

用于管理数据库的计算机系统称为数据库管理系统(DBMS)。为什么要用一个特殊的系统(DBMS)来管理数据?

当我们用计算机管理数据时,我们通常使用一个文本文件或Excel之类的电子表格软件,这很简单。但也有不足之处。下面举几个有代表性的例子。

无法多人共享数据

通过共享设置,多个用户可以在线阅读或编辑连接到网络的计算机中存储的文件。但是,当用户打开文件时,其他用户不能编辑它。如果是网店,一个用户买了商品,其他用户就买不到了。

无法提供操作大量数据所需的格式

如果想从几十万或者几百万的数据中瞬间得到想要的数据,就必须将数据保存为合适的格式,而文本文件和Excel工作表都无法提供相应的格式。

实现读写自动化需要编程能力

数据读取和编辑的自动化可以通过编写计算机程序(以下简称程序)来实现,但这必须建立在了解数据结构和具备一定的计算机编程技能的基础上。

无法应对突发事故

文件误删,硬盘故障等。,这使得它不可读,它可能会导致重要数据的丢失,并且数据可能很容易被他人读取或窃取。

DBMS可以克服这些缺点,实现多个用户同时安全简单地操作大量数据(图1-2)。这就是为什么我们必须使用数据库管理系统。

null是什么意思(女生说nullnull是什么意思)

图1-2 DBMS能够实现多个用户同时安全简单地操作大量数据图1-2 DBMS使多个用户能够同时安全简单地操作大量数据。

数据库管理系统的类型

DBMS主要根据数据的存储格式(数据库的类型)对数据进行分类。目前有五种。

1.分级数据库(HDB)

最古老的数据库之一,以分层结构(树形结构)显示数据。层次数据库曾经是数据库的主流,但是随着关系数据库的出现和普及,现在已经很少使用了。

2.关系数据库(RDB)

关系数据库是目前应用最广泛的数据库。数据库诞生于1969年,历史悠久。和Excel工作表一样,它使用由行和列组成的二维表格来管理数据,所以很容易理解(表1)。同时,它还使用特殊的SQL(结构化查询语言)来操作数据。

null是什么意思(女生说nullnull是什么意思)

表1 关系数据库中的数据表1关系数据库中的数据

这种类型的数据库管理系统被称为关系数据库管理系统(RDBMS)。有以下五种代表性的RDBMS。

Oracle Database:甲骨文公司的RDBMS(通常简称为Oracle)SQL Server :微软公司的RDBMSDB2:IBM 公司的RDBMSPostgreSQL:开源的RDBMSMySQL :开源的RDBMS

3.面向对象数据库

在编程语言中,有一种语言叫做面向对象语言。数据的收集和对数据的操作是在逐个对象的基础上管理的,因此得名。面向对象的数据库是用来存储这些对象的数据库。

4.XML数据库(XML数据库,XMLDB)

近年来,XMLB作为网络上的一种交互数据形式逐渐流行起来。XML数据库可以高速处理大量XML格式的数据。

5.键值存储(KVS)

这是一个简单的数据库,用于存储查询使用的主键和值的组合。具有编程语言知识的读者可以将其视为关联数组或散列。近年来,随着键值存储系统在Google等需要超高速查询大量数据的Web服务中的应用,逐渐受到人们的重视。

下面介绍如何使用SQL语言操作一个数据库管理系统,即关系数据库管理系统(RDBMS)。除非另有说明,下面提到的数据库和DBMS指的是RDBMS。

数据库结构

关系数据库管理系统的通用体系结构

使用RDBMS时,最常见的系统结构是客户机/服务器类型(C/S类型)(图1)。

null是什么意思(女生说nullnull是什么意思)

图1 使用RDBMS时的系统结构图1使用RDBMS时的系统结构

服务器是指用于接收来自其他程序的请求并相应地处理这些请求的程序(软件),或者安装有这种程序的设备(计算机)。继续在计算机上处理,并等待下一个请求。RDBMS也是一种服务器,可以从存储在硬盘上的数据库中读取和返回数据,也可以将数据更改为指定的内容。

相反,向服务器或安装程序的设备(计算机)发送请求的程序(软件)称为客户端。访问RDBMS管理的数据库并读写数据的程序称为RDBMS客户端。RDBMS客户机通过SQL语句向RDBMS服务器发送信息,例如它想要获取什么类型的数据,或者它想要进行什么类型的更改。RDBMS根据语句内容返回请求的数据,或者更新数据库中存储的数据。

客户端像客户端,服务器像受托人。因为两者的关系类似于受托人执行委托方发出的指令,所以得名。

这样,SQL语句就可以用来读写关系数据库了。

另外,RDBMS可以和它的客户机安装在同一台计算机上,也可以安装在不同的计算机上。这样,不仅两者可以通过网络相互关联,而且多个客户机可以访问同一个RDBMS(图2)。

null是什么意思(女生说nullnull是什么意思)

图2 通过网络可以实现多个客户端访问同一个数据库图2多个客户端可以通过网络访问同一个数据库。

客户端不需要使用相同的程序。只要能把SQL发给RDBMS,就能操作数据库。此外,多个客户端可以同时读写同一个数据库。

另外,RDBMS除了同时接收多个客户端的请求,还需要操作一个数据量很大的数据库,所以通常安装在性能比客户端更好的计算机上。当操作具有大量数据的数据库时,您还可以组合多台计算机。

虽然RDBMS的系统结构多种多样,但从客户端发送的SQL语句基本相同。

什么是SQL

SQL是一种为操作数据库而开发的语言。

它原本是为了提高数据库查询效率而开发的语言,现在不仅可以查询数据,还可以插入和删除数据。

国际标准化组织(ISO)为SQL制定了相应的标准,基于该标准的SQL称为标准SQL。

以前基于标准SQL的RDBMS很少,通常需要根据不同的RDBMS编写具体的SQL语句。因此,可以在Oracle中使用的SQL语句不能在SQL Server中使用,反之亦然。最近在支持标准SQL方面有了一些进展,希望准备学习SQL的人能从现在开始记住标准SQL的写法。

学习标准SQL可以用各种RDBMS写SQL语句。

SQL语句及其类型

由关键字、表名、列名等组成的语句(SQL语句)。用于描述操作的内容。关键词是指事先已经定义了含义或使用方法的英语单词。有各种含义的关键字,如“查询表”或“引用此表”。

根据RDBMS给出的不同种类的指令,SQL语句可以分为以下三类。

● DDL

DDL(数据定义语言)用于创建或删除存储数据的数据库和数据库中的表。DDL包含以下指令。

CREATE: 创建数据库和表等对象DROP: 删除数据库和表等对象ALTER: 修改数据库和表等对象的结构

●DML

DML(数据操作语言)用于查询或更改表中的记录。DML包含以下指令。

SELECT:查询表中的数据INSERT:向表中插入新数据UPDATE:更新表中的数据DELETE:删除表中的数据

●DCL

DCL(数据控制语言)用于确认或取消对数据库中数据的更改。此外,还可以设置RDBMS的用户是否有权限操作对象(数据库表等。)在数据库中。DCL包含以下指令。

COMMIT: 确认对数据库中的数据进行的变更ROLLBACK: 取消对数据库中的数据进行的变更GRANT: 赋予用户操作权限REVOKE: 取消用户的操作权限

根据SQL的功能不同,可以分为三类,其中DML是应用最广泛的一类。

SQL的基本编写规则

在编写SQL语句时,必须遵守一些规则。这些规则非常简单。让我们一个一个去了解他们。

■ SQL语句应以分号(;)结束

一条SQL语句可以描述一个数据库操作。在RDBMS中,SQL语句也是逐个执行的。

众所周知,我们用标点符号标注句尾,汉语句子以句号(。),英文以点号结尾(。),而SQL语句使用分号(;)结尾。

■ SQL语句不区分大小写。

SQL不区分关键字的大小写。例如,无论是写成select还是SELECT,解释都是一样的。表名和列名也是如此。

虽然您可以根据个人喜好选择大写或小写(或大小写混合),但为了更容易理解,您可以使用以下规则来编写SQL语句。

关键字大写表名的首字母大写其余(列名等)小写

但是插入表中的数据是区分大小写的。比如在操作过程中,数据计算机、计算机或计算机是不同的。

■常量以固定方式书写。

SQL语句往往需要直接写字符串、日期或数字。例如,编写将字符串、日期或数字等数据插入表中的SQL语句。

直接写在SQL语句中的字符串、日期或数字称为常量。该常数的写法如下。

当SQL语句包含一个字符串时,需要用单引号(')将该字符串括起来,如“abc”以标识它是一个字符串。

当SQL语句包含日期时,也有必要用单引号将其括起来。有许多种日期格式(“2010年1月26日”或“10/01/26”等)。),您也可以使用“2010-01/26”的格式,即“年-月-日”。

在SQL语句中写数字的时候,不需要使用任何符号,只要写一个1000这样的数字就可以了。

■单词需要用半角空大小写或新行分隔。

SQL语句中的单词应该用半角空或换行符分隔。下列未分隔的语句将导致错误,无法正常执行。

○创建表格产品

×创建表格产品

×创建表格产品

但是,不能使用全角空大小写作为单词分隔符,否则会得到错误和意外结果。

目录的创建。

在我们学习表查询和数据更改等SQL语句之前。我们需要首先创建学习这些SQL语句所需的数据库和表。

null是什么意思(女生说nullnull是什么意思)

表2 举例用的商品表表2商品清单举例

这张表是一家小商店出售的商品清单。商品数量不多,但我们可以把它看作是大量数据中的一部分(毕竟这只是为了学习SQL而创建的一个表)。0003号商品登记日期、0006 空号商品采购单价等白色内容,可以认为是店主疏忽,忘记录入。

我们可以看到表2由6列8行组成。最上面一行是数据的项目名称,真正的数据从第二行开始。

记下某事作为提醒

接下来,我们将逐步学习如何编写用于创建数据库和表的SQL语句。在此之前,请准备好学习环境(PostgreSQL)。

数据库的创建(CREATE DATABASE语句)

如前所述,在创建表之前,必须首先创建一个数据库来存储表。运行CREATE DATABASE语句在RDBMS上创建数据库。create语句的语法如下。

这里,我们只指定使用该语法所需的最少项目,其他各种项目需要在实际开发数据库时指定。

语法-1 CREATE DATABASE语句创建数据库

创建数据库& lt数据库名称>:;这里,我们命名数据库商店,然后执行清单1-1中的SQL语句。

清单1-1创建数据库商店的CREATE DATABASE语句

创建数据库商店;此外,数据库名、表名和列名应该使用半角字符(英文字母、数字和符号),这将在后面介绍。

表创建(CREATE TABLE语句)

创建数据库后,接下来我们使用CREATE TABLE语句在其中创建表。create语句的语法如下

1-2用于创建表的CREATE TABLE语句

创建表格& lt表名>:(& lt第1列>:& lt数据类型>:& lt此列所需的约束>:,& lt第2列>:& lt数据类型>:& lt此列所需的约束>:,& lt第3列>:& lt数据类型>:& lt此列所需的约束>:,& lt第4列>:& lt数据类型>:& lt此列所需的约束>:,...& lt此表的约束1 >:,& lt本表的约束2 >:,……);这个语法清楚地描述了我们想要创建一个包含:、& lt列2 >:的名称,...is :表格非常容易理解。必须指定每个列的数据类型(稍后描述),并且应该为必需的列设置约束(稍后描述)。约束可以在定义列时设置,也可以在语句末尾设置。

在数据库中创建表1-2中商品表(产品表)的表语句,如代码清单1-2所示。

清单1-2用于创建产品表的CREATE TABLE语句

创建表Product(Product _ id CHAR(4)NOT NULL,Product _ name VARCHAR(100)NOT NULL,product_type VARCHAR(32) NOT NULL,sale_price整数,purchase_price整数,regist_date日期,主键(Product _ id));赋名规则

我们只能使用半角英文字母、数字和下划线(_)作为数据库、表和列的名称。例如,不能将product_id写成product-id,因为标准SQL不允许将连字符作为列名。$、#、?这样的符号也不能用作名称。

虽然有些RDBMS允许使用上述符号作为列名,但是只能在本RDBMS中使用,不能保证在其他RDBMS中也能使用。虽然你可能觉得限制有点多,但请遵守规则,使用半角英文字母、数字和下划线(_)。

此外,名称必须以半角英文字母开头。以符号开头的名称很少见,但有时您会遇到以数字开头的名称,如1product或2009_sales。虽然可以理解,但这在标准SQL中是禁止的。请使用符合规则的名称,如product1或sales_2009。

最后,不能在同一个数据库中创建两个同名的表,也不能在同一个表中创建两个同名的列。如果发生这种情况,RDBMS将返回一条错误消息。

接下来,根据上述规则,我们使用清单1-2中的CREATE TABLE语句创建表2中的商品表。该表名为Product,表中的列名如表3所示。

null是什么意思(女生说nullnull是什么意思)

表3 商品表和Product表列名的对应关系表3商品表和产品表列名的对应关系

指定数据类型

Product表中包含的列在CREATE TABLE Product()的括号中定义。列名右侧的INTEGER或CHAR等关键字用于声明列的数据类型,所有列都必须指定数据类型。

类型表示数据的类型,包括数字类型、字符类型和日期类型。每一列都不能存储与该列的数据类型不匹配的数据。声明为整数的列不能存储' abc '这样的字符串,声明为字符的列不能存储1234这样的数字。

数据类型很多,RDBMS之间差异很大。在实际根据业务需求创建数据库时,我们必须根据不同的RDBMS选择最合适的数据类型。学习SQL的时候,用最基本的数据类型就够了。下面介绍四种基本数据类型。

●整数型

指定存储整数而不能存储小数的列的数据类型(数值)。

●字符类型

CHAR CHARACTER的缩写,用于指定存储字符串的列的数据类型(字符类型)。您可以在括号中指定可以存储在该列中的字符串的长度(最大长度),如CHAR(10)或CHAR(200)。超出最大长度的字符串部分不能输入到此列中。不同的RDBMS有不同的长度单位,使用字符数和字节长度。

字节是计算机中的一个数据单位。一个字符通常需要1到3个字节来表示(取决于字符的种类和表达方式)。

该字符串作为固定长度的字符串存储在指定为CHAR的列中。所谓定长字符串,就是当存储在列中的字符串长度没有达到最大长度时,用半角空网格来弥补。例如,当我们在CHAR(8)类型的列中输入' abc '时,它将以' abc '的形式保存(abc后面有五个半角空方块)。

此外,尽管我们之前说过SQL不区分英文字母的大小写,但是存储在表中的字符串是区分大小写的。也就是‘ABC’和‘ABC’代表两个意思不同的字符串。

● VARCHAR类型

与CHAR类型一样,VARCHAR类型也用于指定存储字符串的列的数据类型(字符串类型),字符串的长度(最大长度)也可以由括号中的数字指定。但是,这种类型的列以可变长度字符串的形式保存字符串。定长字符串在字符数未达到最大长度时用半角空方格补足,而变长字符串则不同,即使字符数未达到最大长度也不会用半角空方格补足。例如,当我们在VARCHAR(8)类型的列中输入字符串“abc”时,我们保存字符串“abc”。

存储在此类型的列中的字符串与CHAR类型一样区分大小写。

特定SQL

在Oracle中使用VARCHAR2类型(Oracle中也有VARCHAR数据类型,但不推荐)。

●日期类型

指定用于存储日期(年、月、日)的列的数据类型(日期类型)。

特定SQL

除了年、月和日,Oracle中使用的日期类型还包含小时、分钟和秒。

约束条件的设置

Constraint是一个函数,除了数据类型之外,它还对存储在列中的数据进行限制或附加条件。在产品表中设置了两种约束。

产品表的产品id列、产品名称列和产品类型列的定义如下。

Product _ idchar (4)不为空,product _ namevarchar (100)不为空,product _ typevarchar (32)不为空,并且数据类型的右侧设置有NOT NULL约束。NULL是表示空白(无记录)的关键字。在NULL前加NOT表示不能输入空白,也就是必须输入数据(不输入任何东西都会出错)。

NULL这个词的意思是nothing或者空,NULL是使用SQL时常用的关键字。请记住它。

这样,产品表的Product _ id(商品编号)列、product_name(商品名称)列、product_type(商品类型)列都是必选项。

另外,在CREATE TABLE语句创建Product表之后,还有下面的描述。

PRIMARY KEY (product_id)这用于设置product_id列的主键约束。键是指定特定数据时使用的列的组合。键有很多种,主键是可以指定一行数据的B列。也就是说,如果将product_id列指定为主键,则可以通过该列检索具体的商品数据。

另一方面,如果在product_id列中输入了重复数据,则无法检索唯一的特定数据(因为无法确定唯一的数据行)。这样,您可以为列设置primary key约束。

表的删除(DROP TABLE语句)

前面所有的介绍都是关于产品表内容的创建。下面介绍一下删除表格的方法。删除表的SQL语句非常简单,只需要一条DROP TABLE语句。

语法-3删除表时使用的DROP TABLE语句

删除表格& lt表名>:;如果要删除Product表,只需编写如清单1-3所示的SQL语句。

清单1-3删除产品表

下降表产品;DROP在英语中的意思是“扔掉”和“抛弃”。需要注意的是,删除的表是无法恢复的。即使误删了表,也无法恢复。只能重新创建它,然后才能重新插入数据。

其实很多RDBMS都保留了恢复的功能,但是请你认为是恢复不了的。

如果不小心删除了重要的业务表,那将是一场悲剧。尤其是存储大量数据的表,恢复起来费时费力。请注意!

表定义的更新(ALTER TABLE语句)

有时候,好不容易创建了一个表,却发现少了几列。其实这个时候不需要删除重新创建表,只需要使用改变表定义的ALTER TABLE语句即可。ALTER在英语中是“改变”的意思。下面是这个语句的使用方法。

首先是添加列时使用的语法。

语法1-4用于添加列的ALTER TABLE语句

更改表格& lt表名>:添加列& lt>:的列定义;特定SQL

列不需要在Oracle和SQL Server中编写。

更改表格& lt表名>:添加& lt列>:;此外,在Oracle中同时添加多个列时,可以使用括号,如下所示。

更改表格& lt表名>:添加(& lt列>:,& lt列>:,……);例如,我们可以使用清单1-4中的语句将这样一个列Product _ name _ pinyin(商品名称(拼音))添加到Product表中,该表可以存储一个100位的可变长度字符串。

清单1-4添加了一个product_name_pinyin列,它可以存储一个100位的变长字符串。

DB2 PostgreSQL MySQLALTER表产品添加列Product _ name _ pinyin VARCHAR(100);OracleALTER表产品ADD(Product _ name _ pinyin varchar 2(100));SQL ServerALTER表产品ADD Product _ name _ pinyin VARCHAR(100);相反,用于删除表中的列的语法如下。

语法1-5删除列的ALTER TABLE语句

更改表格& lt表名>:删除列& lt列>:;特定SQL

列不需要在Oracle中编写。

更改表格& lt表名>:DROP & lt列>:;此外,在Oracle中同时删除多个列时,可以按如下方式使用括号。

更改表格& lt表名>:DROP(& lt;列>:,& lt列>:,……);例如,我们可以使用清单1-5中的语句删除之前添加的product_name_pinyin列。

清单1-5删除产品名称拼音列

SQL Server DB2 PostgreSQL MySQL alter表产品DROP列产品名称拼音;OracleALTER表产品DROP(Product _ name _ pinyin);与DROP TABLE语句一样,ALTER TABLE语句在执行后无法恢复。可以通过ALTER TABLE语句删除添加的列,也可以删除并重新创建所有表。

将数据插入产品表

最后,让我们尝试将数据插入表中。将数据插入产品表的SQL语句如清单1-6所示。

清单1-6将数据插入产品表的SQL语句

SQL Server PostgreSQL - DML:插入数据开始事务;————— ①插入产品值(' 0001 ','t恤','衣服',1000,500,' 2009年9月20日');插入到产品值中(“0002”,“打孔机”,“办公用品”,500,320,“2009年9月11日”);插入产品值(' 0003 ','运动t恤','衣服',4000,2800,NULL);插入产品值(' 0004 ','菜刀','厨具',3000,2800,' 2009-09-20 ');插入产品值(' 0005 ','高压锅','厨具',6800,5000,' 2009年1月15日');插入产品值(' 0006 ','叉子','厨房用具',500,NULL,' 2009-09-20 ');插入产品值(' 0007 ','清洁菜板','厨房用具',880,790,' 2008-04-28 ');插入产品值(' 0008 ','圆珠笔','办公用品',100,空,' 2009年11月11日');提交;特定SQL

不同的DBMS,清单1-6中的DML语句略有不同。

在MySQL中运行时,需要把BEGIN事务放在①中;改写成

开始交易;在Oracle和DB2中运行时,不需要使用①中的BEGIN事务;(请删除)。

您可以使用指令语句INSERT或insert row将表1-2中的所有数据插入到该表中。开头的BEGIN TRANSACTION语句是开始插入行的指令语句,结尾的COMMIT语句是确定插入行的指令语句。

怎么入门SQL?

近年来,与其他系统领域一样,数据库领域也取得了快速发展,应用范围不断扩大。不仅出现了具有新功能的数据库,而且操作的数据量也大幅增加。

估计以后会有很多读者逐渐积累各种领域、各种规模的系统开发经验(或者可能已经开始着手开发了),到那时,所有的系统都需要用到数据库。他们使用的数据库,即使不是关系数据库,也必须是基于关系数据库的数据库。从这个意义上说,如果掌握了关系数据库和SQL,就可以成为任何系统开发都需要的数据库专家。

下面很好的介绍一下SQL,介绍了现在最流行的数据库——关系数据库,这也是了解其他数据库的基础。在系统领域,数据库通常指的是关系数据库,其重要性可见一斑。

null是什么意思(女生说nullnull是什么意思)

null是什么意思(女生说nullnull是什么意思)

日本知名数据库工程师写给初学者的实用指南!107张图表+209段代码+88个法则,让菜鸟完美进阶!基于标准SQL编写,明示各RDBMS(PostgreSQL/DB2/MySQL/Oracle/SQL Server)的差异!

本书是编程学习中的SQL和关系数据库系列。本系列侧重于初学者编程能力的培养,本书秉承了这一宗旨。这本书不仅可以用来自学,也可以作为大专院校和企业新人的培训用书。书中提供了大量的示例程序和详细的操作步骤说明,让你可以自己解决具体问题,提高编程能力。

此外,每章末尾都安排了练习,帮助你复习该章的知识点。练习的答案和解释包含在附录中。

本文摘自《SQL基础教程》(第二版)。

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。

作者:美站资讯,如若转载,请注明出处:https://www.meizw.com/n/209203.html

发表回复

登录后才能评论