MySQL

第一章 数据库基础概述

一、概念

数据(data)是事实或观察的结果,是对客观事物的逻辑归纳,是用于表示客观事物的未经加工的的原始素材。
数据可以是连续的值,比如声音、图像,称为模拟数据。也可以是离散的,如符号、文字,称为数字数据。

数据可以说是企业的灵魂。
数据库,字面意思就是数据的仓库
概念:数据库(DB)是一种专门存储信息和维护信息的容器,严格地说数据库是“按照数据结构来组织、存储和管理信息的仓库”

二、相关定义

1、数据库管理系统(Database Management System-DBMS)管理数据库的软件。具有对数据存储、安全、一致性、并发操作、恢复和访问等功能。
2、数据词典(系统目录),也是一种数据,只不过这些数据记录的是数据库中存放的各种对象的定义信息和其他一些辅助管理信息,包括名字、结构、位置、类型等。这些数据被称为元数据(metadata)。

三、历程

数据管理主要经历过程:
手工管理阶段 :应用程序管理数据、数据不保存、不共享、不具有独立性。
早期的数据处理都是通过手工进行的,那时的计算机多用于科学计算,一个程序的数据一般不能被其他程序使用,此阶段没有专门的数据管理软件,程序员既要考虑数据的逻辑结构,还要设计存储数据的物理结构及存取方法等。
文件管理阶段 :文件系统管理数据、数据可长期保存、但共享性差、冗余度大、独立性差。
随着操作系统的诞生,应用程序可以通过文件系统将的数据组织成一个文件。文件系统提供对文件的访问和管理接口,这种方式多用于早期的单机信息管理系统。
数据管理阶段:数据库系统管理数据、数据结构复杂、冗余小、易扩充、较高的独立性、统一数据控制。

四、特征

数据库的特征:
数据结构化
实现数据共享
减少数据冗余
数据独立性

五、分类

按数据模型特点分:
网状型数据库 采用记录类型为节点的网状数据模型
层次型数据库 采用层次模型模拟现实世界中按层次组织起来的事物
关系型数据库 采用二维表结构组织和管理数据,并规定了表内和表间数据的依赖关系

六、关系型数据库

关系数据库是指一些相关的表和其他数据库对象的集合。对于关系数据库来说,关系就是表的同义词。
表是由行和列组成(类似二维数组的结构)。
列包含一组命名的属性(也称字段)。
行包含一组记录,每行包含一条记录。
行和列的交集称为数据项,指出了某列对应的属性在某行上的值,也称为字段值。
列需定义数据类型,比如整数或者字符型的数据。

七、数据库管理系统

数据库管理系统(DBMS)是用来管理数据的计算机软件,它能使用户方便地定义和操纵数据、维护数据的安全性和完整性,以及进行多用户下的并发控制和恢复数据库。
关系型数据库管理系统(RDBMS)是应用最广泛的一种数据库管理系统,关系型数据库管理系统以表、字段和记录等结构来组织数据。表用来保存数据,每个表由一组字段来定义其结构,记录则是表中的一条数据。本章介绍的MySQL就是一款常用的关系型数据库管理系统。
MySQL是由瑞典 MySQL AB公司开的一种开放源代码的关系型数据库管理系统(RDBMS),目前属于 Oracle 旗下产品。MySQL数据库系统使用最常用的数据库管理语言——结构化查询语言(SQL)进行数据库管理。

八、安装

1、双击


image.png

2、选择Custom(自定义)


image.png

九、MySQL结构

image.png

image.png

与多进程的Oracle数据库相比(并发性好),MySQL是一种单进程多线程的数据库,好处是上下文切换的代价比较小(性能好)。
下面来介绍一下MySQL服务器的组成部分
Connectors:用来与客户端应用程序建立连接的数据库接口
Management Services & Utilities:系统管理和服务控制相关的辅助工具
Connection Pool:负责处理与用户访问有关的各种用户登录、线程处理、内存和进程缓存需求
Sql Interface:提供从用户接受命令并把结果返回给用户的机制
Parser:对SQL语句进行语法分析和解析,构造一个用来执行查询的数据结构
Optimizer:优化查询语句,以保证数据检索动作的效率达到或者非常接近最最优。使用一种“选取-投影-联结”策略来处理查询,即先根据有关的限制条件进行选取(Select 操作)以减少将要处理的元组个数,再进行投影以减少被选取元组列的属性字段的个数,最后根据连接条件生产最终的查询结果
Caches & Buffers:保证使用频率最高的数据或结构能够以最有效率的方式被访问,缓存的类型有:表缓存、记录缓存、键缓存、权限缓存、主机名缓存等。
MySQL存储引擎是可插拔的,这里提到存储引擎。
存储引擎,用来处理数据库的CRUD操作,即读写修改删除,类似于文件系统,介绍两种存储引擎
InnoDB存储引擎的特点:
支持外键(Foreign Key)
支持事务(Transaction):如果某张表主要提供OLTP支持,需要执行大量的增、删、改操作(insert、delete、update语句),出于事务安全方面的考虑,InnoDB存储引擎是更好的选择。

MyISAM存储引擎的特点:
MyISAM具有检查和修复表的大多数工具。
MyISAM表可以被压缩
MyISAM表最早支持全文索引
但MyISAM表不支持事务
但MyISAM表不支持外键(Foreign Key)。
如果需要执行大量的select语句,出于性能方面的考虑,MyISAM存储引擎是更好的选择。

十、MySQL字符集

字符(Character)是指人类语言最小的表义符号,例如'A'、'B'等。
给定一系列字符,对每个字符赋予一个数值,用数值来代表对应的字符,这个数值就是字符的编码(Character Encoding)。
给定一系列字符并赋予对应的编码后,所有这些字符和编码对组成的集合就是字符集(Character Set)。MySQL中提供了多种字符集,例如latin1、utf8、gbk等。

第五章

DROP TABLE IF EXISTS dept;

CREATE TABLE dept (

DEPTNO int(2) NOT NULL,

DNAME varchar(14) DEFAULT NULL,

LOC varchar(13) DEFAULT NULL,

PRIMARY KEY (DEPTNO)

) ENGINE=InnoDB DEFAULT CHARSET=utf8;


-- Records of dept


INSERT INTO dept VALUES ('10', 'ACCOUNTING', 'NEW YORK');

INSERT INTO dept VALUES ('20', 'RESEARCH', 'DALLAS');

INSERT INTO dept VALUES ('30', 'SALES', 'CHICAGO');

INSERT INTO dept VALUES ('40', 'OPERATIONS', 'BOSTON');


-- Table structure for emp


DROP TABLE IF EXISTS emp;

CREATE TABLE emp (

EMPNO int(4) NOT NULL,

ENAME varchar(10) DEFAULT NULL,

JOB varchar(9) DEFAULT NULL,

MGR int(4) DEFAULT NULL,

HIREDATE date DEFAULT NULL,

SAL int(7) DEFAULT NULL,

COMM int(7) DEFAULT NULL,

DEPTNO int(2) DEFAULT NULL,

PRIMARY KEY (EMPNO),

KEY FK_DEPTNO (DEPTNO),

CONSTRAINT FK_DEPTNO FOREIGN KEY (DEPTNO) REFERENCES dept (DEPTNO)

) ENGINE=InnoDB DEFAULT CHARSET=utf8;


-- Records of emp


INSERT INTO emp VALUES ('7369', 'SMITH', 'CLERK', '7902', '1980-12-17', '800', null, '20');

INSERT INTO emp VALUES ('7499', 'ALLEN', 'SALESMAN', '7698', '1981-02-20', '1600', '300', '30');

INSERT INTO emp VALUES ('7521', 'WARD', 'SALESMAN', '7698', '1981-02-22', '1250', '500', '30');

INSERT INTO emp VALUES ('7566', 'JONES', 'MANAGER', '7839', '1981-04-02', '2975', null, '20');

INSERT INTO emp VALUES ('7654', 'MARTIN', 'SALESMAN', '7698', '1981-09-28', '1250', '1400', '30');

INSERT INTO emp VALUES ('7698', 'BLAKE', 'MANAGER', '7839', '1981-05-01', '2850', null, '30');

INSERT INTO emp VALUES ('7782', 'CLARK', 'MANAGER', '7839', '1981-06-09', '2450', null, '10');

INSERT INTO emp VALUES ('7788', 'SCOTT', 'ANALYST', '7566', '1987-04-19', '3000', null, '20');

INSERT INTO emp VALUES ('7839', 'KING', 'PRESIDENT', null, '1981-11-17', '5000', null, '10');

INSERT INTO emp VALUES ('7844', 'TURNER', 'SALESMAN',

'7698', '1981-09-08', '1500', '0', '30');

INSERT INTO emp VALUES ('7876', 'ADAMS', 'CLERK', '7788', '1987-05-23', '1100', null, '20');

INSERT INTO emp VALUES ('7900', 'JAMES', 'CLERK', '7698', '1981-12-03', '950', null, '30');

INSERT INTO emp VALUES ('7902', 'FORD', 'ANALYST', '7566', '1981-12-03', '3000', null, '20');

INSERT INTO emp VALUES ('7934', 'MILLER', 'CLERK', '7782', '1982-01-23', '1300', null, '10');
DDL
一、数据类型
数字 int(4)最多4位整数
float小数
字符 varchar(32) 最多32个英文16个中文,有3个字符就显示3个字符
char(32)32个英文16个中文,3个字符显示32,缺的地方用空格补全
时间 date年月日
timestamp 时间戳精确到毫秒
time 时分秒
datetime 年月日时分秒
二、1、建表语句
创建book表,列有bookno(int),bookname(varchar)
create table tname
2、修改表
①增加一列
alter table tname add (cname 类型,cname 类型)
新增规格列,列名叫size,可容纳16个汉字
②修改一列类型
alter table tname modify cname 类型
将一列修改为其他类型要求列必须存在,且兼容已有数据
③删除一列
alter table tname drop cname
④更改表的名字
alter table tname rename to newtname
⑤更改列的名字
alter table tname change cname cname2 类型
3、删除表
drop table tname
4、截断表
truncate table tname
三、约束
1、默认值
当用户对使用默认值的字段不插入值的时候,就使用默认值
默认值的字段允许为空,只有当不插入值的时候才生效,允许插入null
2、非空
限制字段必须赋值
非空字段必须赋值,不能赋null
3、唯一
对字段的值不能重复,唯一的字段可以null,且可以多个字段插入null
4、主键(非空+唯一)
通常情况下,每张表都会设置一个主键字段,用以标记每条记录的唯一性,建议不要选择表包含的业务字段作为主键,设计独立的非业务含义的id作为主键
5、自增长
自动递增
delete from不能影响自增长约束
truncate可以影响truncate约束
6、外键
约束两张表的数据
create table tname(
cname 类型 primary key
)
create table tname1(
cname1 类型
constraint tname1_tname_fk foreign key(cname1) references tname(cname)
)
alter tname1 add constraint tname1_tname_fk foreign key(cname1) references tname(cname)
四、视图、索引
1、视图
from子句中的子查询就是视图,所以非常“像”表
视图就是透过窗口看到的数据组合或数据的部分,并不是真正的数据,就像桌面的快捷方式,视图本身不会存储数据
为何要用视图
比如银行有工程师要维护用户表,不能让其看到敏感字段,比如密码
例提供给7566员工,20号部门的员工信息,不包含月薪和奖金
创建视图需要赋予权限
grant create view to scott
create or replace view emp20_view
as
select empno,ename,job,mgr,hiredate,deptno
from emp
where deptno = 20
2、索引
作用:有可能提升数据的查询速度,但同时必定会降低DML的速度,有点伤人1000,自损800的意味
自动创建索引
为一张表的某个列设置了主键约束或唯一约束,会自动为这个列生成索引
手动创建索引
create index emp_ename_index on emp(ename)
删除索引
drop index emp_ename_index
适合做索引的列
1、经常做查询但很少改动的列
2、表数据量要够大,数据量少加索引反而更慢
3、数据中存在的null值比较多
4、经常查询的数据的数量占总量的1%-4%
五、用户和权限
装完mysql后默认会有一个root用户,拥有所有权限,为所欲为,实际开发当中这个账户不能让所有人都知道,因此每个人的权限是不同的只能拥有部分权限,例只能操作某个数据库的某张表
1、如何修改root的密码
update user set password = password('kkk') where user = 'root'
2、分配权限账户
grant 权限 on 数据库.表 to '账户名'@'账户类型' identified by '密码'
权限有 select、insert、update、delete、drop、create、all
3、收回权限
REVOKE ALL PRIVILEGES,GRANT OPTION
FROM 'username'@'hostname'
六、分区
大数据存储时代,需要对数据进行优化
目前主要有两种方式
第一种用SQL语句优化
第二种分区管理
常用
range
给定区间作为参考点去分区
list
属于range的特殊情况,列是固定值,比如性别只有男和女
hash
根据值随机的分配不同的区域
key

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,445评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,889评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,047评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,760评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,745评论 5 367
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,638评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,011评论 3 398
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,669评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,923评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,655评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,740评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,406评论 4 320
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,995评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,961评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,197评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,023评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,483评论 2 342

推荐阅读更多精彩内容