MySQL
MySQL:基于C/S的关系型DBMS
1)MySQL是关系数据库,所以列中行不允许有多值
2)默认占用3306端口
SQL(Structured Query Language):结构化查询语言(数据库的标准语言)
1)7个动词:CREATE
、ALTER
、DROP
、INSERT
、UPDATE
、DELETE
、SELECT
2)非过程语言(指定数据)、面向集合的语言(关系是操作对象)
3)既是自含式语言(独立使用),又是嵌入式语言(嵌入到宿主语言使用)
4)语言综合统一(集数据定义、数据操纵、数据管理的功能于一体)
数据定义语言(DDL):CREATE
、DROP
、ALTER
语句
数据操作语言(DML):INSERT
、UPDATE
、DELETE
语句
数据查询语言(DQL):SELECT
语句
数据控制语言(DCL):GRANT
、REVOKE
、COMMIT
、RELLBACK
等语句
//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] 数据库名;