MySQL

MySQL:基于C/S的关系型DBMS

1)MySQL是关系数据库,所以列中行不允许有多值

2)默认占用3306端口

SQL(Structured Query Language):结构化查询语言(数据库的标准语言)

1)7个动词:CREATEALTERDROPINSERTUPDATEDELETESELECT

2)非过程语言(指定数据)、面向集合的语言(关系是操作对象)

3)既是自含式语言(独立使用),又是嵌入式语言(嵌入到宿主语言使用)

4)语言综合统一(集数据定义、数据操纵、数据管理的功能于一体)

数据定义语言(DDL):CREATEDROPALTER语句

数据操作语言(DML):INSERTUPDATEDELETE语句

数据查询语言(DQL):SELECT语句

数据控制语言(DCL):GRANTREVOKECOMMITRELLBACK等语句

//SQL语句不区分大小写(建议命令大写,其他列名和表名等小写)

//SQL语句必须以“;”结尾代表该语句的结束

概念

DBS=DBMS+DBA+DB+DBAP+USERS

DBS(数据库系统) DBMS(数据库管理系统) DBA(管理员)

DB(数据库) DBAP(应用程序) USERS(用户)

//DBMS分为共享文件系统和C/S

数据库系统(DataBase System):带有数据库和使用数据库技术数据管理的系统

数据库管理系统(DataBase Managenment System):用户创建/管理数据库的软件

数据库(DataBase):存储有组织的数据的容器

数据库中有以下6个概念:

(1)表(Table):存储特定类型数据的结构化表格

1)表是由一个或多个列所组成

2)每个数据库中,表的名称作为表的标识符(拥有唯一性)

(2)列(Column):表中的一个字段

1)列中的数据是由一个或多个行

2)每个列都需有指定的数据类型(定义列可存储的数据)

(3)数据类型(DataType):指定指定列应限制/允许存储的数据

(4)行(Row):表中的一个记录的数据

(5)约束:限制表中的数据,保证表里数据的准确性和可靠性

1)添加约束的时机:创建表、修改表(一定在添加数据之前添加约束)

2)约束分为列级约束(支持全部约束,但外键无效)

3)表级约束(不支持默认值、非空和自增约束)

(6)模式(Shema):记录有关数据库和表的布局及特性的信息

约束分为以下7种:

1)检查(CHECK):限制列中值的范围(MySQL不支持);

2)非空(NOT NULL):限制列中的字段不能为空;

3)默认值(DEFAULT):指定列中字段的默认值;

4)唯一性(UNIQUE):限制列中字段值的唯一性;

5)主键(PRIMARY KEY):列(组合列)中能够唯一区分表中的每个行

6)外键(FOREIGN KEY):列(组合列),限制两个表之间的关系

7)自增(AUTO_INCREMENT):指定列中字段的值依次递增,且不重复

//主键具有唯一性和非空性,且表的外键一般是其他表的主键

//有自增约束的字段叫自增字段(可生成唯一性的ID)每张表只能定义一个

//自增字段必须为整型数据类型,且为主键/外键/唯一键

架构

MySQL服务器的逻辑架构分为三层;

如:MySQL服务器逻辑架构
 

(1)第一层:C/S架构中的客户端连接;

1)每个客户端连接均对应服务器进程中的一个线程

2)连接中的各项操作均在该线程中执行,多个线程轮流在CPU上执行

(2)第二层:实现MySQL的核心服务(如:解析、分析、缓存和优化等);

1)大部分跨存储引擎的功能在该层实现(如:存储过程、触发器和视图等);

(3)第三层:存储引擎(服务器通过API与存储引擎通信);

1)存储引擎不解析SQL(InnoDB例外,其会解析外键定义)

基础指令

1)列出所有数据库:SHOW DATABASES;

2)切换到指定数据库:USE 数据库名;

3)列出当前数据库中所有表:SHOW TABLES;

4)列出当前使用的存储引擎:SHOW ENGINES;

//修改存储引擎(临时):SET DEFAULT_STORAGE_ENGINE=存储引擎名;

SOURCE命令:执行SQL文件

指令格式:SOURCE SQL文件路径

数据库

数据库(Schema):MySQL中用于存储和隔离表的对象

1)主要数据库: 系统数据库(系统自带)、用户数据库(用户创建)

2)MySQL将每个数据库保存为数据目录下的一个子目录;

3)MySQL会在数据库子目录下创建个和表同名的.frm文件(保存表定义);

系统数据库有以下4种:

1)information_schema:保存mysql服务器所有数据库的信息;

2)mysql(核心数据库):存储数据库的用户、权限设置、等控制/管理信息;

3)performance_schema:存储数据库服务器性能参数(监控服务器运行中情况);

4)sys:简化版performance_schema(利于DBA阅读DB情况)

创建数据库

显示所有数据库:show databases;

选择指定数据库:use 数据库名;

创建数据库:create database 数据库名 [default character set=字符集];

//DEFAULT为指定该数据库的默认字符集

列出创建数据库时的MySQL语句:show create DATABASE 数据库名;

修改指定数据库的字符集:

alter database
数据库名 {
   
     default} character set 字符集名;

删除指定数据库:drop database [if exists] 数据库名;