文章目录
一、为什么学习数据库
1 保存数据的容器:数组、集合、文件、…
数组与集合将数据存在内存中,断电数据会丢失;保存在文件中,若数据太多,查询又不方便。所以需要一套管理系统来存储管理数据,这就是数据库软件。
2 数据库的优点
- 实现数据持久化
- 使用完整的管理系统统一管理,易于查询
二、数据库的概念
1. DB 数据库(database):存储数据的“仓库”。它保存了一系列有组织的数据。
2. DBMS 数据库管理系统(Database Management System),又称数据库软件(产品)。数据库是通过DBMS创建和操作的容器。(之后可能会称安装数据库管理系统为安装数据库软件,安装后操作DB)
3. SQL 结构化查询语言(Structure Query Language):专门用来与DBMS通信的语言。
SQL的优点:
1、不是某个特定数据库供应商专有的语言,几乎所有DBMS都支持SQL。
2、简单易学。
3、虽然简单,但实际上是一种强有力的语言,灵活使用其语言元素,可以进行非常复杂和高级的数据库操作。
三、数据库存储数据的特点
1. 将数据放到表中,表再放到库中。
2. 一个数据库中可以有多个表,每个表都有一个名字,用来标识自己。表名具有唯一性。
3. 表具有一些特性,这些特性定义了数据在表中如何存储,类似Java中“类”的设计。
4. 表由列组成,我们也称为字段。所有表都是由一个或多个列组成的,每一列类似于Java中的“属性”。
5. 表中的数据是按行存储的,每一行类似于Java中的“对象”。
四、MySQL服务的启动和停止
1. 方法一
计算机 → 管理 → 服务和应用程序 → 服务 → MySQL → 属性
2. 方法二
命令提示符 → 以管理员身份运行(win+R) → net stop mfsql(停止)→ net start mfsql(启动)
五、MySQL服务端的登录和退出
1. 方法一
点击安装好的MySQL客户端,输入密码即可。exit或者Ctrl+C退出(只适用root用户)。
2. 方法二
命令提示符 → 以管理员身份运行 → ( mysql -h 主机名 -P 端口号 -u 用户名 -p密码)mysql -h localhost -P 3306 -u root -p密码 。exit退出。
六、MySQL常见命令
- 查看当前所有数据库:show database;
- 打开指定库:use 库名
- 查看当前库的所有表:show tables;
- 查看其他库的所有表:show tables from 库名;
- 创建表:creat table 表名(
列名 列类型,
列名 列类型,
……
); - 查看表结构:desc 表名;
- 查看服务器版本:① 登录到mysql服务端 select version(); ② win+r mysql --version 或 mysql --V
七、MySQL语法规范
- 不区分大小写
- 每句话用;或\g结尾
- 各子句一般分行写
- 关键字不能缩写也不能分行
- 每条命令根据需要,用缩进或换行提高语句的可读性
- 注释:① 单行注释:#注释文字
② 多行注释:–空格注释文字
③ 多行注释: /* 注释文字 */
七、MySQL图形化界面客户端的使用(SQLyog)
1.安装软件
1.DQL语言的学习
DQL,data query language ,数据查询语言,主要用到 select。
(1)基础查询:select 查询列表 from 表名;
(1)查询列表可以是:表中的字段、常量值、表达式、函数
(2)查询的结果是一个虚拟的表格
(3)举例
1 查询字段
查询所有字段时,不必手写所有字段名,可以双击软件中左侧窗口中的字段(顺序随意),再f12(格式化)即可排列格式如上图。除此之外还有另一种方法更简单:
注:
1.在对数据库进行操作前,记得打开对应库,最好使用 use 库名。
2.上图中出现了符号 ``(着重号),也可以去掉。这个符号一般使用的情况是,当字段名出现了关键字,为了区分,使用此符号来分辨字段名与关键字,如下图:
加了着重号之后:
3.执行哪个语句,选中点击上方
即可。
2 查询常量值
字符型和日期型的常量值必须用单引号引起来,数值型不需要。
3 查询表达式
输出结果:
4 查询函数
5 起别名:便于理解;对于查询字段有重名的情况,使用别名可以区分。
(1)如上图100%98的结果,结果出现100%98不够美观,给它起个别的名字:
此时输出结果是:
(2)
(以上as可以用空格代替。当别名中出现了特殊字符,如#,空格等,需要将别名加上“”。)
6 去重
未加distinct之前,会把所有员工的部门编号显示,包括重复的,加了之后,只会显示不同的部门编号。
7 +的作用
在MySQL中实现拼接使用函数 concat:
如查询员工姓和名,并连接成一个字段显示为 姓名
8 ifnull函数,判断字段是否为空ifnull(a,b)表示如果a是空(null),就显示为b,否则显示a原本的值。
(2)条件查询:select 查询列表 from 表名 where 筛选条件;
(1)按照条件表达式筛选
简单条件运算符:> < = <= >=
!= 和<>一样的效果,但是建议使用后者。
(2)按逻辑表达式筛选
逻辑运算符:&& || ! ,MySQL中推荐使用 and or not
(3)模糊查询
like : 一般和通配符搭配使用(%:任意多个字符,包含0个字符;_:任意单个字符)
between and :between a and b等价于>=a,<=b,包含临界值
in :判断某字段的值是否属于in列表中的某一项(in列表的值类型必须一致或兼容)
is null:判断是否为空(仅可以判断null值),是返回1否则返回0
补充: <=>:安全等于(既可以判断null值,又可以判断普通的数值)
举例:①
②
③
④
或者:当要查询的名字包含特殊字符时,可以用如下方法进行转义,’$'可以是随意写。
⑤
⑥
⑦
⑧
⑨
不一样,上面包含null,下面不包含。
(3)排序查询:select 查询列表 from 表名 where 筛选条件 order by 排序列表 asc/desc;
示例:
①
②
③
④
⑤
⑥
(1)desc表示降序,asc升序,asc可以省略。
(2)order by字句中可以支持单个字段、多个字段、表达式、函数、别名
(3)order by字句一般是放在查询语句的最后面,limit字句除外。