数据库介绍
概念
数据库,就是存放数据的仓库
数据库(DataBase,简称DB)是长期存储在计算机内部有结构的、大量的、共享的数据集合。
特点
- 长期存储:持久存储,因为数据库存储数据的本质是将数据存储在.db的文件中
- 有结构:
- 类型:数据库不仅可以存放数据,而且存放的数据还是有类型的
- 关系:存储数据与数据之间的关系
- 大量:大多数数据库都是文件系统的,也就是说存储在数据库中的数据实际上就是存储在磁盘的文件中
- 共享:多个应用程序可以通过数据库实现数据的共享
关系型数据库与非关系型数据库
- 关系型数据库
关系型数据库,采用了关系模型来组织数据的存储,以行和列的形式存储数据并记录数据与数据之间的关系 —— 将数据存储在表格中,可以通过建立表格与表格之间的关联来维护数据与数据之间的关系。
学生信息 -- 学生类 -- 学生表
订单信息 -- 订单类 -- 订单表
关系型数据库产品
- MySQL免费
- Oracle收费
- SQL Server
- SQLite
- 非关系型数据库
非关系型数据库,采用键值对的模型来存储数据,只完成数据的记录,不会记录数据与数据之间的关系。
在非关系型数据库中基于其特定的存储结构来解决一些大数据应用的难题。
NoSQL(Not only SQL)数据库来指代非关系型数据库。
非关系型数据库产品
- Redis
- MongoDB
相关术语
- 数据库(Database):存储数据的集合,提供数据存储服务
- 数据(Data): 实际上指的是描述事物的符号记录
- 数据库管理系统(Database Management System,DBMS):数据库管理系统,是位于用户与操作系统之间的一层数据管理软件
- 数据库系统管理员(Database Administrator,DBA):负责数据库创建、使用及维护的专门人员
- 数据库系统(Database System,DBS):数据库系统管理员、数据库管理系统及数据库组成整个单元
结构化查询语言SQL
简介
SQL(Structured Query Language)结构化查询语言,用于存取、查询、更新数据以及管理关系型数据库系统
分类
- DDL(Data Definition Language)数据定义语言
- 用于完成对数据库对象(数据库、数据表、视图、索引等)的创建、删除、修改
- DML(Data Manipulation Language)数据操作/操纵语言
- 用于完成对数据表中的数据的添加、删除、修改操作
- 添加:将数据存储到数据表
- 删除:将数据从数据表移除
- 修改:对数据表中的数据进行修改
- DQL(Data Query Language)数据查询语言
- 用于将数据表中的数据查询出来
- DCL(Data Control Language)数据控制语言
- 用于完成事务管理等控制性操作
基本语法
- SQL指令不区分大小写
但是在后期编写sql指令时,sql提供的关键字一般使用大写,自定义的名称用小写
- 每条SQL表达式结束之后都以;结束
- SQL关键字之间以空格进行分隔
- SQL之间可以不限制换行(可以有空格的地方就可以有换行)
- MySQL注释:
- 单行注释:-- 注释内容
注意:在--后要加空格
- 单行注释:#注释内容
- 多行注释:/*注释内容*/
DDL语句
库相关
#建库
create database [if not exists] 数据库名 [character set '编码格式'];
#if not exists:判断库名是否存在
#character set '编码格式':设置数据库的编码格式,建议建库时加上
#数据库默认编码格式是根据数据库软件决定的
#删库
drop database [if exists] 数据库名;
#改库
alter database 数据库名 character set '编码格式';
#切库
use 数据库名;
#查库
show databases;
表相关
#建表
create table 表名 (
字段名1 数据类型1 [约束1] [约束2]...,
字段名2 数据类型2 [约束1] [约束2]...,
...
字段名n 数据类型n [约束1] [约束2]...
);
#删表
drop table 表名;
#改表
#修改表名
alter table 表名 rename to 新表名;
#修改编码格式
alter table 表名 character set '编码格式';
#添加列
alter table 表名 add 字段名 数据类型 [约束1] [约束2]...;
#修改列名与数据类型
alter table 表名 change 旧字段名 新字段名 数据类型 [约束1] [约束2]...;
#修改列的数据类型或约束
alter table 表名 modify 字段名 数据类型 [约束1] [约束2]...;
#删除列
alter table 表名 drop 列名;
#查表
show tables;
desc 表名;
数据类型
数字:
int/integer 4byte 整数
double 8byte 双精度小数
字符串:
char 字符长度: 0~255 字节/字符
说明: 定长字符串, 最多可以存储255个字符; 当我们指定数据表字段为char(n)此列中的数据最长为n个字符, 如果添加的数据少于n, 则补'\u0000'至n长度. MySQL4.1版本以前是字节, MySQL4.1版本以后是字符
varchar 字符长度: 0~65535 字节/字符
说明: 可变长度字符串, 此类型的类最大长度为65535; 当我们指定数据表字段为varchar(n)此列中的数据最长为n个字符, 如果添加的数据少于n, 不会补齐长度. MySQL4.1版本以前是字节, MySQL4.1版本以后是字符
longtext 字符长度: 0~4294967295
说明: 文本数据(字符串), 大型文本记录, 如小说书, 笔记等
日期:
date 格式: 2022-10-31
说明: 日期, 只存储年月日
datetime 格式: 2022-10-31 11:12:13
说明: 日期+时间, 存储年月日时分秒
约束
- 非空约束(not null):限制此列的值必须提供,不能为null
- 唯一约束(unique):在表中的多条数据,此列的值不能重复
- 主键约束(primary key):非空+唯一,能够唯一标识数据表中的一条数据
- 自增长约束(auto_increment):每次+1,从1起
- 检查约束(check):保证列中的值满足某一条件
- 默认约束(default):保存数据时,未指定值则采用默认值
- 外键约束(foreign key):建立不同表之间的关联关系
DML语句
插入
insert into 表名 (字段名1,....) values (值1,...),(值1,...)...;
#注意
#1.值顺序要与表名后写的字段顺序一致
#2.如果插入所有字段信息,可以忽略表名后字段名不写,但是值的顺序必须与表中字段的顺序一致
#经验: 表名后字段名写上
删除
#删除表中所有数据
delete from 表名;
#条件删除
delete from 表名 where 条件;
修改
#修改所有行的该字段
update 表名 set 字段名1 = 值1,字段名2=值2,...;
#条件修改
update 表名 set 字段名1 = 值1,字段名2=值2,... where 条件;