MySQL数据库学习

虽然笔者从事的是Android客户端的开发,平时和数据库打的交道并不多,但是我们对于数据库这一块的学习还是很重要的,今天笔者想总结下MySQL关系型数据库的一些常用知识点

数据库概述

一、常见的概念

数据库(DataBase):数据库是按照数据结构来组织、存储和管理数据的仓库。数据库管理系统(Database Management SystemDBMS):是专门用于管理数据库的计算机系统软件。数据库管理系统能够为数据库提供数据的定义、建立、维护、查询和统计等操作功能,并完成对数据完整性、安全性进行控制的功能。

二、发展历程

我们一般说的数据库,就是指的DBMS: 数据库服务器。数据库技术发展历程如下:

  • 层次数据库和网状数据库技术阶段:使用指针来表示数据之间的联系。

  • 关系数据库技术阶段:经典的里程碑阶段。代表DBMS有Oracle、DB2、MySQL、SQL Server等。

  • 后关系数据库技术阶段:关系型数据库存在数据模型,性能,拓展伸缩性的缺点,出现了:

    • ORDBMS:面向对象数据库技术。

    • NoSQL :结构化数据库技术。

随着大数据的不断发展,非关系型的数据库现在成了一个极其热门的新领域,非关系数据库产品的发展非常迅速,产生了一系列出色的NoSQL数据库。

常见的NoSQL数据库分为四大类

  • 键值存储数据库:Oracle BDB,Redis,BeansDB

  • 列式储数数据库:HBase,Cassandra,Riak

  • 文档型数据库:MongoDB,CouchDB

  • 图形数据库:Neo4J,InfoGrid,Infinite Graph

常见的关系数据库:

数据库系 所属公司
Oracle Oracle
DB2 IBM
SQL Server MS
MySQL AB–>SUN–>Oracle

特点比较:

  • Oracle:运行稳定,可移植性高,功能齐全,性能超群!适用于大型企业领域,但是价格昂贵。

  • DB2:速度快、可靠性好,适于海量数据,恢复性极强。适用于大中型企业领域,但是价格昂贵。

  • SQL Server:全面,效率高,界面友好,操作容易,但是不跨平台。适用于中小型企业领域。

  • MySQL:开源,体积小,速度快。适用于中小型企业领域。

三、SQL:结构化查询语言(Structured Query Language)。

结构化查询语言是关系型数据库标准语言。特点:简单,灵活,功能强大。

SQL包含6个部分:

  • 数据查询语言(DQL):
    其语句,也称为“数据检索语句”,用以从表中获得数据,确定数据怎样在应用程序给出。保留字SELECT是DQL(也是所有SQL)用得最多的动词,其他DQL常用的保留字有WHERE,ORDER BY,GROUP BY和HAVING。这些DQL保留字常与其他类型的SQL语句一起使用。

  • 数据操作语言(DML):
    其语句包括动词INSERT,UPDATE和DELETE。它们分别用于添加,修改和删除表中的行。也称为动作查询语言。

  • 事务处理语言(TPL):
    它的语句能确保被DML语句影响的表的所有行及时得以更新。TPL语句包括BEGIN TRANSACTION,COMMIT和ROLLBACK。

  • 数据控制语言(DCL):
    它的语句通过GRANT或REVOKE获得许可,确定单个用户和用户组对数据库对象的访问。某些RDBMS可用GRANT或REVOKE控制对表单个列的访问。

  • 数据定义语言(DDL):
    其语句包括动词CREATE和DROP。在数据库中创建新表或删除表(CREAT TABLE 或 DROP TABLE);为表加入索引等。DDL包括许多与人数据库目录中获得数据有关的保留字。它也是动作查询的一部分。

  • 指针控制语言(CCL):
    它的语句,像DECLARE CURSOR,FETCH INTO和UPDATE WHERE CURRENT用于对一个或多个表单独行的操作。

四、书写规则

1.数据库中,SQL语句大小写不敏感 2.SQL语句可单行或多行书写 3.在SQL语句中,关键字不能跨多行或缩写 4.为了提高可读性,一般关键字大写,其他小写 5.空格和缩进使程序易读

  • 1

  • 2

  • 3

  • 4

  • 5

  • 1

  • 2

  • 3

  • 4

  • 5

五、表的理解

什么是表?表是用来干嘛的?表又叫二维表(有行和列) ,用来存储数据,
表具有固定的列数和任意的行数,在数学上称为“关系”。
二维表是同类实体的各种属性的集合,每个实体对应于表中的一行,在关系中称为一条记录
表中的列表示属性,称为Field,相当于通常记录中的一个数据项,也叫列、字段。
解释表结构和面向对象的关系
能不能使用面向对象的方式来操作数据库呢?

MySQL安装和配置

一、MySQL安装过程中注意:

  • MySQL的默认端口是:3306

  • 数据库默认字符集就是utf8

  • 设置密码:(尽量简单能记住,忘记后很麻烦)

  • MySQL的运行要基于 .Net framework 4和VC 库

  • 如果没有安装以上两个库则在安装过程中会出错,必须先安装以上程序

  • 解决MySQL占内存的问题:

  • 找到:my.ini文件:

  • table_definition_cache=400

  • table_open_cache=200

二、操作数据库的流程

  • 建立连接(认证身份)

  • 客户端向服务器端发送SQL命令

  • 服务器端执行SQL,并返回执行的结果

  • 客户端接收结果(并显示)

  • 断开连接

三、启动和连接MySQL

1.启动MySQL服务:打开数据库连接之前:一定要保证MySQL服务已经开启了.在服务中找到MySQL的服务,查看是否处于正在运行的状态

在Windows中使用命令控制服务的状态(必须使用管理员身份开启命令行)
开启服务: net start 服务名 如: net start mysql
关闭服务: net stop 服务名 如: net stop mysql

2.连接MySQL数据库:

  • 方式1:进入MySQL, 在命令行中输入密码;

  • 方式2:在命令行中:找到安装目录下的bin录制中有个mysql的命令
    格式:mysql -u账户 -p密码 -h数据库服务器安装的主机 -P数据库端口
    mysql -uroot -padmin -hlocalhost -P 3306
    若连接的数据库服务器在本机上,并且端口是3306。
    则可以

四、MySQL图形化管理软件Navicat:

  • Navicat for MySQL是一款强大的 MySQL 数据库管理和开发工具,它为专业开发者提供了一套强大的足够尖端的工具,但对于新用户仍然易于学习。

  • Navicat for MySQL 基于Windows平台,为 MySQL 量身订作,提供类似于 MySQL 的用管理界面工具。此解决方案的出现,将解放 PHP、J2EE 等程序员以及数据库设计者、管理者的大脑,降低开发成本,为用户带来更高的开发效率。

MySQL数据库操作

一、数据库操作和存储引擎

1.数据库和数据库对象

一般来说我们说的数据库(MySQL/Oracle等)指的都是数据库服务器(DBMS)
数据库:存储数据库对象的容器。
数据库对象:存储,管理和使用数据的不同结构形式,如:表、视图、存储过程、函数、触发器、事件等。
数据库分两种:

  • 系统数据库(系统自带的数据库):不能修改

information_schema:存储数据库对象信息,如:用户表信息,列信息,权限,字符,分区等信息
    performance_schema:存储数据库服务器性能参数信息。
    mysql:存储数据库用户权限信息。
    sys:系统配置信息。1234512345
  • 用户数据库(用户自定义的数据库):一般的,一个项目一个用户数据库。

2.数据库操作命令
(1)查看和选择数据库
  • 查看数据库服务器存在哪些数据库: SHOW DATABASES;

  • 使用指定的数据库:USE database_name;

  • 查看指定的数据库中有哪些数据表: SHOW TABLES;

(2)创建和删除数据库
  • 创建指定名称的数据库: CREATE DATABASE database_name;

  • 删除数据库:DROP DATABASE database_name;

3.数据库存储引擎

二、MySQL常用列类型

1.整数类型

最常用的整数类型:

MySQL列类型 Java数据类型
INT int/Integer
BIGINT long/Long

MySQL 以一个可选的显示宽度指示器的形式对 SQL 标准进行扩展,这样当从数据库检索一个值时,可以把这个值加长到指定的长度。例如,指定一个字段的类型为 INT(6),就可以保证所包含数字少于 6 个的值从数据库中检索出来时能够自动地用空格填充。需要注意的是,使用一个宽度指示器不会影响字段的大小和它可以存储的值的范围。一般不用指定位宽。

2.小数类型

FLOAT[(s,p)] :
DOUBLE[(s,p)] : 小数类型,可存放实型和整型 ,精度(p)和范围(s)
money double(5,2): 整数和小数一共占5位.其中小数占2位.
都不够精确。
定点数据类型: DECIMAL,高精度类型,金额货币优先选择。

MySQL列类型 Java数据类型
FLOAT float/Float
DOUBLE double/Double
DECIMAL(s,p) BigDecimal
3.字符类型

char(size) 定长字符,0 - 255字节,size指N个字符数,若插入字符数超过设定长度,会被截取并警告。
varchar(size) 变长字符,0 - 255字节,从MySQL5开始支持65535个字节,若插入字符数超过设定长度,会被截取并警告。
一般存储大量的字符串,比如文章的纯文本,可以选用TEXT系列类型,这个系列都是变长的。

注意:在MySQL中,字符类型必须指定长度,值要使用单引号引起来。 相当于Java中字符串(String,StringBuilder/StringBuffer);

对比char(4)和varchar(4)占用空间的问题?

4.日期和时间类型

日期和时间类型为DATETIME、DATE、TIMESTAMP、TIME和YEAR。
注意:在MySQL中,日期时间值使用单引号引起来。 相当于Java中Date,Calender。

5.二进制类型

存放图形、声音和影像,二进制对象,0-4GB。
开发中,我们一般存储二进制文件保存路径。
BIT:我们一般存储0或1,存储是Java中的boolean/Boolean类型的值。
其他的大二进制类型,开发中一般都不用

三、MySQL表的操作

1.创建表

步骤:
1. 先进入某一个数据库
2. 输入建表的命令

CREATE TABLE 表名( 列名1 列的类型 [约束], 列名2 列的类型 [约束], .... 列名N 列的类型 [约束] );

注意:最后一行没有逗号

使用使用标识符时不要用SQL的关键字,如果用到的话怎么办呢?比如新建一张订单表(order),但是order是数据库中的关键字(排序使用).

  • 解决方案一:使用反引号`把自定义的标识符引起来.

  • 解决方案二:使用表名的前缀,一般的,习惯t_order.

2.查看表结构和删除表
  • 查看表目录:SHOW TABLES;

  • 查看表结构: DESC table_name;

  • 查看DDL语句:SHOW CREATE TABLE table_name;

  • 删除表:DROP TABLE table_name;

3.表的约束:表的约束(针对于某一列):
  • 非空约束:NOT NULL(NK),不允许某列的内容为空。

  • 设置列的默认值:DEFAULT。

  • 唯一约束:UNIQUE(UK),在该表中,该列的内容必须唯一。

  • 主键约束:PRIMARY KEY(PK), 非空且唯一。

  • 主键自增长:AUTO_INCREMENT,从1开始,步长为1。(MySQL特有)

  • 外键约束:FOREIGN KEY(FK),A表中的外键列的值必须参照于B表中的某一列(B表主键)。

主键设计:

1:单列主键,单列作为主键,建议使用。
     复合主键,使用多列充当主键,不建议。
2:主键分为两种:   1)自然主键:使用有业务含义的列作为主键(不推荐使用);
   2)代理主键:使用没有业务含义的列作为主键(推荐使用);1234512345

单表查询(DQL上)

一、简单查询

1.简单数据查询
语法: SELECT {*, column [alias],...} FROM table_name; 说明: SELECT 选择查询列表 FROM 提供数据源(表、视图或其他的数据源) 如果为 * 和创建表时的顺序一致。 可以自己调整顺序,在select后边加上要查询的列名。
2.避免重复数据-DISTINCT
消除结果中重复的数据。
需求:查询商品的分类编号。
语法:
SELECT DISTINCT 列名,...FROM  table_name;1234512345
3.实现数学运算查询
对NUMBER型数据可以使用算数操作符创建表达式( - * /) 对DATE型数据可以使用部分算数操作符创建表达式 ( -) 运算符优先级:1、乘法和除法的优先级高于加法和减法2、同级运算的顺序是从左到右3、表达式中使用'括号'可强行改变优先级的运算顺序
4.设置列的别名
设置列名的别名。
1、改变列的标题头;
2、用于表示计算结果的含义;
3、作为列的别名;
4、如果别名中使用特殊字符,或者是强制大小写敏感,或有空格时,都需加双引号;1234512345

二、过滤查询

1.比较运算符
比较运算符 含义 = 等于 > 大于 >= 大于或等于 < 小于 <= 小于或等于 !=(<>) 不等于 注意:字符串和日期要用单引号扩起来. 要让MySQL查询区分大小写,可以:SELECT * FROM table_name WHERE BINARY productName='g9x'SELECT * FROM table_name WHERE BINARY productName='G9X'
2.逻辑运算符
逻辑运算符        含义AND(&&)          如果组合的条件都是TRUE,返回TRUEOR(||)           如果组合的条件之一是TRUE,返回TRUENOT(!)           如果下面的条件是FALSE,返回TRUE1234512345
3.优先级规则
运算优先级 运算符1 所有比较运算符2 NOT3 AND4 OR注意:括号将跨越所有优先级规则 分析SQL:SELECT * FROM product WHERE (NOT productName LIKE '%M%' AND salePrice > 100) OR (dir_id = 2)

    4.范围查询 -BTEWEEN AND
    使用BETWEEN运算符显示某一值域范围的记录,这个操作符最常见的使用在数字类型数据的范围上,但对于字符类型数据和日期类型数据同样可用。
    格式:SELECT <columnList> FROM table_nameWHERE 列名 BETWEEN minvalue AND maxvalue:闭区间。12341234
    5.集合查询 -IN
    使用IN运算符,判断列的值是否在指定的集合中。 格式: WHERE 列名 IN (值1,值2....);

    • 6.空值查询 -IS NULL

    IS NULL:判断列的值是否为空。
    格式:WHERE  列名 IS NULL;1212
    7.模糊查询
    使用LIKE运算符执行通配查询,查询条件可包含文字字符或数字:%通配符:可表示零或多个字符。 _通配符:可表示一个字符。 通配符:用来实现匹配部分值得特殊字符。

    三、结果排序

    排序通过ORDER BY 实现 ASC升序 DESC降序 默认是升序

    1.排序语法和规则
    2.按单列排序
    3.按多列排序
    4.列的别名排序

    四、MySQL分页查询

    分页设计:
    假分页(内存分页):所有数据已经存在内容中,只是显示部分而已,
        优点:每次翻页时都从内存中取数据,翻页速度极快,简单
        缺点:消耗内存大,容易内存溢出
    真分页(数据库分页):每次翻页都去数据库查询数据
        优点:不会造成内存溢出
        缺点:翻页比较慢,复杂
    此时,我们讲解MySQL特有的分页方式(LIMIT,在Oracle12C中也提供类似的语法).
    设置每页最多3条记录:
    语法: LIMIT ?, ?
    参数1:
    参数2:
    第一页:
    第二页:
    第三页:
    第四页:
    第N页:
    演示下公式的分页查询效果 LIMIT (currentPage-1)

    五、聚合函数

    什么是聚合函数/统计函数: 聚合函数作用于一组数据,并对一组数据返回一条记录。 COUNT:统计结果记录数 MAX: 统计计算最大值MIN: 统计计算最小值SUM: 统计计算求和 AVG: 统计计算平均值
    (0)

    相关推荐

    • Mysql基础01-语法

      数据库 数据的存储:将数据放到表中,表再放到库中. 一个数据库中可以有多个表,每个表都有一个名字,用来标识自己.表名具有唯一性. 表由列组成,我们也称为字段.每个字段描述了它所含有的数据的意义表由列组 ...

    • MySQL数据库~~~~初识、基础数据类型

      一 数据库初识 1.1 什么是数据库 数据库(DataBase,简称DB),简而言之可视为电子化的文件柜----存储电子文件的处所,用户可以对文件中的数据运行新增,截取,更新,删除等操作. 所谓数据库 ...

    • OGG12.1(LINUX) for 11G R2 RAC classical install 经典抽取模式单项同步配置OGG12.1

      博文结构图如下: 一.环境描述以及注意事项1.1 环境简介IP系统Oracle版本OGG版本源端172.16.10.16/36RHEL6.5oracle1120412.1目标端172.16.10.15 ...

    • Mysql:初识MySQL

      转载自:https://www.cnblogs.com/hellokuangshen/archive/2019/01/09/10246029.html Mysql:初识MySQL 只会写代码的是码农: ...

    • MySQL基础入门使用和命令的使用

      数据库了解 概念 数据库就是一种特殊的文件,其中存储着需要的数据 一个数据库可以有多张表 MySQL是一种关系型数据库 具有关联性数据的就是关系型数据库 MySQL是一种软件可以用来创建mysql数据 ...

    • jmeter压测学习18-JDBC配置连接mysql数据库

      前言 使用jmeter压测接口的时候,有时候需要批量造数据,需使用jmeter连数据库造对应的测试数据. 或者测试结束后,对测试的数据还原,删掉一些垃圾数据,都会用到连接数据库执行sql的操作. JD ...

    • MySQL基础知识学习之创建MySQL数据库和表

      虚构一个微型在线书店的数据库和数据,作为后续MySQL脚本的执行源,方便后续MySQL和SQL的练习. 在虚构这个库的过程中,主要涉及的是如何使用命令行管理 MySQL数据库对象:数据库.表.索引.外 ...

    • MySQL数据库基础学习教程,MySQL从入门到精通

      MySQL 是最流行的关系型数据库管理系统,在WEB应用方面 MySQL 是最好的 RDBMS:关系数据库管理系统应用软件之一. MySQL体积小.速度快,性能优异,也是目前企业实际开发中最广泛应用的 ...

    • UC头条:MySQL数据库定时备份到其他电脑

      最近我的一个学弟问了我一个问题,说他要实现一个功能,他老师给他提出来一个问题,让他的项目实现定时备份数据库到其他电脑,确保安全.他就来问我,还好我之前弄过,虽然我是干前端的,哈哈哈,之前学的比较杂. ...

    • ip命令网络配置工具参数选项有什么?linux数据库学习

      ip命令是iproute软件包中的一个强大的网络配置工具,用于显示或管理Linux系统的路由.网络设备.策略路由和隧道.ip命令是Linux运维工作中常会用到的命令,命令的熟练掌握对于Linux运维工 ...

    • mysql进阶学习二之搭建主从

      前面说了主从复制的原理,现在我们搭建主从结构 1. 提前准备 我准备了两台主机,主节点是远程的centos7,从节点是本机windows 主从复制的原理在上一篇已经说了:主节点中mysql创建一个用户 ...

    • mysql进阶学习三之mycat读写分离和分库分表

      前面已经配置了mysql的主从复制,其实很容易,主节点写入了数据,从节点进行同步,所以写操作使用主节点,读操作使用从节点,这样就有效降低了数据库的压力 但是我们用java程序不可能去连接多个数据源,执 ...

    • 从入门到入土:MySQL完整学习指南,包教包会!

      一 SQL 介绍 SQL(Structured Query Language),语义是结构化语言, 是一门 ANSI 的标准计算机语言,用来访问和操作数据库系统: 二 数据库介绍 2.1 数据库 我们 ...

    • 【竺】数据库笔记7——Mysql数据库备份

      *. mysql -u username -p password: 这个命令用于输入用户名和密码登陆mysql服务器: *.show databases;:用于查看mysql服务器中的数据库情况(会罗 ...