MySql数据库学习

MySql数据库入门

数据库概述

数据

数据即用于描述一些客观事物的符号;比如说人具备:年龄,身高,体重,姓名,性别等信息,这些信息都称之为数据(在java中称之为属性);数据的分类:

  • 文本
  • 图形(图片)
  • 图像(视频)
  • 声音
  • 文件

为什么需要数据库

回顾之前所学习到的所有存储机制:内存>文件;通过以上分析得知,文件存储可以长期有效存储数据,但是文件只提供了存储机制,如果需要操作文件:

例如,一个文本文档中存储了1000W条数据,如果需要打开改文件会非常耗时,另外如果需要从文件中找出一条符合要求数据,首先需要先读取文件中的所有内容,然后一条一条去分析。

由于文件系统存在以上的问题:在进行检索时效率低,数据的组织方式不够结构化,因此操作数据方面没有优势;因此需要一种能够跟结构化,在检索方面具备绝对优势的数据存储系统

什么是数据库

数据库由一批数据构成的有序集合,这些数据被分门别类地存放在一些结构化的数据表(table)里,而数据表之间又往往存在交叉引用的关系,这种关系使数据库又被称为关系型数据库

怎么理解数据库

  • 数据库系统==档案室
  • 数据库等同于档案柜(数据库实例==档案柜)
  • 每一张数据表等同档案柜中的抽屉(数据表==抽屉)
  • 抽屉中的每一个文件袋称之为一条数据(数据==文件袋)

名词解释

  • Data 数据

  • Database 数据库

  • DBMS (DataBase Management System)数据库管理系统

  • DBS(DataBase System)数据库系统

  • DBA(Database Administrator)数据库管理员

    • OCA 初级认证
    • OCP 专家认证
    • OCM 大师级认证
      在这里插入图片描述
      主流数据库产品
  • Sybase SqlServer

  • MSSqlServer(SqlServer)

  • Oracle(先知/甲骨文)

  • DB2/Informix (IBM)

  • Mysql(瑞典Mysql AB)

  • MariaDB

  • PostgreSQL

  • Access(微软)

  • Sqlite3(应用于移动设备:手机,平板,pad)

  • 达梦数据库(国产:政府,消防,军工以事业单位为主的客户)

  • OceanBase(阿里巴巴+蚂蚁金服)

MySql安装与卸载

卸载

卸载mysql数据库分为以下四个步骤

  1. 停止mysql服务
  2. 进入控制面板,卸载mysql相关的安装程序
  3. 进入mysql安装目录(默认c:/Program Files) 删除Mysql目录
  4. 进入mysql数据目录(默认c:/ProgramData)删除mysql目录(重要:如果不删除将会导致下一次重复安装失败)

安装

  • 安装
    • next
  • 配置
    • 编码设置(gbk/utf8)
    • 密码设置

Mysql基本命令

mysql数据库组织结构

在这里插入图片描述

基本命令使用

  1. 连接mysql数据库

直接通过mysql命令行客户端
在这里插入图片描述
在这里插入图片描述
通过 cmd连接mysql(需要配置环境变量)
在这里插入图片描述

-h:主机地址
-u:用户名(默认root)
-p:连接密码

  1. 查看mysql数据库服务器中的所有实例
show databases;
  1. 创建mysql实例
create database mydb
default character utf8
default collate utf_general_ci;

character 设置数据库字符串格式
collate 设置字符串比较的格式
  1. 查看创建实例的命令
show create database mydb;
  1. 显示当前库的命令
select database();
  1. 使用数据库实例
use mydb;
  1. 当输入了错误命令,需要取消时
show databaes xxx \c

\c表示取消当前的输入

  1. 显示当前所有用户
select  user,host from mysql.user;
  1. 查看帮助信息
\h
  1. 修改默认的分隔符
delimiter $

默认命令行结束为“;”,可以修改为指定符号结束

  1. 退出mysql命令行
#方式一
exit;
#方式二
quit;
  1. 查看mysql服务器状态信息
\s
  1. 显示实例下的所有表(前提先use过了)
show tables;

SQL语句入门

SQL是Structured Query Language(结构化查询语言)的缩写;sql语句是专门为数据库管理提供的通用操作语言;语法类似于英语口语,在使用它时,只需要发出“做什么”的命令“怎么做”是不用使用者考虑的。sql语句分为以下几个大类:

1. DDL语句(数据定义语句)

数据定义语句主要应用于对数据表的结构操作:比如建表,删除表,修改表的结构等;DDL语句包含以下命令:

  • create (新建)
  • drop(删除,主要删除数据库中的结构,比如表,库等)
  • alter(主要用已有表删除,新建,修改行)
  • add(添加列)
  • modify(修改列
2. DML语句(数据操作语句)

数据操作语句一般用于对的语句数据库表中数据进行更新操作,比如添加,删除,修改数据等,DML语句包含以下命令:

  • insert (对表新增加数据)
  • update(更新表字段)
  • delete(删除信息)
3. DQL语句(数据查询语句)

数据查询语句一般用于对数据库表中数据进行查询操作,命令主要包含:select

4. DCL语句(数据控制语句)

数据控制语句一般用于对于数据库用户的权限管理,事务管理,DCL包含以下命令:

  • grant (权限设置)
  • revoke(回收权限)
  • commit(事务提交)
  • rollback(事务回滚)

DDL语句

  1. 创建一张数据库表
create table emp		     -- 创建表,名称叫emp
(
    eno int,				 --创建eno列,类型是int
    ename varchar(30),		 --创建ename列,类型是varchar长度是30字符
    job varchar(30),
    sex char(2) default '1', --创建sex列,类型是char
    sal double,
    birth date
);

关于mysql中字符长度问题
如果是utf8编码下,默认的中文字符占3个字节;如果是gbk编码,默认的中文占2个字节
关于char类型和varchar类型:

  • char类型是定长字符串,类似于java中String;长度一旦定义则无法改变,并且无论数据是否够指定长度,都会占满,不够的用空格填充;char类型一般应用于长度确定的字符串类型,比如:性别,手机号,身份证号等;
  • varchar类型是可变长度字符串,类似java中StringBuffer;长度定义之后会根据实际填充的内容,选择占用多大空间,比较节省空间;varchar类型一般使用在长度不确定的字符串类型,比如:姓名,邮箱地址,评论信息等。
  1. 显示表中所有与列等其他信息
show full fields from emp;
修改表结构

语法:

alter table 表名 [add/drop/modify/change/rename] 列名称

  1. 新增一个列
alter table emp add hiredate date;
  1. 删除列
alter table emp drop column birth;
  1. 修改列的类型
 alter table emp modify sal varchar(20);
  1. 修改列名称
alter table emp change job  ejob varchar(30);
  1. 修改表名称
 alter table emp rename to tbemp;

DML语句

  1. 显示表中所有的数据
select * from tbemp;
insert语句(插入)

语法:

insert into 表名(列名1,列名2…) values(列值1,列值2…)

  1. 向表中添加数据(所有列)
insert into tbemp values(1,'james','manager','1',8796,'2018-01-22',28);
  1. 向某一些列插入值
insert into tbemp(eno,ename,ejob,sal) values(4,'softeem','CEO',1500000);
  1. 同时插入多条数据
insert into tbemp(eno,ename) values(5,'来福'),(6,'狗蛋'),(7,'王二狗');

插入数据出现中文乱码时解决方案:
由于安装mysql使用的是UTF8编码,但是cmd命令行中默认为GBK编码,因此在命令行中使用中文数据是会出现乱码;解决方式只需要在打开cmd命令行时输入以下命令:

  • set names gbk;

然后再进行插入操作即可解决(但是以上修改只对一次会话生效;如果只会再次使用cmd需要重新设置)

select语句:

 select * from student;-- 查询所有
 select id,name from student; -- 查询指定的字段
 select * from student where id='1';--条件查询
  select * from student where id='1' and sex ='男';--多条件查询
   select * from student where id='1' or sex ='男';
update语句(更新)

语法:
update 表名 set 列名1=值1,列名2=值2… where 条件

  1. 修改表中的一条记录
update tbemp  set hiredate='2006-03-01',age=45 where eno=4;
  1. 修改数据(将员工姓名叫旺财的人的月薪提高2000)
update tbemp set sal=sal+2000 where ename='旺财';
  1. 修改数据(将员工生日为null的人的生日全部设置为2020-01-01)
 update tbemp set hiredate='2020-01-01' where hiredate is null;
delete语句(删除)

语法:
delete from 表名 where 条件

  1. 删除一行指定id的数据
 delete from tbemp where eno=5;
  1. 删除所有月薪为null的员工
delete from tbemp where sal is null;

注意事项:
实际开发中,数据积累不容易,一般不会轻易使用物理删除;大多数时候会选择使用逻辑删除;所谓逻辑删除实际就是在表中增加一个标识列,通过该列的取值标记该列是否应该被查询到
因此针对删除需求,可以在表中新增一列用于标记该列是否被删除
alter table tbemp add isdel tinyint;

物理删除:

使用delect 语句直接讲数据库中的数据删除掉

逻辑删除:

实际上执行的是update语句,更新了该条数据的状态字段,一般状态字段的值:0表示删除,1表示有效

如果要做逻辑删除,就是将stats字段的值更新为0,

mysqldump与mysqladmin

mysqldump(备份)

1.备份指定实例到指定目录中

需要先退出当前数据库的登陆,再进行数据库的备份

mysqldump -uroot -p123456 mydb > d:/mydb.sql

2.从指定的sql文件中恢复备份数据

要先登陆数据库,选择好需要导入的库,再执行导入命令,将备份的数据导入

source d:/mydb.sql
mysqladmin
  1. 使用mysqladmin创建一个数据库实例
mysqladmin -uroot -p123456 create mydb2
  1. 使用mysqladmin删除一个数据库实例
mysqladmin -uroot -p123456 drop mydb2
  1. 修改密码
mysqladmin -uroot -p password root

将root用的密码改为"root"

MySql数据类型

mysql数据库中支持的数据类型分为以下几个大类:

  • 数值类型
    • 整型
    • 浮点型
  • 字符类型
  • 日期时间类型

数值类型

mysql中数值类型主要包含以下两大类

  • 整型
  • 浮点型

在这里插入图片描述
取值范围:
在这里插入图片描述

常用数值类型主要包含以下几个:

  1. int
  2. double
  3. decimal

字符串类型

在这里插入图片描述

注意事项:
在使用中文字符串时,如果数据库编码是gbk,则每个中文字符占2个字节;如果是utf8编码,则每个中文字符占3个字节
关于取值返回:
char(m)
varchar(m)
其中m表示的字符个数
常见的字符串类型:

  • char
  • varchar
  • text
    blog和clob
    blob(Binary Large object)二进制大对象(视频,图片,音频)
    clob(Character Large Object)字符大对象(大文本)
    enum类型
    枚举类型,用于限定该列只能选择枚举中其中一个值
    在这里插入图片描述

日期时间类型

获取当前的系统时间

select now()

在这里插入图片描述

常用日期类型:

  • date 用于表示日期 如:2020-01-01
  • datetime 用于表示日期时间 如:2020-01-01 10:11:12
  • timestamp 用于表示时间戳,格式等同datetime,支持默认值 CURRENT_TIMESTMP
    另外该类型也支持自动更新(on update CURRENT_TIMESTAMP)当前行 数据更新时,该列也会自动更新为最新的时间

注意事项:

  • 一张表中只能有一个字段的timestamp可以设置默认值

常用数据类型汇总

在这里插入图片描述

Mysql之SQL查询

mysql的第三方图形界面工具非常多,比如:

  • Sqlyog
  • Navicat for Mysql
  • Navicat Premium
  • Mysql Front
  • PhpMyAdmin

运算符

算术运算

在这里插入图片描述

关系运算

在这里插入图片描述

SELECT * FROM emp where NAME <> '张三'
SELECT * FROM emp where sal > 7000
SELECT * FROM emp where age in (21,22,23,29)
SELECT *  FROM emp where sal>=7500 && sal<=8000
SELECT * FROM emp where sal BETWEEN 7500 and 8000
SELECT * from emp where name like "%张%"
SELECT * FROM emp where name is not null

逻辑运算

在这里插入图片描述

运算数左右需为boolean结果

SQL查询

SQL查询在数据库中是非常重要的组成,因为未来开发场景下,大多数的功能都集中在查询上,而且查询可以简单,也可以复杂,复杂到很多表之间的联合查询。

SQL查询的语法:

select
distinct
	查询列
from
	表名称
连接表(inner join/left join/right joinwhere
	查询条件
group by
	分组依据
having
	分组的查询条件
order by
	排序字段
limit
	结果限制

基础查询

  1. 查询所有列
select * from emp;
  1. 查询部分列信息(查询员工的姓名,职位,薪资)
select ename,job,sal from emp;
insert into emp(eno,ename,job,age) values(23,'卡牌大师','骨干员工',33);

-- 查询指定列
select ename,job,IFNULL(sal,0) from emp;
IFnull(exp1,exp2)
解释:当exp1字段为null时,默认该这个null值赋值为exp2

--查询时使用运算操作
select ename,ifnull(sal,0)-1000 from emp;

--显示所有的职位,不能重复
select distinct job from emp;

distinct 去重的语法,去除重复出现字段值

/*
	mysql聚合函数查询
	count  统计函数
	sum	求和
	avg	求平均值
	max 求最大值
	min 求最小值
*/
--查询表中一共有多少员工
select count(*) from emp;

--查询所有员工的总薪资
select sum(sal) from emp;

--查询所有员工的月薪平均值
select avg(sal
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值