天成1 发表于 2018-10-19 10:45:39

SQL杂文和常见问题整理

  Q:数据库启动失败,提示找不到pid文件
  A:1、之前的数据库服务未释放,导致3306端口处于占用状态
  2、数据库初始化失败
  3、数据目录位置错误
  4、数据目录权限问题
  SQL模型:
  ANSI QUOTES
  IGNORS_SPACE
  STRICT_ALL_TABLES
  STRICT_TRANS_TABLES
  RADITIONAL
  MYSQL服务器变量:
  作用域:分为两类
  全局变量
  SHOW GLOBAL VARIABLES
  会话变量
  SHOW VARIABLES
  DDL:数据操作语言
  INSERT
  DELETE
  SELECT
  UPDATE
  DML:数据定义语言
  CREATE
  DROP
  ALTER
  DCL:数据控制语言
  GRANT
  REVOKE
  RDB对象:
  库、表、索引、视图、用户、存储过程、存储函数、触发器、事件调度器。
  

    约束:  域约束:数据类型约束
  外键约束:引用完整性约束
  主键约束:某字段能唯一标识此字段所属的实体,并且不允许为空一张表中可以有多个
  检查性约束:age:int
  

  关系型数据库:
  表示层:表
  逻辑层:存储引擎
  物理层:数据文件
  

数据存储和查询  
存储管理器:
  权限机完整性管理
  事务管理器
  文件管理器
  缓冲区管理器
  
查询管理器:
  DML解释器
  DDL解释器
  DCL解释器
  
查询执行引擎
  

  
mysql是单进程多线程的系统;不会给多个进程启动多个进程!
  

  
线程复用
  

  
mysql不支持对称多处理器(smp),意思是不能在一个sql处理分摊到多个cpu上处理,因此在处理速度上面就慢。
  

  关系运算:
  投影:只输出指定的字段
  选择:只输出符合条件的行
  自然链接:具有相同名字的所有属性值上取值相同的行
  笛卡尔积:
  SQL查询语句:
  sequel ---> SQL
  SQL-86
  SQL-89
  SLQ-92
  SQL-99
  SQL-08
  SQL语言的组成部分:
  DDL:
  DML:
  完整性定义语言:DDL的一部分功能
  视图定义:
  事务控制:
  嵌入式SQL和动态SQL:
  授权:DCL
  

使用程序设计语言如何RDBMS交互:  嵌入式SQL:与动态SQL类似,但其语言必须程序编译时完全确定下来;
  ODBC;针对的程序为 C
  动态SQL:程序设计语言使用函数(mysql_conect())或者方法与RDBMS服务器建立连接,并进行交互;通过建立连接向SQL服务器发送查询语句,并将结果保存至变量中而后进行处理。
  JDBC;针对的程序为 JAVA
  

  
MYSQL支持插件式存储引擎
  
mysql 5.5.8的之前的存储引擎是MyISAM,不支持事务。特别适合查询比较多但是修改比较少的场景。
  
mysql 5.5.8版本之后的存储引擎是InnoDB,
  

  
表管理器:负责创建、读取或修改表定义文件;维护表描述高速缓存;管理表锁。
  
表结构定义文件。
  
表修改模块:表创建、删除、重命名、移除、更新或插入之类的操作
  
表维护模块:;检查、修改、备份、恢复、优化(碎片整理)及解析;
  

  文件中记录组织:
  堆文件组织:一条记录可以放在文件中的任何地方。
  顺序文件组织:根据”搜索码“值顺序存放;
  散列文件组织:
  表结构定义文件;表数据文件
  表空间:table space
  数据字典:Data Dictionary;mysql初始化,即mysql的数据字典
  

      关系的元数据:  关系的名字
  字段的名字
  字段的类型和长度
  视图
  约束
  

  用户名字、授权、密码
  

  缓冲区管理器:
  缓存置换策略:


页: [1]
查看完整版本: SQL杂文和常见问题整理