MySQL数据库
- 数据库的基本概念
- 数据库管理技术的发展阶段
什么是数据管理:对各类数据进行分类,组织,编码,存储,检索,维护。
数据管理的技术发展:
人工管理阶段:(20世纪50年代,计算机硬件还没发达,没有磁盘, 纸袋)
文件系统阶段:(20世纪50年代后期-60年代中期),出现了磁盘,高级语言,操作系统
数据库系统阶段:(20世纪60年代后期-现在),网络技术的发展,软硬件功能提升,文件系统已经远远不能满足于要求,尤其是关系型数据库。如果你想学编程,可以来小编的C/C++编程秃头俱乐部!
- 数据库系统的概念
什么是数据库:按照一定的规则进行存储,管理数据的仓库。
什么是数据库管理系统:操作和管理数据库的大型软件。建立、使用、维护数据库。对数据库进行统一的管理和控制。
常用的数据库管理系统:MySQL, Oralce, SQL Server , DB2
什么是关系型数据库:采用关系模型来组织数据的数据库,(关系模型可以简单的理解为二维表格模型)
- 什么是SQL语句
结构化查询语句, (Structure Query Language)
由IBM公司70年代设计出来的,被ISO组织纳为关系数据库的国际标准,也是目前使用最广泛的关系数据库标准语句。
- MySQL的发展历史
1985年 ,由瑞典的XXX和XXX成立了一家公司,MySQL AB公司, ISAM存储引擎算法。
MySQL是一款免费开源,小型,关系型数据库。
2000年,MySQL对原来的存储引擎进行整理,命名为MyISAM
2004年,发布了4.0经典版
2005年,发布了5.0版本
2008年,被Sun公司收购
2009年,Sun公司被Oracle公司收购了
- MySQL的安装和配置
- 下载MySQL
MySQL :: Download MySQL Community Server
- 安装MySQL
- 解压
b.添加环境变量
D:\Program Files\mysql-8.0.22-winx64\bin
c.安装数据库
mysqld --initialize --console
mysqld –install (注意:一般要以管理员身份运行控制台)
net start mysql 开启MySQL服务
如果要停止MySQL服务
如果要卸载MySQL
首先:先停止MySQL服务
然后:删除服务名
再次:删除D:\Program Files\mysql-8.0.22-winx64\ 这个文件夹下所有文件:MySQL文件
最后:删除环境变量;
d.登录MySQL数据库
mysql –uroot –pxxx 可以登录,不推荐,因为密码暴露
建议这么写:
e.初次修改密码
alter user root@localhost identified by '12345678';
f.退出
exit;
quit;
- MySQL数据库基本操作
- 系统数据库
查看数据库
show databases;
SHOW DATABASES;
SQL语句不区分大小写
- 创建数据库
create database 数据库名;
数据库命名规则:
- 数据库名不能与已经存在的数据库重名。
- 由字母,数字,下划线,@, #,$符号组成,a-z, A-Z, 其他语言的字母;
- 首字母不能是数字和$
- 标识符不能是MySQL的保留字
- 不允许有空格和特殊字符
- 长度不能超过128位
- 数据库名一定要有实际意义,见名知意。
create database test;
执行完毕之后,提示分为三部分:
Query OK: 表示SQL语句执行成功;
1 row affected:表示操作只影响了一行记录;
-
- sec):表示操作执行的时间。
注意:数据库已经存在了,再次创建就会报错:
可以使用安全的方式创建数据库:
create database if not exists test;
- 选择数据库
use 数据库名
这个语句可以打分号,也可以不打分号
如果你选择不存在的数据库,则会报错:
4、删除数据库
drop database 数据库名;
注意:
- 如果删除的数据库已经删除或者不存在,则会报错:
- 执行这条命令的时候,一定要谨慎,数据不能恢复
四、数据库的存储引擎
存储引擎是什么:目的就是为了提高MySQL数据库管理系统的使用效率和灵活性。
我们可以根据实际的需要选择合适的存储引擎。
存储引擎,指定了表的类型,表的存储方式,索引数据,是不是支持事务。
1、通过show engines;查看数据库所支持的存储引擎
show engines;
show engines \g
show engines \G
注意:”;”、”\g”:都是作为语句的结束,作用是一样的。
“\G”:以每一行显示
2、通过show variables来查看所支持的存储引擎
- 查询默认的存储引擎
查询my.ini文件
- MySQL数据类型
主要有数值类型、日期/时间类型、字符串类型
(1)、数值类型:
整数类型:tinyint、smallint、mediumint、int、bigint
浮点小数类型:float 、double
定点小数类型:decimal
(2)、字符串类型:
字符串类型:文本字符串类型、二进制字符串类型
包括:char 、varchar、binary、blob、text、enum、set等
(3)、日期/时间类型
包括:year、time、date、datetime、timestmap
- 整数类型
类型名称 | 说明 | 字节 | 有符号 | 无符号 |
tinyint | 很小的整数 | 1个字节 | -128->127 | 0->255 |
smallint | 小的整数 | 2个字节 | -32768->32767 | 0->65535 |
mediumint | 中等整数 | 3个字节 | -2^23->2^23-1 | 0->2^24-1 |
int | 普通大小的整数 | 4个字节 | -2^31->2^31-1 | 0->2^32-1 |
bigint | 大整数 | 8个字节 | -2^63->2^63-1 | 0->2^64-1 |
注意:如果你无法区分每一个整数类型的取值范围,可以查看MySQL的帮助信息。
help contents;
help Data types;
help tinyint;
创建数据库:
create database test;
使用数据库:
use test
创建数据表:
create table test_int(
num1 tinyint unsigned,
num2 smallint,
num3 mediumint,
num4 int,
num5 bigint
);
注意:如果是有符号或者无符号,类型后面加上unsigned或者 signed,默认有符号,可以不加。
测试数据:
insert into test_int
(num1, num2, num3, num4, num5)
value
(1, 32766, 1234567, 2000000000,123456789012);
如果数据超过表示范围,将报错。
也可以使用SQL语句
show errors;或者show warnings;来观察错误或者警告信息。
查询所有数据:
select * from test_int;
- 浮点型和定点型
浮点型:
浮点型类型 | 所占字节 | 取值范围 |
float | 4 | -3.402823466E+38->-1.175494351E-38,0,1.175494351E-38->3.402823466E+38 |
double | 8 | -1.7976931348623157E+308->-2.2250738585072014E-308,0,2.2250738585072014E-308->1.7976931348623157E+308 |
定点型:
定点数类型 | 所占字节 | 取值范围 |
dec(M,D)和decimal(M,D) | M+2 | M:最大为65,D:最大为30 |
浮点型和定点型都可以使用(M,N)来表示,M:精度,表示总共的位数;N:标度,表示的小数的位数。
float(M,D): M:总位数,D:小数点后面的位数,如果省略M和D,这个值,将在硬件允许的限制范围,单精度浮点数一般精确到7位小数。
double(M,D): M:总位数,D:小数点后面的位数,如果省略M和D,这个值,将在硬件允许的限制范围,双精度浮点数一般精确到15位小数。
decimal (M,D): M:总位数,D:小数点后面的位数,如果省略D,默认值为0,如果省略M,默认值为:10
注意:如果要求小数数据精确度非常高,可以使用dec和decimal类型
创建数据表:
create table test_float(
num1 float,
num2 double,
num3 decimal(64,30)
);
插入数据:
insert into test_float
(num1, num2, num3)
value
(1.0, 123456789.123456789, 1234567890123456789012345678901234.123456789012345678901234567890);
注意:float、double类型在存储的时候,存储的都是近似值,而decimal存储的是字符串,因为提供的是更高的精度,需求要表示金额等货币类型的时候,优先选择decimal
- 位类型
位类型 | 所占字节 | 最小值 | 最大值 |
bit(M) | 1-8 | big(1) | big(64) |
说明:bit数据类型,用来存储bit位
bit(M) : 代表可以存储M个bit, M的取值范围:1-64
创建数据表:
create table test_bit(
id bit(8)
);
插入数据:
create table test_bit(
id bit(8)
);
- 日期和时间类型
日期和时间类型 | 所占字节 | 最小值 | 最大值 |
date | 4 | 1000-01-01 | 9999-12-31 |
datetime | 8 | 1000-01-01 00:00:00 | 9999-12-31 23:59:59 |
timestamp | 4 | 1970-01-01 00:00:01 | 2038-01-19 03:14:07 |
time | 3 | -838:59:59 | 838:59:59 |
year | 1 | 1000 | 9999 |
查看系统时间:select curdate(), curtime(), now(), year(now()), time(now());
创建数据表:
create table test_datetime(
num1 date,
num2 datetime,
num3 timestamp,
num4 time,
num5 year
);
插入数据:
insert into test_datetime
(num1, num2, num3 , num4, num5)
value
(curdate(), now(), now(), time(now()), year(now()));