文章目录
一、认识数据库
1.数据库大体分为两大类:关系型和非关系型数据库
-
关系型数据库(Relational Database Management System:RDBMS)
是指采用了关系模型来组织数据的数据库。关系模型简单来说就是二维表格模型,而一个关系型数据库就是有二维表机器之间的联系所组成的一个数据组织。关系型数据库都是基于标准的SQL,只是内部一些实现有区别。
常用的关系型数据库有以下几个:
1)Oracle:是甲骨文公司的一款关系数据库管理系统,具有系统可移植性好,功能强,适合各种大、中、小微机环静。适合大型项目,适用于做复杂的业务逻辑,如ERP 、OA等企业信息系统。收费。
2)MySQL:由瑞典MySQL AB公司开发,属于Oracle旗下产品,在WEB应用方面,MySQL是最好的RDBMS软件之一。优点:开放源码、体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型网站的开发都使用MySQL作为网站的数据库。
3)SQL Server:是微软的产品,具有使用方便、可伸缩性好、相关软件集成程度高、可跨越从笔记本电脑到大型多处理器的服务器等多平台使用。适用于中、大型项目。收费。 -
非关系型数据库(Not Only SQL:NoSQL)
数据之间没有关系,不规定基于SQL实现。现在更多是指NoSQL数据库,如:
1)基于键值对(Key-Value):如 Memcached(分布式的高速缓存系统)、redis(Remote Dictionary Server 远程字典服务)
2)基于文档型:如 MongoDB(由C++编写)
3)基于列族:如 Hbase
4)基于图形:如 Neo4j -
关系型和非关系型数据库的区别
关系型数据库 非关系型数据库 使用SQL 是 不强制要求,一般补基于SQL实现 事务支持 支持 不支持 复杂操作 支持 不支持 海量读写操作 效率低 效率高 基本结构 基于表和列,结构固定 灵活性较较高 使用场景 业务方面的OLTP系统 用于数据的缓存、基于统计分析的OLAP系统
注:OLTP(On-Line Transaction Processing)是指联机事务处理,OLAP(On-Line Analytical Processing)是指联机分析处理。
二、使用指令
1.标题SQL中的指令分类
SQL中的指令分为以下5类:
1.1 DQL(数据库查询语言)
数据查询语句DQL基本结构是由 SELECT子句、FROM子句、WHERE子句 组成的查询块,简称 DQL 即 Data Query Language。
代表关键字:select
1.2 DML(数据库操作语言)
用户通过它来实现数据库的基本操作。简称 DML 即 Date Manipulation Language。
代表关键字:insert,delete,update
1.3 DDL(数据库定义语言)
数据库定义语言DDL用来创建数据库中的各种对象,创建、删除、修改表的结构,比如表、试图、索引等。简称 DDL 即 Data Definition Language。与 DML 相比,DML 是修改数据库表中的数据,而 DDL 是修改表的结构。
代表关键字:create,drop,alter
1.4 TCL(事务控制语言)
TCL经常被用于快速原型开发、脚本编程、GUI和测试等方面。简称 TCL 即 Trasactional Control Language。
代表关键字:commint,rollback
1.5 DCL(数据控制语言)
用于授予或回收访问数据库的某种特权,并且控制数据库事务发生的时间和效果,对数据库进行实时监视等。简称 DCL 即 Data Control Language。
代表关键字:grant,revoke
以上主要学习DQL、DML、DDL的相关操作
2.数据库指令
- 展示数据库(以我数据库为例):可以直观看到都有哪些数据库,数据库里面都是表
show databases;
提示:MySQL不区分大小写,并且语句结束后要加分号。
- 创建数据库:创建一个数据库后就可以在里面进行表的制作
create database 数据库名称;
- 选择数据库:只有选择数据库后才能进行表的创建和修改等操作
use 数据库名称;
- 删除数据库:删除数据库后,里面的表和数据就都没了,且无法撤销无法找回
drop database 数据库名称;
3.数据表指令
在对数据表进行操作之前,我们先认识数据表:
表的每一行是一个“记录”
每一列是一个“字段”
表头指的是表的第一行
3.1 创建表
- 创建表
create tabel 表名(列名a 类型 , 列名b 类型 , ..... );
-- 常用的类型有:int;doubel(M,D) M为总共的位数,D为小数的位数;varchar(N) N为最多N个字符;datetime...
补充: 类型后可以添加字段注释 : comment '字段注释 ’ ,
如何查看字段注释呢 ? 答案: show full columns from 表名;
表也可以加注释, 由于用得少, 这里不过多介绍
- 字段的约束
-
not null : 表示某字段(列)不能储存null值, 若尝试插入null, 系统报错
create table test(id int not null); desc test;
-
unique : 表示数据唯一 , 如果尝试插入重复的值, 就会报错
create table test(id int unique);
-
default : 这这个字段约定一个默认值, 若在插入记录时在有默认值的字段中输入default, 则输出对应的默认值
create table test(id int , name varchar(20) default '匿名'); -- default'默认值',默认值可修改
-
primary key : 主键约束, 相当于数据的唯一身份标识, 类似于身份证号码. primary key 只在一整表中只给一个字段使用, 并且不能输入为空(null), 也不能重复输入.
create table score (id int primary key, math double(3,1)); -- 给id字段上了一个主键
补充: 自增主键 : primary key auto_increment , 设置好自增主键后, 插入记录时可以不用手动输入主键的内容, 主键会按顺序自动输入1,2,3,4,5…如果主动设置顺序, 则可在insert语句中输入你想开始的数字, 剩下的记录会顺着这个数字继续排下去…
create table score (id int primary key auto_increment, math double(3,1)) ; -- 给id字段上了一个自增主键
效果如下:
-
foreign key : 外键约束, 外键用于关联其他表的主键或唯一键
案例:
1)创建一个班级表class, id为主键
2)创建学生表student,一个学生对应一个班级, 一个班级对应多个学生. 使用id为主键, class_id为外键, 关联班级表id.
create table class (classid int primary key , name varchar(20)) ; create table student (id int primary key, name varchar(20), class_id int