什么是数据库?

数据库:
英文单词DataBase,简称DB。按照一定格式存储数据的一些文件的组合。
顾名思义:存储数据的仓库,实际上就是一堆文件。这些文件中存储了具有特定格式的数据。

什么是数据库管理系统?

数据库管理系统:
DataBaseManagement,简称DBMS。
数据库管理系统是专门用来管理数据库中数据的,数据库管理系统可以对数据库当中的数据进行增删改查。

常见的数据库管理系统:
MySQL、Oracle、MS SqlServer、DB2、sybase等…

什么是SQL?

SQL:结构化查询语言
程序员需要学习SQL语句,程序员通过编写SQL语句,然后DBMS负责执行SQL语句,最终来完成数据库中数据的增删改查操作。

​ SQL是一套标准,程序员主要学习的就是SQL语句,这个SQL在mysql中可以使用,同时在Oracle中也可以使用,在DB2中也可以使用。

他们之间的关系是什么?

三者之间的关系?
DBMS–执行–> SQL --操作–> DB

先安装数据库管理系统MySQL,然后学习SQL语句怎么写,编写SQL语句之后,DBMS对SQL语句进行执行,最终来完成数据库的数据管理。

MySQL的服务在哪里?

计算机–>右键–>管理–>服务和应用程序–>服务–>找mysql服务
MySQL的服务,默认是“启动”的状态,只有启动了mysql才能用。
默认情况下是“自动”启动,自动启动表示下一次重启操作系统的时候
自动启动该服务。

可以在服务上点击右键:
启动
重启服务
停止服务

还可以改变服务的默认配置:
服务上点击右键,属性,然后可以选择启动方式:
自动(延迟启动)
自动
手动
禁用

在windows操作系统当中,怎么使用命令来启动和关闭mysql服务呢?

语法:
net stop 服务名称;
net start 服务名称;

其它服务的启停都可以采用以上的命令。

mysql安装了,服务启动了,怎么使用客户端登录mysql数据库呢?

使用bin目录下的mysql.exe命令来连接mysql数据库服务器

本地登录(显示编写密码的形式):

C:\Users\Administrator>mysql -uroot -p123456Welcome to the MySQL monitor.  Commands end with ; or \g.Your MySQL connection id is 1Server version: 5.5.36 MySQL Community Server (GPL)Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved.Oracle is a registered trademark of Oracle Corporation and/or itsaffiliates. Other names may be trademarks of their respectiveowners.Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.mysql>

本地登录(隐藏密码的形式):

C:\Users\Administrator>mysql -uroot -pEnter password: ******Welcome to the MySQL monitor.  Commands end with ; or \g.Your MySQL connection id is 2Server version: 5.5.36 MySQL Community Server (GPL)Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved.Oracle is a registered trademark of Oracle Corporation and/or itsaffiliates. Other names may be trademarks of their respectiveowners.Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.mysql>

mysql常用命令:

退出mysql :exit

查看mysql中有哪些数据库?
show databases;
注意:以分号结尾,分号是英文的分号。

mysql> show databases;+--------------------+| Database           |+--------------------+| information_schema || mysql              || performance_schema || test               |+--------------------+

mysql默认自带了4个数据库。

怎么选择使用某个数据库呢?
mysql> use test;
Database changed
表示正在使用一个名字叫做test的数据库。

怎么创建数据库呢?

mysql> create database node;

mysql> show databases;+--------------------+| Database           |+--------------------+| information_schema || node        || mysql              || performance_schema || test               |+--------------------+

查看某个数据库下有哪些表?
mysql> show tables;

注意:以上的命令不区分大小写,都行。

查看mysql数据库的版本号:mysql> select version();

+-----------+
| version() |
+-----------+
| 8.0.28    |
+-----------+

数据库当中最基本的单元

数据库当中最基本的单元是:table

什么是表table?为什么用表来存储数据呢?

姓名   性别  年龄(列:字段) ---------------------------张三   男           20            ------->行(记录)李四  女           21            ------->行(记录)王五  男           22            ------->行(记录)

数据库当中是以表格的形式表示数据的。
因为表比较直观。

任何一张表都有行和列:
行(row):被称为数据/记录。
列(column):被称为字段。

姓名字段、性别字段、年龄字段。

了解一下:
每一个字段都有:字段名、数据类型、约束等属性。
字段名可以理解,是一个普通的名字,见名知意就行。
数据类型:字符串,数字,日期等

​ 约束:约束也有很多,其中一个叫做唯一性约束,
​ 这种约束添加之后,该字段中的数据不能重复。

关于SQL语句的分类?

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

分为:

         DQL:数据查询语言(凡是带有select关键字的都是查询语句)select...DML:数据操作语言(凡是对表当中的数据进行增删改的都是DML)insert delete updateinsert 增delete 删update 改这个主要是操作表中的数据data。DDL:数据定义语言凡是带有create、drop、alter的都是DDL。DDL主要操作的是表的结构。不是表中的数据。create:新建,等同于增drop:删除alter:修改这个增删改和DML不同,这个主要是对表结构进行操作。TCL:事务控制语言包括:事务提交:commit;事务回滚:rollback;DCL:是数据控制语言。例如:授权grant、撤销权限revoke....

常用命令

查看 msyql 版本

• MySQL 程序选项具有以下两种通用形式:
– 长选项,由单词之前加两个减号组成
– 短选项,由单个字母之前加一个减号组成

C:\Users\Administrator>mysql --version
mysql Ver 14.14 Distrib 5.5.36, for Win32 (x86)
C:\Users\Administrator>mysql -V
mysql Ver 14.14 Distrib 5.5.36, for Win32 (x86)

创建数据库

  1. create database 数据库名称;
    create database bjpowernode;

  2. use 数据库名称
    use bjpowernode;

在数据库中建立表,因此创建表的时候必须要先选择数据库。

查询当前使用的数据库

select database();
查询数据库版本也可以使用
select version();

终止一条语句

如果想要终止一条正在编写的语句,可键入\c。

退出 mysql

可使用\q、QUIT 或 EXIT:
如:mysql> \q (ctrl+c)

查看其他库中的表

show tables from <database name>;

查看表的结构

desc <table name>;

查看表的创建语句

show create table <table name>;

简单查询

引入三张表

查询一个字段

select 字段名 from 表名;其中要注意:select和from都是关键字。字段名和表名都是标识符。强调:对于SQL语句来说,是通用的,所有的SQL语句以“;”结尾。另外SQL语句不区分大小写,都行。

例如:查询部门名字

查询多个字段

使用逗号隔开“,”
查询部门编号和部门名?
select deptno,dname from dept;

查询所有字段

第一种方式:可以把每个字段都写上select a,b,c,d,e,f... from tablename;第二种方式:可以使用*(效率很低,可读性差,在实际开发中不建议)select * from dept;

给查询的列起别名

select deptno,dname as deptname from dept;

使用as关键字起别名。注意:只是将显示的查询结果列名显示为deptname,原表列名还是叫:dname记住:select语句是永远都不会进行修改操作的。(因为只负责查询)as关键字可以省略吗?可以的mysql> select deptno,dname deptname from dept;假设起别名的时候,别名里面有空格,怎么办?mysql> select deptno,dname dept name from dept;DBMS看到这样的语句,进行SQL语句的编译,不符合语法,编译报错。怎么解决?select deptno,dname 'dept name' from dept; //加单引号select deptno,dname "dept name" from dept; //加双引号注意:在所有的数据库当中,字符串统一使用单引号括起来,单引号是标准,双引号在oracle数据库中用不了。但是在mysql中可以使用。再次强调:数据库中的字符串都是采用单引号括起来。这是标准的,双引号不标准。

计算员工年薪(sal * 12)

条件查询

不是将表中所有数据都查出来。是查询出来符合条件的。
语法格式:

     select字段1,字段2,字段3....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的员工姓名和编号?mysql> select empno,ename,sal from emp where sal < 2000;+-------+--------+---------+| empno | ename  | sal     |+-------+--------+---------+|  7369 | SMITH  |  800.00 ||  7499 | ALLEN  | 1600.00 ||  7521 | WARD   | 1250.00 ||  7654 | MARTIN | 1250.00 ||  7844 | TURNER | 1500.00 ||  7876 | ADAMS  | 1100.00 ||  7900 | JAMES  |  950.00 ||  7934 | MILLER | 1300.00 |+-------+--------+---------+<= 小于等于查询薪资小于等于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;+-------+-------+---------+| empno | ename | sal     |+-------+-------+---------+|  7566 | JONES | 2975.00 ||  7698 | BLAKE | 2850.00 ||  7782 | CLARK | 2450.00 ||  7788 | SCOTT | 3000.00 ||  7902 | FORD  | 3000.00 |+-------+-------+---------+第二种方式:between … and …select empno,ename,sal from emp where sal between 2450 and 3000;注意:使用between and的时候,必须遵循左小右大。between and是闭区间,包括两端的值。is null 为 null(is not null 不为空)查询哪些员工的津贴/补助为null?mysql> select empno,ename,sal,comm from emp where comm = null;Empty set (0.00 sec)mysql> select empno,ename,sal,comm from emp where comm is null;+-------+--------+---------+------+| empno | ename  | sal     | comm |+-------+--------+---------+------+|  7369 | SMITH  |  800.00 | NULL ||  7566 | JONES  | 2975.00 | NULL ||  7698 | BLAKE  | 2850.00 | NULL ||  7782 | CLARK  | 2450.00 | NULL ||  7788 | SCOTT  | 3000.00 | NULL ||  7839 | KING   | 5000.00 | NULL ||  7876 | ADAMS  | 1100.00 | NULL ||  7900 | JAMES  |  950.00 | NULL ||  7902 | FORD   | 3000.00 | NULL ||  7934 | MILLER | 1300.00 | NULL |+-------+--------+---------+------+10 rows in set (0.00 sec)注意:在数据库当中null不能使用等号进行衡量。需要使用is null因为数据库中的null代表什么也没有,它不是一个值,所以不能使用等号衡量。查询哪些员工的津贴/补助不为null?select empno,ename,sal,comm from emp where comm is not null;+-------+--------+---------+---------+| empno | ename  | sal     | comm    |+-------+--------+---------+---------+|  7499 | ALLEN  | 1600.00 |  300.00 ||  7521 | WARD   | 1250.00 |  500.00 ||  7654 | MARTIN | 1250.00 | 1400.00 ||  7844 | TURNER | 1500.00 |    0.00 |+-------+--------+---------+---------+and 并且查询工作岗位是MANAGER并且工资大于2500的员工信息?select empno,ename,job,sal from emp where job = 'MANAGER' and sal > 2500;+-------+-------+---------+---------+| empno | ename | job     | sal     |+-------+-------+---------+---------+|  7566 | JONES | MANAGER | 2975.00 ||  7698 | BLAKE | MANAGER | 2850.00 |+-------+-------+---------+---------+or 或者查询工作岗位是MANAGER和SALESMAN的员工?select empno,ename,job from emp where job = 'MANAGER';select empno,ename,job from emp where job = 'SALESMAN';select empno,ename,jobfromempwhere job = 'MANAGER' or job = 'SALESMAN';+-------+--------+----------+| empno | ename  | job      |+-------+--------+----------+|  7499 | ALLEN  | SALESMAN ||  7521 | WARD   | SALESMAN ||  7566 | JONES  | MANAGER  ||  7654 | MARTIN | SALESMAN ||  7698 | BLAKE  | MANAGER  ||  7782 | CLARK  | MANAGER  ||  7844 | TURNER | SALESMAN |+-------+--------+----------+and和or同时出现的话,有优先级问题吗?查询工资大于2500,并且部门编号为10或20部门的员工?select *fromempwheresal > 2500 and deptno = 10 or deptno = 20;分析以上语句的问题?and优先级比or高。以上语句会先执行and,然后执行or。以上这个语句表示什么含义?找出工资大于2500并且部门编号为10的员工,或者20部门所有员工找出来。select *fromempwheresal > 2500 and (deptno = 10 or deptno = 20);and和or同时出现,and优先级较高。如果想让or先执行,需要加“小括号”以后在开发中,如果不确定优先级,就加小括号就行了。in 包含,相当于多个 or (not in 不在这个范围中)查询工作岗位是MANAGER和SALESMAN的员工?select empno,ename,job from emp where job = 'MANAGER' or job = 'SALESMAN';select empno,ename,job from emp where job in('MANAGER', 'SALESMAN');+-------+--------+----------+| empno | ename  | job      |+-------+--------+----------+|  7499 | ALLEN  | SALESMAN ||  7521 | WARD   | SALESMAN ||  7566 | JONES  | MANAGER  ||  7654 | MARTIN | SALESMAN ||  7698 | BLAKE  | MANAGER  ||  7782 | CLARK  | MANAGER  ||  7844 | TURNER | SALESMAN |+-------+--------+----------+注意:in不是一个区间。in后面跟的是具体的值。查询薪资是800和5000的员工信息?select ename,sal from emp where sal = 800 or sal = 5000;select ename,sal from emp where sal in(800, 5000); //这个不是表示800到5000都找出来。+-------+---------+| ename | sal     |+-------+---------+| SMITH |  800.00 || KING  | 5000.00 |+-------+---------+select ename,sal from emp where sal in(800, 5000, 3000);// not in 表示不在这几个值当中的数据。select ename,sal from emp where sal not in(800, 5000, 3000);+--------+---------+| ename  | sal     |+--------+---------+| ALLEN  | 1600.00 || WARD   | 1250.00 || JONES  | 2975.00 || MARTIN | 1250.00 || BLAKE  | 2850.00 || CLARK  | 2450.00 || TURNER | 1500.00 || ADAMS  | 1100.00 || JAMES  |  950.00 || MILLER | 1300.00 |+--------+---------+not 可以取非,主要用在 is 或 in 中is nullis not nullinnot in

模糊查询

like 称为模糊查询,支持%或下划线匹配%匹配任意多个字符下划线:任意一个字符。(%是一个特殊的符号,_ 也是一个特殊符号)找出名字中含有O的?mysql> select ename from emp where ename like '%O%';+-------+| ename |+-------+| JONES || SCOTT || FORD  |+-------+找出名字以T结尾的?select ename from emp where ename like '%T';找出名字以K开始的?select ename from emp where ename like 'K%';找出第二个字每是A的?select ename from emp where ename like '_A%';找出第三个字母是R的?select ename from emp where ename like '__R%';t_student学生表name字段----------------------zhangsanlisiwangwuzhaoliujack_son找出名字中有“_”的?select name from t_student where name like '%_%'; //这样不行。mysql> select name from t_student where name like '%\_%'; // \转义字符。+----------+| name     |+----------+| jack_son |+----------+

排序数据

单一字段排序

排序采用 order by 子句,order by 后面跟上排序字段,排序字段可以放多个,多个采用逗号间隔,order by 默认采用升
序,如果存在 where 子句那么 order by 必须放到 where 语句的后面

查询所有员工薪资,排序?select ename,salfromemporder bysal; // 默认是升序!!!+--------+---------+| ename  | sal     |+--------+---------+| SMITH  |  800.00 || JAMES  |  950.00 || ADAMS  | 1100.00 || WARD   | 1250.00 || MARTIN | 1250.00 || MILLER | 1300.00 || TURNER | 1500.00 || ALLEN  | 1600.00 || CLARK  | 2450.00 || BLAKE  | 2850.00 || JONES  | 2975.00 || FORD   | 3000.00 || SCOTT  | 3000.00 || KING   | 5000.00 |+--------+---------+
怎么降序?指定降序:select ename,salfromemporder bysal desc;+--------+---------+
| ename  | sal     |
+--------+---------+
| KING   | 5000.00 |
| SCOTT  | 3000.00 |
| FORD   | 3000.00 |
| JONES  | 2975.00 |
| BLAKE  | 2850.00 |
| CLARK  | 2450.00 |
| ALLEN  | 1600.00 |
| TURNER | 1500.00 |
| MILLER | 1300.00 |
| MARTIN | 1250.00 |
| WARD   | 1250.00 |
| ADAMS  | 1100.00 |
| JAMES  |  950.00 |
| SMITH  |  800.00 |
+--------+---------+指定升序?select ename,salfromemporder bysal asc;+--------+---------+
| ename  | sal     |
+--------+---------+
| SMITH  |  800.00 |
| JAMES  |  950.00 |
| ADAMS  | 1100.00 |
| WARD   | 1250.00 |
| MARTIN | 1250.00 |
| MILLER | 1300.00 |
| TURNER | 1500.00 |
| ALLEN  | 1600.00 |
| CLARK  | 2450.00 |
| BLAKE  | 2850.00 |
| JONES  | 2975.00 |
| FORD   | 3000.00 |
| SCOTT  | 3000.00 |
| KING   | 5000.00 |
+--------+---------+

综合案例:找出工资在1250到3000之间的员工信息,并按工资降序排列

select ename,sal from emp where sal between 1250 and 3000 order by sal desc;

多个字段排序

查询员工名字和薪资,要求按照薪资升序,如果薪资一样的话,再按照名字升序排列。select ename,salfromemporder bysal asc, ename asc; // sal在前,起主导,只有sal相等的时候,才会考虑启用ename排序。+--------+---------+| ename  | sal     |+--------+---------+| SMITH  |  800.00 || JAMES  |  950.00 || ADAMS  | 1100.00 || MARTIN | 1250.00 || WARD   | 1250.00 || MILLER | 1300.00 || TURNER | 1500.00 || ALLEN  | 1600.00 || CLARK  | 2450.00 || BLAKE  | 2850.00 || JONES  | 2975.00 || FORD   | 3000.00 || SCOTT  | 3000.00 || KING   | 5000.00 |+--------+---------+

注意

关键字顺序不能变:

     select...from...where...order by...
 以上语句的执行顺序必须掌握:第一步:from第二步:where第三步:select第四步:order by(排序总是在最后执行!)

【java学习之路】(mysql篇)001.mysql基本介绍、常用命令及简单查询相关推荐

  1. JAVA学习之路--基础篇三

    目录 关于Java中从键盘输入的语句 nextxxx().next().nextLine()的区别 语句 if和if else语句 Switch语句 for语句 while和do..while bre ...

  2. Java学习之路---对象篇(Object)

    什么是对象? Java是一种面向对象的语言,那么什么是对象呢?我们将问题空间中的元素及其在解空间中的表示称之为"对象". "万物皆对象":将对象视为一个变量,可 ...

  3. java学习之路目录(已完结)

    java学习之路目录(持续更新中-) 第一阶段 javaSE(完结) 序号 标题 内容 001 java初识 java语言特点.体系结构.运行机制 002 java SE基础语法 注释.关键字.变量. ...

  4. 个人开发经历--我的java学习之路(学校篇)

    个人开发经历--我的java学习之路(学校篇) 个人介绍: 姓名: 不在这里说明 联系信息: 个人历程 jdbc阶段 sql生成器 一代代码生成器 servlet阶段 servlet项目中,sql生成 ...

  5. 我的Java学习之路2009-11-17

    -------------------------------2009年3月19日开始----------------------------- 下载JDK Myeclipse Netbeans JB ...

  6. JAVA学习之路:不走弯路,就是捷径(二)

    备注: 本文选自ChinaITLab网校课程<刘晓涛Java就业直通班V2.0>之预备知识,点击这里了解更多! JAVA学习之路---学习路线及要点 2.软件开发学习路线 两千多年的儒家思 ...

  7. 大数据学习之路 JUC篇

    大数据学习之路 JUC篇(1) 前提说明 本人是一名学生,茫茫it行业的一名卑微的小白,这是我第一次写博客.其原因是学着学着知识发现回顾的时候差不多全忘记了!!为了总结.复习自己以往学到过的有关大数据 ...

  8. Java学习之路02_选择方向_旺旺老师

    提示:请您先阅读第一部分:Java学习之路01_软件江湖_旺旺老师 第二部分:帮派之争 就好像玩游戏要先选择角色种族,进入江湖要先选择帮派,那搞软件开发也要选择方向.个人总结的软件开发的方向:嵌入式开 ...

  9. Java学习之路-预科

    Java学习之路-预科 第一章 学习计算机的基本知识 文章目录 Java学习之路-预科 前言 一.什么是计算机? 二.硬件及冯诺依曼结构 1.计算机硬件 1.1 计算机硬件组成 1.2 什么是装机 1 ...

最新文章

  1. AngularJS安装配置与基础概要整理(上)
  2. 重磅直播|结构光方法新应用
  3. python语言最适合的应用领域是_Python语言及其应用领域研究
  4. ABAP中的Table Control编程
  5. matlab模拟三体运动_从灯泡到超级计算机,如何模拟浩瀚星空?| 赛先生
  6. 疫情之下,将业务迁移至云端会是一个正确的选择吗?
  7. left join 索引失效无条件_技术分享 | MySQL 优化:JOIN 优化实践
  8. java中main缺少主体_缺少方法主体,或声明了摘要
  9. linux 一次执行多条命令
  10. pmp知识点详解-项目大牛整理_PMP项目管理第六章:项目进度管理(5)核心知识点...
  11. 拓端tecdat|“新媒体”和“社群”调查报告
  12. html静态页面制作教程,静态网页制作技术教程(HTML/CSS/JavaScript)
  13. android原生 6108v9a,全国通用版华为EC6108V9A图文教程
  14. 2018首届世界传感器大会11月12日-14日在郑州召开
  15. 时序动作检测SSAD《Single Shot Temporal Action Detection》
  16. VS2015基础开发流程
  17. 程序员必备算法——排列组合
  18. (转)常用的js代码
  19. AVS2解码图像管理
  20. 怎样把视频中的音频提取成mp3?

热门文章

  1. DXF文件中将多段线凸度转换成圆弧
  2. Qt之QListView使用
  3. 上海电机学院c语言,上海电机学院第1章_C语言概述.ppt
  4. 调查:受经济危机影响 巴西民众搬家意愿提升
  5. H5本地储存Web Storage
  6. ajax css文件,wordpress 添加JS,css文件,实现AJAX效果
  7. 个人作品- 蘑菇大战
  8. python模拟足球_使用K-Means算法划分亚洲国家的三个足球梯队
  9. 清华大学计算机期末试题,清华大学计算机系C++期末考试题及答案.doc
  10. [C/CPP系列知识] C++中extern “C” name mangling -- Name Mangling and extern “C” in C++