零基础学SQL(1):初识数据库与SQL
零基础学SQL(1):初识数据库与SQL
⼀、初识数据库
数据库是将⼤量数据保存起来,通过计算机加⼯⽽成的可以 进⾏⾼效访问的数据集合。该数据集合称为数据库(Database,DB)。⽤来管理数据库的计算机系统称为数据库管理系统(Database Management System,DBMS)。
什么是数据库?
⼤家都有过下⾯这样的经历吧?
收到曾经为⾃⼰诊治过的⽛医寄来的明信⽚,上⾯写着“距上次检查已有半年,请您再来做个⽛齿健康检查”。
在⽣⽇的前⼀个⽉,收到曾⼊住过的旅店或宾馆发来的“⽣⽇当⽉⼊住优惠”的邮件或者明信⽚。
在⽹上商城购物之后,收到内附“推荐商品列表”的邮件。
这可能是因为⽛医、旅店或商城的经营者掌握了顾客上⼀次的就诊⽇期、⽣⽇和购买历史等信息,并且拥有能够从⼤量汇总信息中快速获取所需信息(⽐如你的住址或爱好)的设备(计算机系统)。如果利⽤⼈⼯完成同样的⼯作,真不知道要多长时间呢。
另外,现在所有地区的图书馆都配备了计算机,实现了图书的⾃动查询。使⽤该系统,可以通过检索书名或出版年份快速查出希望借阅的图书的所在位置,以及是否已经借出等信息。正是因为拥有了可以保存图书名称、出版年份以及保管位置和外借情况等信息,并且可以按需查询的设备,才使这⼀切成为可能。
像这样将⼤量数据保存起来,通过计算机加⼯⽽成的可以进⾏⾼效访问的数据集合称为数据库(Database,DB)。将姓名、住址、电话号码、邮箱地址、爱好和家庭构成等数据保存到数据库中,就可以随时迅速获取想要的信息了。
什么是数据库管理系统(DBMS)?
⽤来管理数据库的计算机系统称为数据库管理系统(Database Management System,DBMS)。为什么要使⽤专⽤系统(DBMS)来管理数据呢?
我们通过计算机管理数据的时候,通常使⽤⽂本⽂件或者Excel 那样的电⼦制表软件就可以完成了,⾮常简单。但也有不⾜。下⾯就举⼏个有代表性的例⼦。
1. ⽆法多⼈共享数据。保存在已连接⽹络的计算机中的⽂件,可以通过共享设定实现多个⽤户在线阅读或编辑。但是,当某个⽤户打开
该⽂件的时候,其他⽤户就⽆法进⾏编辑了。如果是⽹上商城的话,当某个⽤户购买商品的时候,其他⽤户就⽆法购买了。
2. ⽆法提供操作⼤量数据所需的格式。要想瞬间从⼏⼗万或者上百万的数据中获取想要的数据,必须把数据保存为适当的格式,但是⽂
本⽂件和Excel ⼯作表等⽆法提供相应的格式。
3.实现读写⾃动化需要编程能⼒。通过编写计算机程序(以下简称程序)可以实现数据读取和编辑⾃动化,但这必须以了解数据结构
为前提,还需具备⼀定的计算机编程技术。
4.⽆法应对突发事故。当⽂件被误删、硬盘出现故障等导致⽆法读取的时候,可能会造成重要数据丢失,同时数据还可能被他⼈轻易
读取或窃⽤。
DBMS 可以克服这些不⾜,实现多个⽤户同时安全简单地操作⼤量数据,这也是我们⼀定要使⽤DBMS 的原因。
1.1 DBMS的种类
DBMS 主要通过数据的保存格式(数据库的种类)来进⾏分类,现阶段主要有以下 5 种类型.
1. 层次数据库(Hierarchical Database,HDB)——“树形”结构
2. 关系数据库(Relational Database,RDB)——⾏列组成的⼆维表
3. ⾯向对象数据库(Object Oriented Database,OODB)——把数据以及对数据的操作集合起来以对象为单位进⾏管理,保存这些对
象。
4. XML数据库(XML Database,XMLDB)——XMLB 作为在⽹络上进⾏交互的数据的形式逐渐普及起来。XML 数据库可以对XML
形式的⼤量数据进⾏⾼速处理。
5. 键值存储系统(Key-Value Store,KVS),举例:MongoDB——这是⼀种单纯⽤来保存查询所使⽤的主键(Key)和值(Value)
的组合的数据库。具有编程语⾔知识的读者可以把它想象成关联数组或者散列(hash)。近年来,随着键值存储系统被应⽤到Google 等需要对⼤量数据进⾏超⾼速查询的Web 服务当中,它正逐渐为⼈们所关注。
在这5种中,关系数据库是现在应⽤最⼴泛的数据库。关系数据库在1969 年诞⽣,可谓历史悠久。和Excel ⼯作表⼀样,它也采⽤由⾏和列组成的⼆维表来管理数据,所以简单易懂。同时,它还使⽤专门的SQL(Structured Query Language,结构化查询语⾔)对数据进⾏操作。这种类型的 DBMS 称为关系数据库管理系统(Relational Database Management System,RDBMS)。
⽐较具有代表性的 RDBMS 有如下 5 种:
Oracle Database:甲⾻⽂公司的RDBMS
SQL Server:微软公司的RDBMS
DB2:IBM公司的RDBMS
PostgreSQL:开源的RDBMS
MySQL:开源的RDBMS
本⽂向⼤家介绍使⽤ SQL 语⾔的数据库管理系统,也就是关系数据库管理系统(RDBMS)的操作⽅法。
1.2 RDBMS的常见系统结构
使⽤ RDBMS 时,最常见的系统结构就是客户端 / 服务器类型(C/S类型)这种结构。
服务器指的是⽤来接收其他程序发出的请求,并对该请求进⾏相应处理的程序(软件),或者是安装了此类程序的设备(计算机)。在计算机上持续执⾏处理,并等待接收下⼀条请求。RDBMS 也是⼀种服务器,它能够从保存在硬盘上的数据库中读取数据并返回,还可以把数据变更为指定内容。
与之相对,向服务器发出请求的程序(软件),或者是安装了该程序的设备(计算机)称为客户端。
访问由RDBMS 管理的数据库,进⾏数据读写的程序称为RDBMS 客户端。RDBMS 客户端将想要获取什么样的数据,或者想对哪些数据进⾏何种变更等信息通过SQL 语句发送给RDBMS 服务器。RDBMS 根据该语句的内容返回所请求的数据,或者对存储在数据库中的数据进⾏更新。
客户端就如同委托⽅,⽽服务器就像是受托⽅。由于两者关系类似受托⽅执⾏委托⽅发出的指令,故⽽得名。
这样就可以使⽤SQL 语句来实现关系数据库的读写操作了。
另外,RDBMS 既可以和其客户端安装在同⼀台计算机上,也可以分别安装在不同的计算机上。这样⼀来,不仅可以通过⽹络使⼆者相互关联,还可以实现多个客户端访问同⼀个RDBMS。
1.3 数据库安装(必须学习)
本次学习⼤家可以选择使⽤阿⾥云数据库服务器或者本地安装数据库进⾏学习,在下⾯对应的学习教程中也给告诉了⼤家如何创建本次学习需要的数据库表和数据,所以⼤家必须使⽤⼀个⽅式安装数据库,才能完成后⾯学习。
1.3.1 阿⾥云MySQL服务器使⽤介绍
1.3.2 本地MySQL环境搭建⽅法介绍
⼆、初识SQL
2.1 概念介绍
数据库中存储的表结构类似于excel中的⾏和列,在数据库中,⾏称为记录,它相当于⼀条记录,列称为字段,它代表了表中存储的数据项⽬。
⾏和列交汇的地⽅称为单元格,⼀个单元格中只能输⼊⼀条记录。
SQL是为操作数据库⽽开发的语⾔。国际标准化组织(ISO)为 SQL 制定了相应的标准,以此为基准的SQL 称为标准 SQL(相关信息请参考专栏——标准 SQL 和特定的 SQL)。
完全基于标准 SQL 的 RDBMS 很少,通常需要根据不同的 RDBMS 来编写特定的 SQL 语句,原则上,本⽂介绍的是标准 SQL 的书写⽅式。
SQL 语句及其种类
SQL ⽤关键字、表名、列名等组合⽽成的⼀条语句(SQL 语句)来描述操作的内容。关键字是指那些含义或使⽤⽅法已事先定义好的英语单词,存在包含“对表进⾏查询”或者“参考这个表”等各种意义的关键字。
根据对RDBMS 赋予的指令种类的不同,SQL 语句可以分为以下三类。
1. DDL(Data Definition Language,数据定义语⾔) ⽤来创建或者删除存储数据⽤的数据库以及数据库中的表等对象。
DDL 包含以下⼏种指令:
CREATE : 创建数据库和表等对象
DROP : 删除数据库和表等对象
ALTER : 修改数据库和表等对象的结构
2. DML(Data Manipulation Language,数据操纵语⾔) ⽤来查询或者变更表中的记录。
DML 包含以下⼏种指令。
SELECT :查询表中的数据
INSERT :向表中插⼊新数据
UPDATE :更新表中的数据
DELETE :删除表中的数据
3. DCL(Data Control Language,数据控制语⾔) ⽤来确认或者取消对数据库中的数据进⾏的变更。除此之外,还可以对 RDBMS
的⽤户是否有权限操作数据库中的对象(数据库表等)进⾏设定。
DCL 包含以下⼏种指令。
COMMIT : 确认对数据库中的数据进⾏的变更
ROLLBACK : 取消对数据库中的数据进⾏的变更
GRANT : 赋予⽤户操作权限
REVOKE : 取消⽤户的操作权限
实际使⽤的 SQL 语句当中有 90% 属于 DML,本课程会以 DML 为中⼼进⾏讲解
2.2 SQL的基本书写规则
SQL语句要以分号( ; )结尾
SQL 不区分关键字的⼤⼩写,但是插⼊到表中的数据是区分⼤⼩写的
win 系统默认不区分表名及字段名的⼤⼩写
linux / mac 默认严格区分表名及字段名的⼤⼩写
本教程已统⼀调整表名及字段名的为⼩写,以⽅便初学者学习使⽤。
常数的书写⽅式是固定的
‘abc’, 1234, ‘26 Jan 2010’, ‘10/01/26’, ‘2010-01-26’…
单词需要⽤半⾓空格或者换⾏来分隔
SQL 语句的单词之间需使⽤半⾓空格或换⾏符来进⾏分隔,且不能使⽤全⾓空格作为单词的分隔符,否则会发⽣错误,出现⽆法预期的结果。
请⼤家认真查阅《附录1 - SQL 语法规范》,养成规范的书写习惯。
2.3 数据库的创建( CREATE DATABASE 语句)
语法:
CREATE DATABASE < 数据库名称 > ;
创建本课程使⽤的数据库
CREATE DATABASE shop;
2.4 表的创建( CREATE TABLE 语句)
语法:
CREATE TABLE < 表名 >
( < 列名 1> < 数据类型 > < 该列所需约束 > ,
< 列名 2> < 数据类型 > < 该列所需约束 > ,
< 列名 3> < 数据类型 > < 该列所需约束 > ,
< 列名 4> < 数据类型 > < 该列所需约束 > ,
.
sql容易学吗.
.
< 该表的约束 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 INTEGER,
purchase_price INTEGER,
regist_date DATE,
PRIMARY KEY(product_id)
) ;
2.5 命名规则
只能使⽤半⾓英⽂字母、数字、下划线(_)作为数据库、表和列的名称
名称必须以半⾓英⽂字母开头
表1-3 商品表和 product 表列名的对应关系
2.6 数据类型的指定
数据库创建的表,所有的列都必须指定数据类型,每⼀列都不能存储与该列数据类型不符的数据。
四种最基本的数据类型
1. INTEGER 型。⽤来指定存储整数的列的数据类型(数字型),不能存储⼩数。
2. CHAR 型。⽤来存储定长字符串,当列中存储的字符串长度达不到最⼤长度的时候,使⽤半⾓空格进⾏补⾜,由于会浪费存储空间,
所以⼀般不使⽤。
3. VARCHAR 型。⽤来存储可变长度字符串,定长字符串在字符数未达到最⼤长度时会⽤半⾓空格补⾜,但可变长字符串不同,即使字
符数未达到最⼤长度,也不会⽤半⾓空格补⾜。
4. DATE 型。⽤来指定存储⽇期(年⽉⽇)的列的数据类型(⽇期型)。
2.7 约束的设置
约束是除了数据类型之外,对列中存储的数据进⾏限制或者追加条件的功能。
NOT NULL 是⾮空约束,即该列必须输⼊数据。
PRIMARY KEY是主键约束,代表该列是唯⼀值,可以通过该列取出特定的⾏的数据。
2.8 表的删除和更新
删除表的语法:
DROP TABLE < 表名 > ;
删除 product 表。需要特别注意的是,删除的表是⽆法恢复的,只能重新插⼊,请执⾏删除操作时⽆⽐要谨慎。
DROP TABLE product;
添加列的 ALTER TABLE 语句
ALTER TABLE < 表名 > ADD COLUMN < 列的定义 >;
添加⼀列可以存储100位的可变长字符串的 product_name_pinyin 列
ALTER TABLE product ADD COLUMN product_name_pinyin VARCHAR(100);
删除列的 ALTER TABLE 语句
ALTER TABLE < 表名 > DROP COLUMN < 列名 >;
删除 product_name_pinyin 列
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论