一、数据库概述
1、数据库介绍
数据库就是存储数据的仓库,其本质是一个文件系统,按照特定的格式将数据存储起来,用户可以对数据库中的数据进行增加,修改,删除及查询操作。
随着互联网的高速发展,大量的数据在不断的产生,伴随而来的是如何高效安全的存储数据和处理数据,而这一问题成为了信息时代的一个非常大的问题,而使用数据库可以高效的有条理的储存数据。
- 可以结构化存储大量的数据;
- 可以有效的保持数据的一致性、完整性;
- 读写效率极高。
2、数据库分类
数据库又分为关系型数据库和非关系型数据库
☆ 关系型数据库
关系型数据库:指采用了关系模型来组织数据的数据库。
关系模型指的就是二维表格模型,而一个关系型数据库就是由二维表及其之间的联系所组成的一个数据组织。
我们可以先简单的讲关系型数据库理解为一个Excel表格:一个sheet页就是一张数据表
☆ 非关系型数据库NoSQL
非关系型数据库:又被称为NoSQL(Not Only SQL ),意为不仅仅是SQL,对NoSQL 最普遍的定义是“非关联型的”,强调 Key-Value 的方式存储数据。
Key-Value结构存储: Key-value数据库是一种以键值对存储数据的一种数据库,类似Java中的map。可以将整个数据库理解为一个大的map,每个键都会对应一个唯一的值。
关系型和非关系型数据库区别?
关系型:通过二维表维持数据关系(有行有列),大部分存储在硬盘,查询速度上关系型要慢一些,相对而言,安全性更高
非关系型:通过key:value键值对维持数据关系,大部分存储在内存,查询速度上要相对于关系型数据库更快一些,安全系数相对关系型而言不高
3、常见数据库介绍
☆ 关系型数据库
数据库 | 介绍 |
---|---|
MySQL | 开源免费的数据库,中型的数据库.已经被Oracle收购了.MySQL6.x版本也开始收费。 |
Oracle | 收费的大型数据库,Oracle公司的产品。Oracle收购SUN公司,收购MYSQL。 |
DB2 | IBM公司的数据库产品,收费的。常应用在银行系统中. |
SQLserver | MicroSoft 公司收费的中型的数据库。C#、.net等语言常使用。 |
SQLite | 嵌入式的小型数据库,应用在手机端。 |
☆ 非关系型数据库
数据库 | 介绍 |
---|---|
Redis | 是一个小而美的数据库,主要用在key-value 的内存缓存,读写性能极佳 |
HBase | HBase是列式数据库,目标是高效存储大量数据 |
MongoDB | MongoDB是文档型数据库,非常接近关系型数据库的。 |
4、小结
① 数据库就是存储数据的仓库,用户可以对数据库中的数据进行增删改查操作
② 数据库分为关系型数据库和非关系型数据库。
③ 常用的关系型数据库有:MySQL,Oracle,DB2,SQLserver,sqlite
④ 常用的非关系型数据库有:Redis,Hbase,MongoDB
二、SQL语句
1、连接数据库
结构化查询语言(Structured Query Language)简称SQL,是关系型数据库管理系统都需要遵循的规范,是数据库认识的语句。不同的数据库生产厂商都支持SQL语句,但都有特有内容。
举例:
普通话:各数据库厂商都遵循的ISO标准。
方言:数据库特有的关键字。
2、SQL语句分类
☆ DDL
数据定义语言:简称DDL(Data Definition Language)
用来定义数据库对象:数据库,表,列等。
关键字:create,alter,drop等
☆ DML
数据操作语言:简称DML(Data Manipulation Language)
用来对数据库中表的记录进行更新。
关键字:insert,delete,update等
☆ DQL
数据查询语言:简称DQL(Data Query Language)
用来查询数据库中表的记录。
关键字:select,from,where等
☆ DCL
数据控制语言:简称DCL(Data Control Language)
用来定义数据库的访问权限和安全级别,及创建用户。
3、SQL基本语法
① SQL语句可以单行或多行书写,以分号结尾。
select * from students;
② 可使用空格和缩进来增强语句的可读性
select
*
from students;
③ MySQL数据库的SQL语句不区分大小写,关键字建议使用大写
SELECT * FROM user;
等价于
select * from user;
④ 可以使用单行与多行注释
# 单行注释
-- 单行注释,注意:--后面有一个空格
/*
...
多行注释
...
*/
4、小结
结构化查询语言(SQL),是关系型数据库管理系统都需要遵循的规范,。不同的数据库生产厂商都支持SQL语句,但都有特有内容。
SQL语句分为:数据定义语言(DDL),数据操作语言(DML),数据查询语言(DQL),数据控制语言(DCL)。
SQL通用语法:结构灵活,使用分号结尾;不区分大小写;可以使用/**/,#,–来进行注释。
三、DDL数据库操作
1、MySQL的组成结构
一个MySQL DBMS可以同时存放多个数据库,理论上一个项目就对应一个数据库。如博客项目blog数据库、商城项目shop数据库、微信项目wechat数据库。
一个数据库中还可以同时包含多个数据表,而数据表才是真正用于存放数据的位置。(类似我们Office软件中的Excel表格),理论上一个功能就对应一个数据表。如博客系统中的用户管理功能,就需要一个user数据表、博客中的文章就需要一个article数据表、博客中的评论就需要一个message数据表。
一个数据表又可以拆分为多个字段,每个字段就是一个属性。
一个数据表除了字段以外,还有很多行,每一行都是一条完整的数据(记录)。
2、数据库的基本操作
① 创建数据库
普及英语小课堂:
创建 => create
数据库 => database
创建 + 数据库 = create database 数据库名称(字母+数字+下划线组成,以字母开头,不能出现中文以及特殊字符)
基本语法:
mysql> create database 数据库名称 [设置编码格式];
特别注意:在MySQL中,当一条SQL语句编写完毕后,一定要使用分号;进行结尾,否则系统认为这条语句还没有结束。
案例:创建数据库的相关案例
创建db_itheima库
create database db_itheima;
创建db1库并指定默认字符集
create database db_itheima default charset gbk;
如果存在不报错(if not exists)
create database if not exists db_itheima default character set utf8;
说明:不能创建相同名字的数据库!
扩展:编码格式,常见的gbk(中国的编码格式)与utf8(国际通用编码格式)
latin1 256个字符
国内汉字无法通过256个字符进行描述,所以国内开发了自己的编码格式gb2312,升级gbk
中国台湾业开发了一套自己的编码格式big5
很多项目并不仅仅只在本地使用,也可能支持多国语言,标准化组织开发了一套通用编码utf8,后来5.6版本以后又进行了升级utf8mb4
编写SQL语句是一个比较细致工作,不建议大家直接在终端中输入SQL语句,可以先把你要写的SQL语句写入一个记事本中,然后拷贝执行。
② 查询数据库
英语小课堂:
显示 => show
数据库 => database
显示 + 所有数据库 = show databases;
基本语法:显示所有数据库
mysql> show databases;
③ 删除数据库
英语小课堂:
删除 => drop
数据库 => database
删除 + 数据库 = drop database 数据库名称;
基本语法:
mysql> drop database 数据库名称;
案例:删除db_itheima数据库
mysql> drop database db_itheima;
④ 选择数据库
从数据库列表中查找需要使用的数据库
格式:
mysql> use db_itheima;
查看正在使用的数据库(8.0以后版本需要基于select查询来获取当前数据库)
mysql> select database();
3、小结
创建数据库:CREATE DATABASE 数据库名;
查看数据库:SHOW DATABASES;
删除数据库:DROP DATABASE 数据库名;
使用数据库:USE 数据库名;
四、DDL数据表操作
特别注意:创建数据表必须有一个前提,首先要明确选择某一个数据库。
1、数据表的基本操作
☆ 数据表的创建
英语小课堂:
创建 => create
数据表 => table
创建 + 数据表 = create table 数据表名称
基本语法:
mysql> create table 数据表名称(
字段1 字段类型 [字段约束],
字段2 字段类型 [字段约束],
...
);
案例:创建一个admin管理员表,拥有3个字段(编号、用户名称、用户密码)
mysql> create database db_itheima;
mysql> use db_itheima;
use在MySQL中的含义代表选择,use 数据库名称相当于选择指定的数据库。而且use比较特殊,其选择结束后,其尾部可以不加分号;但是强烈建议所有的SQL语句都要加分号,养成一个好习惯。
mysql> create table tb_admin(
id tinyint,
username varchar(20),
password char(32)
) engine=innodb default charset=utf8;
tinyint :微整型,范围-128 ~ 127,无符号型,则表示0 ~ 255
表示字符串类型可以使用char与varchar,char代表固定长度的字段,varchar代表变化长度的字段。
案例:创建一个article文章表,拥有4个字段(编号、标题、作者、内容)
mysql> use db_itheima;
mysql> create table tb_article(
id int,
title varchar(50),
author varchar(</