一.数据库起点概述 *
1.1 数据库
数据库(DB)DataBase,按照一定格式存储数据的一些文件组合。
通俗来讲就是存储数据的仓库,就是一堆文件,文件中存储具有特定格式的数据。
1.1.1 数据库当中基本的单元
表(table)
1.2 数据库管理系统
数据库管理系统(DBMS)DataBaseManagement,它是专门用来管理数据库中的数据,他可以对数据库中的数据进行增删改查。
1.2.1常见的数据管理系统
MySQL,Oracle,MS Sqlsever,DB2等等,
1.2.2 DBA
数据管理员(DBA) databaseadministrator
1.3 SQL结构化查询语句
SQL 结构化查询语句
SQL语句是一套标准通用的语句,可以在MySql中使用,也可以在Oracle,DB2这些DBMS中使用。
程序员通过学会SQL语句并将其编写,然后DBMS执行SQL语句完成所要求的增删改查的目的操作。
1.4 DB DBMS SQL三者关系
DBMS---执行---->SQL---操作---->DB
//由例如MySql(数据库管理系统)把程序员的SQL命令执行进完成对DB的数据管理。
2.1 MySql服务
通过:
此电脑 --- (右键)管理 --- 服务与应用程序 --- 应用 即可找出
默认情况都是自动
3.1 表
3.1.1表格
姓名 性别 年龄(列:字段)
——————————————
张三 男 20 ------------>行(记录)
李四 女 21 ------------>行(记录)
3.1.2 行,列
行(row):被称为数据/记录
列(column):被称为字段
3.1.3 字段
字段具有字段名(可以看做是名字),数据类型,约束等属性。
3.1.4 数据类型
数据类型:字符串(单引号中的字符串被称为数据),数字,日期
3.2 表格
数据库当中是以表格的形式表示数据,因为其直观性。
4.1 关于SQL语句分类
DQL、DML、DDL、TCL、DCL
4.1.1 DQL
DQL:数据查询语言(带有select关键字的都是查询语句)
select.....
4.1.2 DML
DML:数据操作语言(只要是对表增删改的都是DML的语句)
//主要是操作表中数据(data)
insert 增
delete 删
update 改
4.1.3 DDL
DDL:数据定义语言 (只要是对于表结构更改的就是DDL的语言)
//记住不是表中数据而是改变表的结构
create 新建,等同于增
alther 修改
drop 删除
4.1.4 TCL
TCL:事务控制语言
commit 事务提交
rollback 事务回滚
4.1.5 DCL
DCL:数据控制语言
grant 授权
revoke 撤销授权
. . .
二.命令
注意事项:命令大小写都不会影响!!!
注意事项:符号都是英文符号!!!
命令提示符打开:使用windows键,然后输入cmd打开即可。
1 启动,关闭mysql命令
net stop 服务名称; //关闭服务
net start 服务名称; //启动服务
2 登录MySQL命令
mysql -uroot -p密码; //显示密码的登录
mysql -uroot -p; //不显示密码的登录
3 退出mysql命令
exit //退出mysql
4 查看命令
4.1.1查看mysql中的表
/show databases; //查看mysql中的表
4.1.2查看某个数据库下有哪些表
show tables;
5 使用某个数据库
use 表名; //也可以说是进入它这个表里面
6 创建数据库
create database 表名;
6.1 删除数据库
drop database 表名
7 导入数据
source 文件路径
//路径中不能有中文!
8 select 查询命令
注意:select不会进行对数据的修改它只是进行查询!!!
8.1 查看表中数据
select * from 表名; //统一执行这个语句
8.2 只查看表结构
desc 表名;
8.3 查看版本号
select version();
8.4 查看使用的数据库
select database();
8.5 select报错原因
select abc from 表名为什么会报错?
//如果表中没有这个字段一样会把abc 当成一个字段的名字,去表中找这个字段。没有就会报错
8.6 select后面直接跟"字面量/字面值"
会借助这个表结构生成这个字面量/字面值。例如14条记录生成14个字面量/字面值
例如: select 1000或者'abc'
就只会让表全部输出1000或者abc
9 终止命令
有两种写法:
1.\c
- ;
//记住命令需要最后有终止命令否则不会停止
三.简单查询
1. 查询字段
select 字段 from 表名;
//可以注意 select和from都是关键字,而字段名和表名都是标识符。
1.1 查询多个字段
select 字段1,字段2 from 表名; //总的来说就是用逗号隔开
1.2 查询全部字段
第一种:直接像查询多个字段一样将字段全写上去
第二种:运用"*"代表全部的数据方法的方式直接套用select语句:
select * from 表名;
//第二种方法缺点:1.效率低
2.可读性差
其一般适用于迅速浏览表格
1.3 查询某个特定名称的信息
select 字段 from 表名 where 字段='特定名称';
2. 给列起别名
2.1 给查询的列起别名
关键字:as(其可以省略)
select 字段 as 想改的字段名字 from 表名; //只是改目前显示的名字,原表的并没有改变
// 注意想改的字段内有空格的话应当用单引号括起来
2.2 当想要起别名的字段有空格、中文时
select 字段名 as '有空格字段名' from 表名; //单引号(标准优先进行)
select 字段名 as "有空格字段名" from 表名; //双引号
//记住双引号在oracle数据库中用不了,但可以在mysql中使用
3. 列参与数学运算
3.1 计算数据使用数字表达式
例如: 运用乘法
select 字段*12 from 表名;
四. 条件查询
//接下来未来方便演示将给几个条件进行语句的书写
员工表:emp 、员工名字:ename、员工编号:empno、薪资:sal、津贴:comm、工作岗位:job、部门编号:deptno、部门表:dept
1. 什么是条件查询
并非查询所有数据,而是筛选其中符合条件的数据
1.1 语法格式
select
字段1,字段2.....
from
表名;
where
条件;
2. 等于条件 =
例子:查询薪资等于800的员工姓名和编号?
select empno,ename from emp where sal=800;
3. 不等于条件 <>或者 !=
例子:查询薪资不等于800的员工姓名和编号?
第一种 select empno,ename from emp where sal !=800;
第二种 select empno,ename from emp where sal <>800;
4. 小于条件 <
例子:查询薪资小于2000的员工姓名和编号?
select empno,ename from emp where sal<2000;
5. 大于条件 >
例子:查询薪资大于3000的员工姓名和编号?
select empno,ename from emp where sal>3000;
6. 小于大于等于条件 <=或者>=
例子:查询薪资大于等于或者小于等于5000的员工姓名和编号?
select empno,ename from emp where sal<=5000; //小于等于
select empno,ename from emp where sal>=5000; //大于等于
7. 两个值之间 条件 between...and...
//其等同于>= and <=(and是并且的意思)
例子:查询薪资在2500以及4000的员工姓名和编号?
select empno,ename from emp where sal between 2500 and 4000;
//记得运用between...and需要遵循左小右大
8. 空 条件 null(is not null 不为空)
null代表是无也就是什么都没有而不是0
例子:查询哪些员工的津贴为null(空)?
select empno,ename, sal,comm from emp where comm is null;
8.1 null的特殊性
在数据库中null不能用等号(=)进行衡量,要用到is null
因为null代表什么都没有,它不是数值不能用等号去衡量
8.2 null运算的特殊性
在所有数据库中,只要有NULL参与的数学运算,最终结果就是NULL
9. 并且条件 and
例子:查询工作岗位是"doctor"并且工资大于2500的员工?
select
job
from
emp
where
job='doctor' and sal>2500;
9.1 and优先级问题
and的优先级比or的高
当and与or两者同时出现的话会优先处理and,然后处理or
需要or先执行可以使用"小括号"括住。
例子:找出工资大于2500以及部门是10或者是20的员工
select
*
from
emp
where
sal>2500 and (deptno=10 or deptno=20);
10. 或者条件 or
例子:查询工作岗位是doctor和driver的员工
select
empno,ename,job
from
emp
where
job='doctor' or 'driver';
10.1 or优先级
and与or之间and优先但是如果需要or先开始可以使用"小括号"括住这样就可以让它先执行。
11. 包含关系 in(相当于多个or 但是not in不在这个范围里面)
in不是一个区间需要在后面跟上具体值。
例子:查询工作岗位是doctor和driver的员工?
select
job,ename,empno
from
emp
where
job in('doctor', 'driver');
11.1 not in 表示不取这几个值
12.取非关系 not
其关系主要运用于 is 或者 in 之间
is null
is not null
in
not in
五.模糊查询
1.like 命令
被称为模糊查询,支持%或者下划线_匹配