MySQL使用入门

数据库概述

数据库是存放数据的仓库。在应用的开发中总是离不开数据的查询、处理、存储,例如图书管理系统就需要操纵和存储大量的数据。没有数据库之前我们使用文件存储数据,但是文件存储有很多弊端,查询效率低,读取麻烦,不易于管理等等,这么多的麻烦我们都可以交给数据库进行管理,数据库是专门为数据存储管理开发的软件,使用它可以有更高的效率和安全性

  • 数据库的分类

    不同数据库管理数据的方式有很大差别。以是否为关系型数据库可分为两大类。

    关系型:MySQL、ORACAL、DATEBASE、PostgreSQL、SQL server

    非关系型:Redis、MongoDB

  • 关系型数据库MySQL

    暂不讨论各个数据库之间的区别,本文主要目的在于掌握MySQL的基本应用。

    什么是关系型数据库?关系型数据库存的表是二维的表格,比如一张学生信息表,一个学生的信息包含很多项:学号、姓名、性别和年龄等。60个学生就有60个不同学号,最多60个姓名,性别或男或女,每一个项(在表格中是每一列)都是一个同类型值得集合,而集合之间并不是任意随机得组合,不是随便拿一个学号随便拿一个姓名就组合在一起,而是有意义得特定组合,用于表示一个一个的学生信息,这就是所谓得“关系”。如果你不想理解这些,权当它就是excel表格就好。

MySQL安装

Windows安装MySQL5.7.17

  1. 在MySQL官网 http://dev.mysql.com/downloads/mysql/ 上面下载ZIP安装包(Windows (x86, 64- bit), ZIP Archive)。

  2. 下载完成后解压,将其放到想要安装的目录下。 例如:D:\MySQL5.7\mysql-5.7.17-winx64

  3. 新建一个my.ini配置文件,原始的my-default.ini配置文件只是个模版,不要在里面改动。 my.ini的内容如下:

[mysql] default-character-set=utf8
[mysqld] port = 3306 basedir=D:\MySQL5.7\mysql-5.7.17-winx64 datadir=D:\MySQL5.7\mysql-5.7.17- winx64\data max_connections=200 character-set-server=utf8 default-storage-engine=INNODB explicit_defaults_for_timestamp=true
  1. 在安装路径下新建一个空的data文件夹。

  2. 以管理员身份运行cmd,进入bin目录,执行 mysqld --initialize-insecure --user=mysql 命令。不进行这一步,安装完成之后无法启动服务。

  3. 依然在管理员cmd窗口的bin目录下,执行 mysqld install 命令安装。完成后会提示安装成功。

  4. 依然在管理员cmd窗口的bin目录下,执行net start mysql命令启动MySQL服务。

  5. 修改环境变量,添加 "D:\MySQL5.7\mysql-5.7.17-winx64\bin"。

  6. 在普通cmd窗口中,进入bin目录,执行 mysql -u root -p 命令,默认没有密码,回车进入。

Mac系统中安装MySQL

使⽤Mac中的Homebrew进⾏mysql的安装

  1. 下载安装mysql

    brew install mysql@5.7

    如果看到以下界⾯则表示已经下载安装成功

  2. 启动mysql

    mysql.server start

  3. 关闭mysql

    mysql.server stop

  4. 登录mysql

    mysql -u root -p

数据库的基本逻辑结构

整个MySQL库中包含多个库,其中四个是自带的核心库。每个库中又有若干个个表,每个表就类似于一个excel表格
- MySQL
- 若干库
- 若干表

基础操作

初识MySQL

  1. 首先终端输入命令 mysql -u root -p 登录MySQL
  2. 查看库输入 show databases; 语句查看所有库(所有SQL语句都以分号结尾)。结果如下
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
+--------------------+
-- 可以看见四个预置的库,都是一些核心库不要删除。
  1. 选择其中一个库(例如mysql库)use mysql;
  2. 查看库中所有表 show tables;
+---------------------------+
| Tables_in_mysql |
+---------------------------+
| columns_priv |
| db |
| engine_cost |
| event |
| func |
... ...
| time_zone_transition |
| time_zone_transition_type |
| user |
+---------------------------+
-- 行数比较多,中间部分省略号表示
  1. select host,user from user;查看user表中的所有数据的 host和user字段列
+-----------+---------------+
| host | user |
+-----------+---------------+
| localhost | mysql.session |
| localhost | mysql.sys |
| localhost | root |
+-----------+---------------+
  1. select * from user;查看user表中的所有数据的所有字段

新建一个库

create database mydb default charset=utf8;
-- 执行后查看所有库就能看见mydb库。其中default charset=utf8 选定库的使用的字符集为UTF-8

新建一个表

-- 在哪个库中建表必须先选中那个库,然后使用下面语句创建一个简单的表user
create table user(
name varchar(20),
age int,
sex char(1)
)engine=innodb default charset=utf8;
-- 注意每个字段之间逗号隔开,最后一个字段后面没有逗号!

向表中添加数据

-- 向user表中添加name,age,sex数据
insert into user(name,age,sex) values('admin',26,'男');
-- 字段赋值顺序可以自由排列,也可以选择性赋值。若没有提供赋值顺序,默认按照定义顺序全部赋值
insert into user values('张三',22,'女');

DML

Data Manipulation Language 数据操作语言

-- 数据操纵就是对数据内容的操纵,包括INSERT(增)、DELETE(删)、UPDATE(改)。

-- INSERT: 除了上面的一条语句插入一行数据的情况,也可以一次性插入多行数据:
insert into user values('张三',22,'女'),('admin',26,'男'),('alian',16,'男'); -- DELETE: 要谨慎控制过滤条件,如果过滤控制不当会删除所有数据
delete from user where name = '张三'; -- UPDATE: 更新时也同样注意过滤条件,下面语句直接将用户admin的年龄和性别进行了更改
update user set age = 23, sex = '女' where name = 'admin';

DDL

Data Definition Language 数据定义语言

-- 数据定义是关于表的结构的操作,包括表的定义和表结构的更改。

-- 建表语句上面已有实例,表的删除语句如下:
drop table user; -- 增加字段(列),删除字段(列)
alter table user add birthday date;
alter table user drop age; -- 更改字段。使用change时必须更改字段名字,使用modify时不能更改字段名字
alter table user modify name char(50);
alter table user change name u_name char(30); -- 更改表引擎
alter table user engine = '引擎';
-- 还有其他操作请参考官方文档

DQL

Data Query Language 数据查询语言

-- 在数据库应用中,频率最高的操作就是查询

-- 单表查询最基本格式。select哪些字段、from哪个表、where筛选条件
select ... from ... where ...;
-- 例:查看所有大于20岁的用户的名字
select name from user where age > 20;
-- 多个筛选条件之间可以用 and 和 or 连接,注意条件结合的优先级,使用()来控制他们的结合。 -- 嵌套查询。前面单表查询的结果也是一个表,这个结果表又可以作为被查询的表,这样就形成了嵌套查询。
select ... from (select ... from ... where ...) where ...;

统计、分组、排序

统计:很多时候我们需要对数据数据进一步处理,找出其中的最大值最小值总和平均值计数,使用下面的函数

select max(age),min(age),sum(age),avg(age),count(age) from user;
-- 统计函数会把多行数据统计为一行数据,比如100个年龄,用max函数统计就变成一个数据,就是100个数据中最大的数据。

分组:统计函数除了上面的简单用法--把所有数据统计运算变为一行数据之外,通常和分组语句一起使用。

比如想要分别统计男人和女人的平均年龄。

select sex,avg(age) from user group by sex;
-- group by sex 的语义就是根据sex的值不同分组,sex只有两个值'男'和'女',相应就分为两组,统计函数的作用域是再组内,组之间不会影响。

排序:当我们遇到一个查询成绩单这样的需求时,通常我们想要的结果是一个成绩从高到低降序排列的结果表。

select name,age from user order by age desc;
-- 其中 desc 代表降序排列。升序排列为 asc 可以。默认值为asc。

分页查询

当查询结果有很多行时,我们可以选择查看其中一段

select name,age from user limit 3;-- 只看3条
select name,age from user limit 4,3;-- 跳过前4条,查看3条

总结

  1. 安装MySQL
  2. 打开MySQL
  3. 查看&操作MySQL

熟悉使用以下关键词

show , databases , use , table

select , from , where , count , min , max , sum , avg , group by , order by , desc

create , database , default , charset , engine , innodb , insert into , alter table , modify , change

应该这些代码的含义是什么

show databases;

use ...;

select ... from ... where ...;

select max(...),avg(...),... from ... where ... group by ...;

select ... from ... group by ... desc;

select ... from ... limit ...;

create database ... default charset=...;

create table ...(
... ...,
... ...,
... ...
)engine=innodb default charset=utf8; insert into ... values(...),(...),(...); delete from ... where ...; update ... set ... where ...;

MySQL使用入门--初识数据库的更多相关文章

  1. Mysql(一):初识数据库

    一 数据库管理软件的由来 基于我们之前所学,数据要想永久保存,都是保存于文件中,毫无疑问,一个文件仅仅只能存在于某一台机器上. 如果我们暂且忽略直接基于文件来存取数据的效率问题,并且假设程序所有的组件 ...

  2. 第一章 初识数据库Mysql

    初识数据库Mysql(my)   在企业中 percona: 一.数据库基础知识 Mysql是一个开放源代码的数据库管理系统(DBMS),它是由Mysql AB公司开发.发布并支持的.Mysql是一个 ...

  3. MySQL之初识数据库

    一 数据库管理软件的由来 基于我们之前所学,数据要想永久保存,都是保存于文件中,毫无疑问,一个文件仅仅只能存在于某一台机器上. 如果我们暂且忽略直接基于文件来存取数据的效率问题,并且假设程序所有的组件 ...

  4. 初识数据库、初识MySQL

    一.为什么要用数据库 # 1.将文件和程序存在一台机器上是很不合理的. # 2.操作文件是一件很麻烦的事. 所以就出现了一个新的概念 —— 数据库 你可以理解为 数据库 是一个可以在一台机器上独立工作 ...

  5. MySQL 第一篇:初识数据库

    一 数据库管理软件的由来 基于我们之前所学,数据要想永久保存,都是保存于文件中,毫无疑问,一个文件仅仅只能存在于某一台机器上. 如果我们暂且忽略直接基于文件来存取数据的效率问题,并且假设程序所有的组件 ...

  6. mysql 初识数据库

    一 数据库管理软件的由来 基于我们之前所学,数据要想永久保存,都是保存于文件中,毫无疑问,一个文件仅仅只能存在于某一台机器上. 如果我们暂且忽略直接基于文件来存取数据的效率问题,并且假设程序所有的组件 ...

  7. MySQL的入门与使用,sqlyog对数据库,表和数据的管理

    MySQL的入门 1.到mysql官网下载. 2.安装mysql软件(一定要放到英文路径下) 3.使用 验证是否成功 将mySQL的bin路径添加到系统环境变量Path中 打开dos命令窗口 Wind ...

  8. MySQL数据库入门备份数据库

    MySQL数据库入门——备份数据库   一提到数据,大家神经都会很紧张,数据的类型有很多种,但是总归一点,数据很重要,非常重要,因此,日常的数据备份工作就成了运维工作的重点中的重点的重点....... ...

  9. 初识数据库MySQL

    一.认识数据库  1:什么是数据(Data) 描述事物的符号记录被称为数据,这个符号可以是数字,文字,图片,声音,语言等 2:什么是数据库(DataBase,简称DB) 数据库是存放数据的仓库,库一般 ...

随机推荐

  1. hdu 4521 小明系列问题——小明序列 线段树

    题意: 给你一个长度为n的序列v,你需要输出最长上升子序列,且要保证你选的两个相邻元素之间在原数组中的位置之差大于d 题解: 这个就是原来求最长上升子序列的加强版,这个思路和最长上升子序列的差不多   ...

  2. 2020ICPC·小米 网络选拔赛第一场 A.Intelligent Warehouse (DP)

    题意:给你一组数,选一些数出来组成一个排列,使得每个数都能被前一个数整除,求排列的最大元素. 题解:我们先用欧拉筛筛出\(1e7\)的质数,设\(dp[i]\)表示当前选的数都是\(i\)的约数且合法 ...

  3. AtCoder Beginner Contest 177 D - Friends (并查集)

    题意:有\(n\)个人,给你\(m\)对朋友关系,朋友的朋友也是朋友,现在你想要将他们拆散放到不同的集合中,且每个集合中的人没有任何一对朋友关系,问最少需要多少集合. 题解:首先用并查集将朋友关系维护 ...

  4. 病毒侵袭持续中 HDU - 3065 AC自动机

    小t非常感谢大家帮忙解决了他的上一个问题.然而病毒侵袭持续中.在小t的不懈努力下,他发现了网路中的"万恶之源".这是一个庞大的病毒网站,他有着好多好多的病毒,但是这个网站包含的病毒 ...

  5. Linux系统CentOS进入单用户模式和救援模式详解

    一.概述 目前在运维日常工作中,经常会遇到服务器异常断电.忘记root密码.系统引导文件损坏无法进入系统等等操作系统层面的问题,给运维带来诸多不便,现将上述现象的解决方法和大家分享一下,本次主要以Ce ...

  6. codeforces 911D

    D. Inversion Counting time limit per test 2 seconds memory limit per test 256 megabytes input standa ...

  7. 开源软件ffmpeg使用中的问题

    error while decoding MB 20 10, bytestream -13 经过调试,发现这部是 int ret = avcodec_decode_video2(pCodecConte ...

  8. Splunk监控软件操作

    一.  Splunk公司与产品 美国Splunk公司,成立于2004年,2012年纳斯达克上市,第一家大数据上市公司,荣获众多奖项和殊荣.总部位于美国旧金山,伦敦为国际总部,香港设有亚太支持中心,上海 ...

  9. 重学c#————struct

    前言 简单整理一下struct. 正文 struct 对于struct 而言呢,我们往往会拿class作为对比,但是呢,我们在初学阶段用class来替代struct,struct的存在感越来越低了. ...

  10. LWIP再探----内存池管理

    这这里是接上一篇内存池管理部分的,这里如果读者一打开memp.c的话会感觉特别那一理解原作者在干嘛,但是看懂了就明白原作者是怎么巧妙的使用了宏.废话不多说先说了下我分析是一下宏的条件是 前提条件MEM ...