数据查询语言(DQL)---select基本使用
写在前面前面学习使用DML来管理数据库中的数据,接下来学习如何使用数据查询语言(Data Query Language)来对数据库中存储的数据进行查询操作。说白了就是介绍如何从数据库中获取数据,开发者可以按照DQL的语法给数据库发送一条指令,然后数据库就会按照需求来返回满足条件的数据。
由于DQL使用起来较为复杂,且应用场景较为广泛,因此这里分多篇进行介绍学习。本篇是DQL基础篇,主要学习的内容如下所示:(1)DQL基本语法格式;(2)查询常量;(3)查询表达式;(4)查询函数;(5)查询指定字段;(6)查询所有列;(7)列别名;(8)表别名等。
DQL语法基本语法格式数据查询最基本的语法格式如下所示:
1select 查询的列 from 表名;
请注意,由于MySQL不区分大小写,因此语句中的select和SELECT、from和FROM最终效果都是一致的。
查询结果会放在一个表格中,表格的第一行称为列头,自第二行开始是数据,有点类似于一个二维数组。
查询常量查询常量的语法格式如下所示:
1select 常量值1,常量值2,常量值3,...;
例子1:下面就展示了,如何查询常量:
1 ...
数据管理语言(DML)---insert、delete和update
写在前面前面学习使用DDL来管理数据库、数据表和列,接下来学习如何使用数据操作语言(Data Manipulation Language)来对数据库中存储的数据进行一些管理操作。数据操作语言以INSERT(增加)、UPDATE(修改)、DELETE(删除)三者为核心,是非常重要的操作指令。通常我们习惯上将这三者加上后面即将学习的SELECT称为CRUD,也就是增删改查。
本篇主要学习的内容如下所示:(1)插入操作–插入单行;(2)插入操作–批量插入;(3)修改操作–单表修改;(4)修改操作–多表修改;(5)删除操作–使用delete删除–delete单表删除;(6)删除操作–使用delete删除–delete多表删除;(7)使用truncate删除;(8)drop、truncate和delete区别等。
同时需要说明的是,本文所有命令中包含的[]内的信息属于可选项,开发者可按照实际情况进行选用。
插入操作插入单行插入单行有两种方式,下面分别进行介绍。
方式1:使用values命令,完整命令格式如下所示:
1insert into 表名[(字段1,字段2,...)] values(值1, ...
数据定义语言(DDL)
写在前面本篇正式进入数据库相关操作的学习,会使用数据定义语言(Data Define Language)来对数据库、数据表进行一些管理操作。
本篇主要学习的内容如下所示:(1)创建库;(2)删除库;(3)列出库的信息;(4)建库的通用命令;(5)创建表;(6)查看数据表结构:(7)修改表;(8)表设置备注;(9)删除表;(10)复制表;(11)修改表的存储引擎;(12)增加列;(13)修改列;(14)删除列;(15)几个问题等。
同时需要说明的是,本文所有命令中包含的[]内的信息属于可选项,开发者可按照实际情况进行选用。
库管理创建库创建库的语法格式如下:
1create database [if not exists] 库名;
删除库删除库的语法格式如下:
1drop database [if exists] 库名;
列出库的信息开发者可以使用如下命令来列出库的信息:
1show databases like '数据库名';
建库的通用命令一般都会先判断是否存在某个数据库,如果存在则先删除该库,然后才重新创建;如果不存在则直接创建,此时建库的通用命令如下:
12d ...
数据类型详解
写在前面在了解了MySQL相关的基础信息之后,接下来开始学习MySQL中的数据类型。数据库列表由多列构成,每一个字段指定了不同的数据类型。指定字段的数据类型之后就决定了向字段插入的数据的内容。不同的数据类型决定了MySQL在存储它们的时候使用的方式,以及在使用它们的时候应当选择什么运算符号进行运算。
MySQL支持多种数据类型,主要有数值类型、日期/时间类型和字符串类型,本篇将简单介绍以下数据类型:(1)、整数类型tinyint、smallint、mediumint、int、bigint;(2)、浮点小数类型float和double,定点小数类型decimal。(3)、日期/时间类型:包括year、time、date、datetime和timestamp。(4)、字符串类型:包括char、varchar、binary、varbinary、blob、text、enum和set等。字符串又分为文本字符串和二进制字符串。
整数类型数值型数据类型主要用于存储数字。MySQL提供了多种数值数据类型,不同的数据类型提供不同的取值范围,可以存储的值范围越大,则所需要需要的存储空间也就越大。MySQL ...
数据库引擎
写在前面MySQL有多种存储引擎,因此选择合适的存储引擎可以解决一些特殊问题。
初始化数据库MySQL安装完成后,将会在其data目录下自动创建几个必需的数据库,可以使用SHOW DATABASES;语句来查看当前所有存在的数据库,如下所示:
123456789101112mysql> SHOW DATABASES;+--------------------+| Database |+--------------------+| information_schema || mysql || performance_schema || quotes || sys || test_db |+--------------------+6 rows in set (0.22 sec)
可以看到,数据库列表中包含了6个数据库,这些都是MySQL必须的,它描述用户的访问权限,用户经常利用test_db数据库做测试相关工作。
数据库管理创建数据库是在系统磁盘上划分一块区域用 ...
MySQL概述
写在前面MySQL数据库在实际工作中使用的较多,因此有必要抽出一定时间进行一个较为系统的总结,本套笔记是从2017年开始到2019年近三年的使用总结,里面涉及的东西很多,需要仔细学习和体会。
本篇主要学习以下内容:(1)数据库简述;(2)数据库特点;(3)数据库存储数据的特点;(4)数据表;(5)数据类型;(6)主键;(7)SQL语言;(8)数据库访问接口;(9)什么是MySQL;(10)客户端-服务器软件;(11)MySQL版本;(12)MySQL的优势;(13)MySQL5.7新功能;(14)MySQL服务端工具程序;(15)MySQL客户端工具程序;(16)MySQL启动;(17)MySQL登录命令;(18)其他常用命令;(19)MySQL语法规范。
数据库简述数据库发展:人工管理阶段、文件系统阶段、数据库系统阶段、高级数据库阶段。种类大概有:层次式数据库、网络式数据库和关系型数据库,不同种类的数据库按照不同的数据结构来联系和组织。
数据库是一个长期存储在计算机内的、有组织的、有共享的、统一管理的数据集合。它是一个按照数据结构来存储和管理数据的计算机软件系统,即数据库包含两层含义 ...
基于Dockerfile创建镜像
写在前面在前面我们对Dockerfile文件进行了较为详细的学习,介绍了其中的配置指令和操作指令,那么在编写完Dockerfile文件后,开发者如何基于它来创建镜像呢?本篇就来学习相关内容。
创建镜像在编写完Dockerfile文件后,开发者可以使用docker build [image]命令来创建镜像。其基本的命令格式如下所示:
1dokcer build [OPTIONS] PATH | URL | -
该命令用于读取指定路径下(包括子目录)的Dockerfile,并将该路径下所有数据作为上下文(Context)发送给Docker服务端。Docker服务端在校验Docker格式并通过后,将逐条执行其中定义的指令,注意在遇到ADD、COPY和RUN指令时,会生成一层新的镜像。最终镜像如果创建成功,那么会返回最终镜像的ID。
上下文不能太大,过大会导致发送大量数据给服务端,延缓创建过程,因此除非是生成该镜像所必须的文件,否则请不要放到上下文路径中。前面也说了,默认是使用上下文路径中的Dockerfile,而如果使用的不是上下文中路径中的Dockerfile,那么就可以通过-f参数来指定 ...
使用Dockerfile
写在前面在前面我们简单提到了如何使用Dockerfile文件来创建镜像,鉴于这种方式在日常工作中使用的较为频繁,因此这里专门拿出一篇文章来研究如何使用Dockerfile配置文件来创建镜像。这里会介绍Dockerfile比较典型的基本结构及其支持的众多指令,然后通过这些指令来编写定制镜像的Dockerfile文件,接着便使用该Dockerfile文件来生成镜像,最后会结合笔者自身工作经验来谈谈一些使用Dockerfile的最佳实践。
DockerfileDockerfile是一个由一组指令组成的文本格式的配置文件,其中的每条指令对应Linux中的一条命令,它可以利用给定的指令描述基于某个父镜像来创建新镜像。Dockerfile是由一行行命令语句组成,并且支持以#号开头的注释行。
一般来说,Dockerfile主体内容分为4个部分:基础镜像信息、维护者信息、镜像操作指令和容器启动时执行指令。
下面是一个开源的名为renren-fast的项目构建使用的Dockerfile文件,如下所示:
1234567FROM java:8EXPOSE 8080VOLUME /tmpADD renren- ...
端口映射与容器互联
写在前面在前面我们已经掌握了单个容器的管理操作,但是在实际工作中很少是只运行一个容器,而更多的是需要运行多个容器进行协作的情况,因此就需要多个容器之间能够互相访问到对方的服务,那么本篇文章就来学习Docker端口映射与容器互联相关的知识,注意本文所提到的宿主机是指VMware虚拟机,而非本地的Windows系统主机。
端口映射Docker除了通过网络访问外,还提供了其他两个非常方便的功能来满足服务访问的基本需求,一是允许映射容器内应用的服务端口到本地宿主机端口;二是使用互联机制来实现多个容器间通过容器名来快速访问。
从外部访问容器应用 请注意,开发者在启动容器的时候,如果不指定对应的参数,那么在容器外部是无法通过网络来访问容器内的网络应用和服务的。 当容器中运行一些网络应用,要让外部访问这些应用的时候,可以通过-P或者-p参数来指定端口映射。当使用-P(大写)的时候,Docker会随机映射一个49000~49900的端口到内部容器开放的网络端口:
12345[root@envythink ~]# docker run -d --name eyou -P training/webap ...
Docker数据管理
写在前面在前面我们详细学习了docker的三大核心概念:镜像、容器和仓库,接下来开始学习如何管理数据。在实际工作中使用docker,往往需要对数据进行持久化,或者需要在多个容器之间进行数据共享,此时必然会使用到容器数据管理的各种操作。
容器中的数据管理主要有两种方式:(1)数据卷(Data Volumes),表示容器内数据直接映射到本地主机环境;(2)数据卷容器(Data Volume Containers),表示使用特定容器维护数据卷。
本篇就来学习docker数据管理相关的知识,首先会介绍如何在容器内创建数据卷,并且把本地目录或者文件挂载到容器内的数据卷中,接着介绍如何使用数据卷容器在容器和宿主机、容器和容器之间共享数据,并实现数据的备份和恢复。
数据卷数据卷(Data Volumes)是一个可供容器使用的特殊目录,它将宿主机操作系统目录直接映射进容器,有点类似于Linux操作系统中的mount行为。
数据卷特性数据卷提供很多特性,包括且不限于以下几点:(1)数据卷可以在容器之间共享和重用,容器间传递数据将变得高效与方便;(2)无论是容器内操作还是本地操作,用户对数据卷内数据的修改 ...