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的主要内容,如果未能解决你的问题,请参考以下文章