mysql基础
数据库基本概念
磁盘文件--> 层次模型 --> 网状模型 --> (Codd) 关系模型
DBMS是管理数据库的系统软件,它实现数据库系统的各种功 能。是数据库系统的核心
DBA:负责数据库的规划、设计、协调、维护和管理等工作
关系 :关系就是二维表。并满足如下性质: 表中的行、列次序并不重要
行row:表中的每一行,又称为一条记录
列column:表中的每一列,称为属性,字段
主键(Primary key):用于惟一确定一个记录的字段;复合主键:多个字段组合成一个主键(NOT NULL);
惟一键:一个或多个字段的组合,填入的数据必须能在本表 中唯一标识本行;允许为NULL,一个表可以存在多个
约束:
主键约束:惟一、非空;一张表只能有一个;
惟一键约束:惟一,可以存在多个;
外键约束:参考性约束;
检查性约束:check;
三层模型:
物理层 --> SA (决定数据的存储格式,即RDBMS在磁盘上如何组织文件)
逻辑层 --> DBA(描述存储什么数据,以及数据间存在什么样的关系)
视图层 --> Coder(描述DB中的部分数据)
域domain:属性的取值范围,如,性别只能是‘男’和‘女’ 两个值
表:row, column;
关系运算:选择、投影
数据库:表、索引、视图(虚表)、SQL、存储过程procedure,过程无返回值、存储函数function,过程有返回值、触发器trigger、事件调度器event scheduler,任务计划;
事务transaction:多个操作被当作一个整体对待 ACID: 原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation,又称独立性)、持久性(Durability)。
原子性:整个事务中的所有操作,要么全部完成,要么全部不完成,不可能停滞在中间某个环节。事务在执行过程中发生错误,会被回滚(Rollback)到事务开始前的状态,就像这个事务从来没有执行过一样。
一致性:在事务开始之前和事务结束以后,数据库的完整性约束没有被破坏。
隔离性:两个事务的执行是互不干扰的,一个事务不可能看到其他事务运行时,中间某一时刻的数据。
持久性:在事务完成以后,该事务所对数据库所作的更改便持久的保存在数据库之中,并不会被回滚。
数据的操作:• 数据提取:在数据集合中提取感兴趣的内容。(SELECT)• 数据更新:变更数据库中的数据。(INSERT、DELETE、 UPDATE)
应用程序指以数据库为基础的应用程序:DBMS --> RDBMS(关系型数据库管理系统)
设计关系数据库时,遵从不同的规范要求,设计出合理的 关系型数据库,这些不同的规范要求被称为不同的范式,各种范 式呈递次规范,越高的范式数据库冗余越小。
目前关系数据库有六种范式:第一范式(1NF)、第二范式 (2NF)、第三范式(3NF)、巴德斯科范式(BCNF)、第 四范式(4NF)和第五范式(5NF,又称完美范式)。满足最 低要求的范式是第一范式(1NF)。在第一范式的基础上进 一步满足更多规范要求的称为第二范式(2NF),其余范式 以次类推。一般说来,数据库只需满足第三范式(3NF)即可
RDBMS:
范式:第一范式、第二范式、第三范式;
1NF:无重复的列,每一列都是不可分割的基本数据项,同 一列中不能有多个值
2NF:属性完全依赖于主键,第二范式必须先满足第一范式 ,要求表中的每个行必须可以被唯一地区分。
3NF:属性不依赖于其它非主属性,满足第三范式必须先满 足第二范式。第三范式要求一个数据库表中不包含已在其它表中已包含的非主关键字信息,非PK的字段间不能有从属关系
SQL: Structure Query Language:结构化查询语言--- SQL解释器---数据存储协议:应sq用层协议,C/S
olacle(tcp:1521),mysql(tcp:3306),sql server(tcp:1433)
mysql基础和应用结构
mysql特性:插件式存储引擎、单进程多线程
mysql体系结构:
安装:服务端mysql-server和客户端mysql,yum安装,二进制安装,源码编译安装
提高安全性 :运行mysql_secure_installation
服务端程序:
mysqld, mysqld_safe, mysqld_multi
客户端程序:
mysql, mysqldump, mysqlbinlog, mysqladmin, ...
非客户端类管理程序:
myisamchk, myisampack, ...
配置文件: /etc/my.cnf 和 /etc /my.cnf.d/ *.cnf
mysql命令选项:
-uUSERNAME: 用户名;默认为root
-hHOST: 服务器主机; 默认为localhost
-pPASSWORD:用户的密码;建议使用-p,默认为空密码
mysql用户账号由两部分组成: 'USERNAME'@'HOST' HOST用于限制此用户可通过哪些远程主机连接mysql服务
支持使用通配符: % 匹配任意长度的任意字符 172.16.64.0/16 或 172.16.%.% _ 匹配任意单个字符
运行mysql前通常修改的参数
在配置文件的[mysqld]中添加两个选项:
innodb_file_per_table = on 启用innodb存储引擎
skip_name_resolve = on 禁止主机名解析
MYSQL语言基础
在数据库系统中,SQL语句不区分大小写(建议用大写) ,但字符串常量区分大小写
SQL语句可单行或多行书写,以“;”结尾,关键词不能跨多行或简写
用空格和缩进来提高语句的可读性 ,句通常位于独立行,便于编辑,提高可读性
注释: SQL标准: /*注释内容*/ 多行注释 -- 注释内容 单行注释,注意有空格
MySQL注释: #
数据库对象的命名规则 :1.必须以字母开头 ;2.可包括数字和三个特殊字符(# _ $);3.不要使用MySQL的保留字 ;4.同一Schema下的对象不能同名
MySQL的数据类型:字符型、数值型、日期时间型、内建类型
字符型:CHAR(#), BINARY(#):定长型;CHAR不区分字符大小写,而BINARY区分;
VARCHAR(#), VARBINARY(#):变长型TEXT:TINYTEXT,TEXT,MEDIUMTEXT,LONGTEXT
BLOB:TINYBLOB,BLOB,MEDIUMBLOB, LONGBLOB
数值型:
浮点型:近似FLOAT、DOUBLE、REAL、BIT
整型:精确:INTEGER:TINYINT,SMALLINT,MEDIUMINT,INT,BIGINT;DECIMAL
日期时间型:日期:DATE;时间:TIME;日期j时间:DATETIME;间戳:TIMESTAMP;年份:YEAR(2), YEAR(4)
内建:ENUM:枚举:ENUM('Sun','Mon','Tue','Wed');SET:集合
类型修饰符:
字符型:NOT NULL,NULL,DEFALUT ‘STRING’,CHARACET SET ‘CHARSET’,COLLATION ‘collocation'
整型:NOT NULL, NULL, DEFALUT value, AUTO_INCREMENT, UNSIGNED(使用unsigned会使数据可变长度增长一倍)
日期时间型:NOT NULL, NULL, DEFAULT
DML:
INSERT/REPLACE(增), DELETE(删), SELECT(查), UPDATE(改),ALTER。
创建数据库:CREATE DATABASE |SCHEMA [IF NOT EXISTS] 'DB_NAME';
删除数据库:DROP DATABASE | SCHEMA [IF EXISTS] 'DB_NAME';
查看支持所有字符集:SHOW CHARACTER SET;
查看支持所有排序规则:SHOW COLLATION;
查看数据库列表:SHOW DATABASES;
创建表:CREATE TABLE 'DB_TABLE_N