文章目录
数据库
数据库的概述
- 为什么使用数据库?
- 持久化数据
- 数据格式清晰明了
DBMS:数据库管理系统(Database Management System)是一种操纵和管理数据库的大型软件,例如建立、使用和维护数据库。
DB:数据库(Database)
SQL:结构化查询语言,(Structure Query Language),专门用来操作/访问数据库的通用语言。
数据库类型:数据库经过几十年的发展,出现了多种类型。目前最常见的数据库模型主要是:关系型数据库 和(noSQL)非关系型数据库。
关系型数据库设计规则
- 遵循ER模型
- E entity 代表实体的意思 对应到数据库中的一张表
- R relationship 代表关系的意思
- 具体表现
- 将数据放列表中,表在放到库中
- 一个数据库中可以有多个表,每个表都有一个名字,用来标识自己。表名具有唯一性。
- 表具有一些特性,这些特性定义了数据在表中如何存储,类似java和Python中“类”的设计。
- 表由列组成,我们也称为字段。每个字段描述了他所含有的数据的意义,数据表的设计实际上就是对字段的设计。创建数据表时,为每个字段分配一个数据类型,定义他们数据长度和字段名,每个字段类似java或python中的“实例属性”
- 表中的数据是按行存储的,一行即为一条记录。每一行类似于java或python中的“对象”
MySQL概述
MySQL数据库最初是由瑞典MySQLAB公司开发,2008年1月16号被Sun公司收购。2009年,SUN又被Oracle收购。MySQL是目前IT行业最流行的开放源代码的数据库管理系统,同时它也是一个支持多线程高并发多用户的关系型数据库管理系统。MySQL之所以受到业界人士的青睐,主要是因为其具有以下几方面优点:
- 开放源代码
MySQL最强大的优势之一在于它是一个开放源代码的数据库管理系统。开源的特点是给予了用户根据自己需要修改DBMS的自由。MySQL采用了General Public License,这意味着授予用户阅读、修改和优化源代码的权利,这样即使是免费版的MySQL的功能也足够强大,这也是为什么MySQL越来越受欢迎的主要原因。 - 跨平台
MySQL可以在不同的操作系统下运行,简单地说,MySQL可以支持Windows系统、UNIX系统、Linux系统等多种操作系统平台。这意味着在一个操作系统中实现的应用程序可以很方便地移植到其他的操作系统下。 - 轻量级
MySQL的核心程序完全采用多线程编程,这些线程都是轻量级的进程,它在灵活地为用户提供服务的同时,又不会占用过多的系统资源。因此MySQL能够更快速、高效的处理数据。 - 成本低
MySQL分为社区版和企业版,社区版是完全免费的,而企业版是收费的。即使在开发中需要用到一些付费的附加功能,价格相对于昂贵的Oracle、DB2等也是有很大优势的。其实免费的社区版也支持多种数据类型和正规的SQL查询语言,能够对数据进行各种查询、增加、删除、修改等操作,所以一般情况下社区版就可以满足开发需求了,而对数据库可靠性要求比较高的企业可以选择企业版。- 注意:
社区版与企业版主要的区别是:- 社区版包含所有MySQL的最新功能,而企业版只包含稳定之后的功能。
换句话说,社区版可以理解为是企业版的测试版。 - MySQL官方的支持服务只是针对企业版,如果用户在使用社区版时出现
了问题,MySQL官方是不负责任的。
- 社区版包含所有MySQL的最新功能,而企业版只包含稳定之后的功能。
- 注意:
MySQL安装
此处以Windows系统MySQL57为例








可能会让下载C++的库(当前电脑缺少环境)








MySQL卸载
- 停止mysql服务
此电脑右键→服务→找到mysql→停止此服务

或者使用命令停止服务
如果出现系统错误提示则需要以管理员身份运行cmd

- 删除环境变量
- 控制面板→卸载程序→

- C盘下删除隐藏文件ProgramData下的MySQL文件
启动MySQL


连接MySQL
- 方式一:连接本地数据库
mysql -u用户名 -p密码

mysql -u用户名 -p

连接远程数据库
mysql -h主机地址 -P端口号-u用户名-p密码
若提示:不是内部命令或外部命令
需要配置环境变量:找到安转的MySQL中的bin,把路径添加到Path中

重新打开cmd再次输入
-
方式二:
使用MySQL自带的命令行工具连接

如果一闪而过,采用管理员权限登录 -
方式三:
navcat
sqlyog -
方式四:java代码 jdbc
MySQL常见命令
--当前DBMS中 共有多少个库
show databases;
-- 新建数据库(名为test)
create database test;
-- 删除数据库
drop database test;
-- 创建表
create table 表名(
字段名 数据类型
);
--No database selected :进行数据库操作时,必须选定数据库
--选择数据库
use 数据库名;
-- 展示当前库中所有的表
show tables;
-- 添加一条数据
insert into 表名 values(字段的值);
--数据库中没有char类型,单引号和双引号都表示字符串
insert into stu values(1,"zs");
insert into stu values(2,'ls');
--查看表中的数据
select 字段名 (如果查看所有字段使用 *) from 表名;
select * from 表名;
--查看当前MySQL的编码方式
show variables like 'character%';
--创建数据库时,指定编码方式
create database 数据库名 charset 编码方式;
当前DBMS中 共有多少个库

新建数据库(名为test)

删除数据库

选择数据库

创建表

展示当前库中所有的表

添加一条数据

查看stu表中所有数据

查看当前MySQL的编码方式

创建数据库时,指定编码方式


一劳永逸解决字符编码问题
找到安装时那一个数据目录,找到my.ini
[mysql]
大概66行
default-character-set=utf8
[mysqld]
大概99行
character-set-server=utf8
MySQL数据类型和运算符
MySQL数据类型
整数类型
- mysql默认采用有符号的范围存储数据
- int(4):依然可以存入大于4个数字的数;如果是有符号字段,则宽度没有效果,只要存入的数在int范围内即可
- int(4):无符号的字段,则插入的数据小于4会用0填充(id int(4) unsignet zerofill)
create table inttest(
id int,
id1 int(4) unsigned zerofill -- id1 字段 没有符号的 用0填充
);
浮点类型 double float
-- double(5,3):有三位小数 2位整数
-- double 不适用宽度,可以存入最大限度的值,最大15-16位有效
create table doubletest(
money double,
account double(5,3)
);
insert into doubletest values(1234.1234,1234.1234);
--out of range value for column 'account' at row l
insert into doubletest values(1234.1234,34.1234);
-- 小数部分超过会四舍五入
insert into doubletest values(1234.1234,34.1239);
insert into doubletest values(1234.1234,4.1239);
--测试decimal
-- 如果decimal没有使用宽度 则只保留整数,且会对小数四舍五入
-- 如果指定了宽度,则按照宽度输出,多出的小数也会四舍五入
--如果想要表示很长的小数 使用decimal(20,18)一共20位18位小数
create table decimaltest(
money decimal,
account decimal(5,3)
);
insert into decimaltest values(12.34,12.45678);
时间类型
data:日期 年月日
time:时分秒
datetime:年月日 时分秒
timestamp:时间戳 年月日 时分秒
create table datetest(
birthday datetime,
comeday timestamp
);
-- now() 当前时间
insert into datetest values(now(),now());
-- 如果插入的值是null
insert into datetest values(null,null);
birthday 对应的 null
comeday 对应 当前时间
--更改时区
set time_zone='+9:00';
set time_zone='+8:00';
-- 时区改变 timestamp也会跟着发生改变
字符串类型
存储字符串数据
char:定长字符串
varchar:可变字符串
enum:枚举
set
-- 定义varchar 必须指定宽度
-- 单引号和双引号都是表示字符串
-- char类型 ,不写宽度,则只能存储一个字符串
-- varchar是可变长度的字符串,如果数据没有填充满,则使用最小单位占用空间;char固定长度字符串,如果字符没有填充满,依然使用定义长度占用空间
create table teststr(
sex char,
sname varchar(20)
);
-- 插入数据
insert into teststr values('男','李白');
insert into teststr values("男","李白");
create table enumtest(
sname varchar(20),
sex enum("男","女")
);
--枚举:要求数据必须是待选值中的一个
insert into enumtest values("李白","男");
-- set 每一个值都有一个数字对应
-- set集合最多存放64个数据
create table settest(
sname varchar(20),
-- --------1------2------4------8
hobby set("睡觉","吃饭","跑步","游泳")
);
insert into settest values("李白","睡觉");
insert into settest values("李白","睡觉,吃饭");
insert into settest values("李白",1);--睡觉
insert into settest values("李白",2);--吃饭
insert into settest values("李白",3);--睡觉 吃饭
insert into settest values("李白",4);--跑步
insert into settest values("李白",9);--睡觉 游泳
MySQL运算符
算数运算符
加:+
减:-
乘:*
除:/ div(只保留整数部分)
模:% mod
-- mysql提供了一张虚表 dual
select 10 + 10 from dual;
select 10 -5 from dual;
select 10 * 10 from dual;
select 10 / 3 from dual; -- 3.3333
select 10 div 3 from dual; -- 3
select 10 % 3 from dual; --1(% 和mod都可以)
比较运算符
大于:>
小于:<
大于等于:>=
小于等于:<=
等于:= 不能用于null判断
不等于:!=或<>
安全等于:<=>可以用于null值判断
-- <=>可以用于null值判断,也可用于普通值的比较
-- =只能用于普通纸比较
-- from 一张表 ,则已经拿到了该表内的数据了
-- select 字段名 from 表名 ;拿到了表中所有的数据,只是展示指定的字段
-- 查询该表该字段大于10的所有内容
select * from 表名 where 字段名 > 10 ;
select * from 表名 where 字段名 < 10 ;;
逻辑运算符
逻辑与:&& 或 and
逻辑或:|| 或 or
逻辑非:! 或 not
逻辑异或:xor(相同为false[0],不同为true[1])
--展示该表中所有的 gender 是男 且 salary 大于15000的内容
select * from 表名 where gender = '男' and salary > 15000;
-- 使用not时,要放到要判断的字段前面
select * from 表名 where not 要判断的字段 <=> null;
范围校验
区间范围:between x and y
not between x and y
集合范围:in(x,x,x)
not in(x,x,x)
-- 查询 salary 字段 在10000~20000之间的内容
select * from 表名 where salary >= 10000 and salary <= 20000;
-- between and (闭区间[开始,结束])
select * from 表名 where salary between 10000 and 20000;
-- 查询 字段1 字段2 字段3 的信息
select * from 表名 where 字段名=字段1 or 字段名=字段2 or 字段名 = 字段3;
-- in(x,x,x,……)
select * from 表名 where 字段名 in (字段1,字段2,字段3);
模糊匹配
like:
%:代表任意多个字符
_:代表任意一个字符
-- 查询 ename字段 以 李性开头 的内容
select * from 表名 where ename like "李%" ;
-- 查询名字第二个字为 冰 的内容
select * from 表名 where ename like "_冰_" ;
其他运算符
<<: 左移一位 相当于乘以2
>>: 右移一位 相当于除以2
select 4 << 1;
select * from 表名 where 字段名 <=> null;
select * from 表名 where not 字段名 <=> null;
-- is 也可以校验null值
select * from 表名 where 字段名 is null;
select * from 表名 where 字段名 is not null;
本文详细介绍了MySQL数据库的概述、安装与卸载、启动与连接、常用命令以及数据类型和运算符。MySQL是一个开放源代码、跨平台、轻量级的关系型数据库管理系统,具有成本低、性能高效等特点。通过示例展示了如何创建数据库、表,插入数据,以及使用算术、比较和逻辑运算符。此外,还探讨了字符串、浮点数、时间类型等数据类型的使用。
1126

被折叠的 条评论
为什么被折叠?



