**数据库:**按照数据结构来组织、存储和管理数据的一种建立在计算机存储设备上的仓库
数据库的优势:
1.可以持久化存储大量的数据、方便我们进行检索
2.可以保证数据的安全和数据的一致性(事物…)
3.可以很轻松的通过数据库来提取出新的有效信息(计算平均分、统计人数)
RDB(Relational DateBase) 是 关系型数据库
例如:在关系型数据库中 有一张存储了数据的表格 还有一张存储了学生年级的表格
性能方面 关系型数据库受限于技术实现,所以有瓶颈 但它在安全方便比较可靠 (事物支持好)
NoSQL(Not only SQL)不仅仅是SQL 是 非关系型数据库
例如:文档型数据库 、 键值对数据库 (key value)、 图形数据库…
它这种概念正式兴起于web2.0时代 2006-2009…
性能方面 非常优异,但是它的安全方面要比较差。(事物支持不太好)
RDB(主)+NoSQL(副)
RDB:
MySQL Oracle SQLServer PostgreSQL MariaDB SQLlite…
NoSQL:
Redis Memcached MongoDB HBase Solr ElasticSearch…
数据库是基本单位
数据表是数据库的基本单位
例如:我们需要开发一个小说阅读器,它需要存储小说、分类、用户…信息。
创建一个小说阅读器的数据库:sun_reader_db
在sun_reader_db中创建小说表、分类表、用户表(二维表)
SQL:(Structured Query Language )结构化查询语言,它也是一种规范、标准。
我们的关系型数据库都是采用SQL来进行操作的,不同的数据库队SQL进行了一些改造,但是类似 CRUD
DDL:数据定义语言 创建Create 删除Drop 修改Alter table…
DML:数据操作语言 CUD 增Insert 删Delete 改Update
DQL:数据查询语言 Select 查询
DCL:数据控制语言 Grant、Roll back、commit…
4.3 数据库相关操作命令
-- 创建数据库命令
create database 数据库名;
-- 删除数据库命令
drop database 数据库名;
-- 查看数据库
show databases;
-- 切换数据库 如果需要在此数据库中进行操作 必须要先切换此数据库
use 数据库名;
create table 表名(
列名1 数据类型(数据长度) 列约束/属性,
列名2 数据类型 列约束.....
);
-- 创建用户信息表 有血时候在MySQL中 如果有敏感字/关键字 可以添加反引号`来解决。注意不是单引号'
create table`user`
5.2查看数据库中的数据表
-- 查看数据库的所有表show tables;-- 查看表定义/结构desc/describe 表名;
5.3删除数据库
-- 删除数据库
drop table 表名;
5.4修改数据库
-- 修改字段名
change:更改字段信息时 并且可以改名/modify 只能改字段信息
ALTER TABLE 表名 CHANGE 原字段名 新字段名 数据类型(属性);
-- 修改表名
ALTER TABLE 旧表名 RENAME【TO】新表名;
-- 添加字段名
ALTER TABLE 表名 ADD字段名 数据类型【属性】;
-- 删除字段名
ALTER TABLE 表名 DROP 字段名
主键:能够唯一标识信息表中的一条啊数据的字段/字段组
Alter Table 表名 Add Consistent 主键名 Primary key 表名(主键字段名)
ALTER TABLE school_stu
ADD CONSTRAINI pk_stu_stuID
PRIMARY KEY school_stu(stuID);
外键:在一张表中的某个字段引用的数据来自另一张表的某个字段信息
主表:它的主键一般是需要被从表引用 从表:在其中拥有外键,可以引用主表的主键信息
grade 主表 student 从表
实现物理外键 通过SQL语句将外键绑定好 可以保证数据一致性
ALTER TABLE school_stu
ADD CONSTRAINT fk_stu_grade
FOREIGN KEY (gradeId)
REFERENCES grade(gradeId);
为了能方便我们进行数据表操作 在实际项目中一般不设置物理外键,而设置逻辑外键
-- not null 不允许字段为空
unique 字段必须唯一
unsigned 无符号 无负号 不能与unique关键字同时存在
zerofill 以0补全剩余长度 不能与 unsigned 同时使用
default 默认值
comment 注释
primary Key 主键:用来唯一标识一挑数据的列就是主键
它的默认效果:非空not null 且唯一unique 还能提升查询速度
auto_increment 自动增长 用于主键列的值自增
6.2列类型
数值:长度可写可不写
tinyint(短整形) int 整数 bigint(长整型)
double(浮点数)
字符串:必须写长度
varchar(可变字符串) char (不可变字符串)
假设设置了varchar长度为10 char长度也为10 当真实存在了1个字符 varchar占用1个 char占用10个(效率高)
text长文本
日期类型:不能写长度
【datetime】 timestamp
年月日 时分秒 年月日