Mysql基础章节带你认识Mysql

Posted 风清扬逍遥子

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Mysql基础章节带你认识Mysql相关的知识,希望对你有一定的参考价值。

工作中经常发现很多人对于数据库的基础都比较薄弱,可能以为会写两句sql就表示自己会数

据库了,那可不是这样的,于是我想了想,抽了点时间,自己总结了一些Mysql从基础到高

级篇,就当是以后复习的依据吧,基础的东西,我敢说你还真不一定都清楚,如果感兴趣,

可以继续往下看!

1、前言

        什么是数据库?什么是数据库管理系统?什么是SQL?三者直接的关系是什么?不管是

新手和小白,我觉得你其他的可以不清楚,这些概念必须要知道:

  • 数据库

        英文单词DataBase,简称DB。按照一定的格式存储数据的一些文件组合。

        顾名思义,存储数据的仓库,实际上就是一堆文件。这些文件中存储了特定格式的数

据。

  • 数据库管理系统

        DataBaseManagement System,简称DBMS,数据库管理系统是专门用来管理数据库

的工具,可以对数据库中的数据进行增删查改的操作。常见的数据库管理系统有:

        mysql,Oracle,MS Sqlserver,DB2,syBase等等

        注意,这些我们口头上都会说,Mysql是数据库,实际上他是数据库管理系统,只不过

我们讲习惯了,而数据库没有管理,是没有意义的,所以我们也可以理解Mysql是一种数据库

类型,更恰当的称呼是数据库管理系统。还有小白容易把Navicat,Sqlyog错误的认为是

DBMS,这些是数据库连接工具,方便你操作数据库的。

  • SQL

        Structure Query Language,结构化查询语言,程序员通过编写这样的语言,DBMS负

责执行这些语言,最终完成数据库的管理工作,包括增删查改。SQL是一套标准,程序员学

习的,就是SQL语句的编写,这个SQL在Mysql中可以使用,在Oracle中可以使用,同时在

DB2中也可以使用,那么差别是在这些管理系统中,语法结构有些许不一样。就好比一套标

准,IBM这么实现,Google这么实现,Mysql这么实现,Oracle这么实现等等。

三者关系:

        DBMS——>执行——>SQL——>操作——>DB

2、安装Mysql

        我这里就不带大家安装了,我在网上直接找了一篇可以看看安装步骤,不带大家安装了

MySQL57安装图解_ma524654165的博客-CSDN博客_mysql57),我这里直接附上链接,

版本的话Mysql5.7,环境变量要配置上。

3、Mysql常用命令

  • 怎么通过控制台进入mysql呢?
mysql -u root -p --以root身份登录,如果是其他用户,则更换即可

-- 比如:
mysql -u zhangsan -p
  • 查看mysql中有哪些数据库?
show databases;     --以英文分号结尾

        Mysql默认自带4个数据库

  • 怎么使用数据库呢?
use 数据库名; -- 比如创建了个test数据库,user test;
  • 怎么创建数据库呢?
create database 数据库名称; --比如 创建test数据库:create database test;
  • 怎么退出控制台?

  • 查看数据库下有哪些表
先use 表名


再show tables;

 先介绍这么多,知道的先跳过~

4、表的理解

        数据库当中最基本的单元是表:table,任何一张表都有行和列

        行(row):被称为数据/记录

        列(column):被称为字段

        而每个字段都有:字段名,数据类型,约束等

        字段名可以理解,是一个普通的名字,比如我们常说的id,name

        数据类型有字符串,数字,日期等等,这个后面说

        约束:约束也有很多种,其中一个叫做唯一性约束,这种约束添加后,该字段中的数据

不能重复,具有唯一性。

5、关于SQL语句的分类

        SQL语句有很多,最好进行分门别类,这样更容易记忆

        分为:DQL,DML,DDL,TCL,DCL

        DQL:数据查询语言(凡是带有select关键字)【Data Query Language】

        DML:数据操作语言(凡是对表的数据增删改,insert,delete,update,主要操作表的数据)【Data Manipulation Language】

        DDL:数据定义语言(凡是带有create,drop,alter都是DDL,主要操作表的结构,不是表中的数据)【Data Definition Language】

        TCL:事务控制语言(包括事务提交commit,事务回滚rollback)【Transaction Controll Language】

        DCL:数据控制语言(比如授权grant,撤销权限revoke)【Data Controll Language】

        我自己创建了一个库,为了演示方便,里面建立了几张表

        dept:部门表

        emp:员工表

        salgrade:工资等级表

来看下三张表里面的数据:

emp:

看得出在emp表中,MGR是上级编号的意思,可以发现最大的boss是KING,职位是president,上级为null。

salgrade:

看得出在salgrade表中等级对应的工资范围在一定的区间

dept:

看得出在dept表中,部门ID对应emp表的部门ID,还有部门的名称+地理位置

        三张表的关系其实就很清楚了。

        看下三张表的结构:desc 表名

dept(deptno部门名编号,dname部门名称,loc地址)

emp(empno人员编号,ename员工名字,job工作职称,mgr上级,hiredate雇佣时间,sal工资,comm津贴,deptno部门编号)

salgrade(grade工资等级,losal最低工资,hisal最高工资)

 对表的结构已经有了一定的认识,初学者应该都比较清楚,我就不多说了,进入重点;

6、Mysql常用命令有哪些?

查看mysql版本号:select version();

查看当前使用的数据库:select database();

 

mysql是不见分号不执行,这个一定要注意,也就是你可以这么写:

如果你想结束掉命令,\\c  就可以了

7、简单查询

        从现在开始我们就开始正式进入sql语句的学习:

7.1、查询一个字段名

        select 字段名 from 表名;

        其中要注意select 和from都是关键字,字段名和表名都是标识符;

强调:对于sql语句来说,是通用的;所有的sql语句以分号结尾,另外sql语句不区分大小写;

        比如查询部门名字:

        select dname from dept;--大小写都可以

7.2、查询多个字段

        select 字段1, 字段2, 字段n..  from 表名;

        逗号隔开,执行引擎会把每个逗号隔开的作为字段,查询表对应的字段。

7.3、查询所有字段

        select * from 表名;

        注意:这里开发过程中不要去写*,mysql执行引擎会把*先转为字段,转换过程会占用一

定的时间,有人说这个没关系,假设你数据库在某个时刻比较紧张的时候,并且你的表字段

很多的场景下,加上如果对应的接口查询比较频繁,性能就会有一定的开销,开发中我们不

建议去这么写!!

 7.4、列的别名

        我想查部门名字,但是我不想用表中的列名,怎么做?

        用as关键字起别名,中文英文都可以,和版本有些关系;(当前的版本加不加单引号都可以)

 注意:只是将查询结果的列名显示为你起的名字,原本的列名是不修改的,select操作不修改表结构。

        as关键字也可以省略,空格隔开就可以了

        假设起的别名里面有空格怎么办? 

        会提示你编译报错!!不符合语法

         如果我说,哎我就是要加个空格怎么办?用单引号括起来

         那双引号行不行?也可以

7.5、列参与数学运算

         先看下员工还有工资对应的关系

         计算员工年薪呢?sal*12,mysql字段支持数学表达式!

         如果我想改下列名

这里要注意下,我的版本是5.7.33,有的版本不一定支持中文的别名,所以如果想使用中文,保险起见用单/双引号括起来。 

8、条件查询

        条件查询要用到where关键字形成的语句,where必须要放到from语句,表的后面

        语法格式:

        select 字段1,字段2,...

        from 表名

        where 条件

都有哪些条件?

  •  = 等于

        查询薪资等于800的员工姓名和编号?
        select empno,ename from emp where sal = 800;


        查询SMITH的编号和薪资?
        select empno,sal from emp where ename = 'SMITH'; //字符串使用单引号

  •  <>或!= 不等于

        查询薪资不等于800的员工姓名和编号?
        select empno,ename from emp where sal != 800;

        或者
        select empno,ename from emp where sal <> 800; // 小于号和大于号组成的不等号

  •  < 小于

        查询薪资小于2000的员工姓名和编号?
        select empno,ename,sal from emp where sal < 2000;

  • <= 小于等于

        查询薪资小于等于3000的员工姓名和编号?
        select empno,ename,sal from emp where sal <= 3000;

  • > 大于

        查询薪资大于3000的员工姓名和编号?
        select empno,ename,sal from emp where sal > 3000;

  • >= 大于等于 

        查询薪资大于等于3000的员工姓名和编号?
        select empno,ename,sal from emp where sal >= 3000;

  • between … and …. 两个值之间, 等同于 >= and <=

        查询薪资在2450和3000之间的员工信息?包括2450和3000

        第一种方式:>= and <= (and是并且的意思。)
        select empno,ename,sal from emp where sal >= 2450 and sal <= 3000;

        第二种方式:between … and …

        select empno,ename,sal from emp where sal between 2450 and 3000;

        注意:
                使用between and的时候,必须遵循左小右大。
                between and是闭区间,包括两端的值。

以上是关于Mysql基础章节带你认识Mysql的主要内容,如果未能解决你的问题,请参考以下文章

大白话带你认识MySQL背后优秀的架构设计

第24章 零基础学MySQL 章节练习题

零基础带你学习MySQL—MySQL常用的数据类型(列类型)

MySQL基础入门学习教程,带你快速掌握mysql

零基础带你学习MySQL—创建表

零基础带你学习MySQL—修改表