二十五章 初识MySQL

一、了解主流的数据库和数据库分类

1.数据库概念

数据库:

按照数据结构来组织 存储和管理数据的一种建立在计算机存储设备上的仓库

数据库优势:

1.可以持久化存储大量的数据、方便我们进行检索

2.可以保证数据的安全和数据的一致性

3.可以很轻松的通过数据库来提取出新的有效信息

2 .数据库的分类

RDB(Relational DateBase) 是 关系型数据库

例如:在关系型数据库中 有一张存储了数据的表格 还有一张存储了学生年级的表格

性能方面 关系型数据库受限于技术实现,所以有瓶颈 但它在安全方便比较可靠 (事物支持好)

NoSQL(Not only SQL)不仅仅是SQL 是 非关系型数据库
例如:文档型数据库 、 键值对数据库 (key value)、 图形数据库…

它这种概念正式兴起于web2.0时代 2006-2009…

性能方面 非常优异,但是它的安全方面要比较差。(事物支持不太好)

3.主流数据库

RDB:
MySQL Oracle SQLServer PostgreSQL MariaDB SQLlite…

NoSQL:
Redis Memcached MongoDB HBase Solr ElasticSearch…

二、了解常用的数据库命令

1.数据库服务器的组成

数据库是基本单位

数据表是数据库的基本单位

例如:我们需要开发一个小说阅读器,它需要存储小说、分类、用户…信息。
创建一个小说阅读器的数据库:sun_reader_db
在sun_reader_db中创建小说表、分类表、用户表(二维表)

2.SQL介绍

SQL:
(Structured Query Language )结构化查询语言,它也是一种规范、标准。
我们的关系型数据库都是采用SQL来进行操作的,不同的数据库队SQL进行了一些改造,但是类似 CRUD

DDL: 数据定义语言 创建Create 删除Drop 修改Alter table…
DML: 数据操作语言 CUD 增Insert 删Delete 改Update
DQL: 数据查询语言 Select 查询
DCL: 数据控制语言 Grant、Roll back、commit…

3.数据库相关操作命令
-- 创建数据库命令
create database 数据库名;
-- 删除数据库命令
drop database 数据库名;
-- 查看数据库
show databases;
-- 切换数据库  如果需要在此数据库中进行操作 必须要先切换此数据库
use 数据库名;

三、熟悉数据表操作的语句/命令

1.创建数据库表
create table 表名(
	列名1  数据类型(数据长度)  列约束/属性,
	列名2  数据类型  列约束.....
);
-- 创建用户信息表   有时候在MySQL中 如果有敏感字/关键字 
可以添加反引号`来解决。注意不是单引号'
create table`user`
2.查看数据库中的数据表
-- 查看数据库的所有表
show tables;
-- 查看表定义/结构
desc/describe 表名;
3.删除数据库
-- 删除数据库
drop table 表名;
4. 修改数据库表
-- 修改字段名
change:更改字段信息时  并且可以改名/modify  只能改字段信息
ALTER TABLE 表名 CHANGE 原字段名 新字段名 数据类型(属性);
-- 修改表名
ALTER TABLE 旧表名 RENAME【TO】新表名;
-- 添加字段名
ALTER TABLE 表名 ADD字段名 数据类型【属性】;
-- 删除字段名
ALTER TABLE 表名 DROP 字段名

四、熟悉常见的数据列属性和类型

1.列属性
not null    不允许字段为空

unique      字段必须唯一

unsigned   无符号  无负号  不能与 unique 关键字同时存在

zerofill    以0补全剩余长度 不能与 unsigned 同时使用

default     默认值

comment     注释

primary Key 主键:用来唯一标识一挑数据的列就是主键  
 它的默认效果:非空not null 且唯一unique  还能提升查询速度
 
auto_increment   自动增长 用于主键列的值自增
2.列类型
数值:长度可写可不写

	tinyint(短整形) int 整数	bigint(长整型)
	double(浮点数)
	
字符串:必须写长度

	varchar(可变字符串)
    char (不可变字符串)
	假设设置了varchar长度为10 char长度也为10 当真实存在了1个字符  varchar占用1个  char占用10个(效率高)
	text长文本
	
日期类型:不能写长度

	【datetime】	 timestamp
	年月日 时分秒 	年月日

五、主键和外键(面试题)

主键:能够唯一标识信息表中的一条啊数据的字段/字段组

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);

为了能方便我们进行数据表操作 在实际项目中一般不设置物理外键,而设置逻辑外键