关于MySQL数据库

MySQL数据库

  • 数据库的基本概念
  1. 数据库管理技术的发展阶段

什么是数据管理:对各类数据进行分类,组织,编码,存储,检索,维护。

数据管理的技术发展:

人工管理阶段:(20世纪50年代,计算机硬件还没发达,没有磁盘, 纸袋)

文件系统阶段:(20世纪50年代后期-60年代中期),出现了磁盘,高级语言,操作系统

数据库系统阶段:(20世纪60年代后期-现在),网络技术的发展,软硬件功能提升,文件系统已经远远不能满足于要求,尤其是关系型数据库。如果你想学编程,可以来小编的C/C++编程秃头俱乐部

  1. 数据库系统的概念

什么是数据库:按照一定的规则进行存储,管理数据的仓库。

什么是数据库管理系统:操作和管理数据库的大型软件。建立、使用、维护数据库。对数据库进行统一的管理和控制。

常用的数据库管理系统:MySQL, Oralce, SQL Server , DB2

什么是关系型数据库:采用关系模型来组织数据的数据库,(关系模型可以简单的理解为二维表格模型)

  1. 什么是SQL语句

结构化查询语句, (Structure Query Language)

由IBM公司70年代设计出来的,被ISO组织纳为关系数据库的国际标准,也是目前使用最广泛的关系数据库标准语句。

  1. MySQL的发展历史

1985年 ,由瑞典的XXX和XXX成立了一家公司,MySQL AB公司, ISAM存储引擎算法。

MySQL是一款免费开源,小型,关系型数据库。

2000年,MySQL对原来的存储引擎进行整理,命名为MyISAM

2004年,发布了4.0经典版

2005年,发布了5.0版本

2008年,被Sun公司收购

2009年,Sun公司被Oracle公司收购了

  • MySQL的安装和配置
  1. 下载MySQL

MySQL :: Download MySQL Community Server

 

  1. 安装MySQL
  1. 解压

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数据库基本操作
  1. 系统数据库

查看数据库

show databases;

SHOW DATABASES;

 

SQL语句不区分大小写

  1. 创建数据库

create database 数据库名;

数据库命名规则:

  1. 数据库名不能与已经存在的数据库重名。
  2. 由字母,数字,下划线,@, #,$符号组成,a-z, A-Z, 其他语言的字母;
  3. 首字母不能是数字和$
  4. 标识符不能是MySQL的保留字
  5. 不允许有空格和特殊字符
  6. 长度不能超过128位
  7. 数据库名一定要有实际意义,见名知意。

create database test;

执行完毕之后,提示分为三部分:

Query OK: 表示SQL语句执行成功;

1 row affected:表示操作只影响了一行记录;

    1. sec):表示操作执行的时间。

注意:数据库已经存在了,再次创建就会报错:

可以使用安全的方式创建数据库:

create database if not exists test;

  1. 选择数据库

use 数据库名

这个语句可以打分号,也可以不打分号

如果你选择不存在的数据库,则会报错:

4、删除数据库

drop database 数据库名;

注意:

  1. 如果删除的数据库已经删除或者不存在,则会报错:

  1. 执行这条命令的时候,一定要谨慎,数据不能恢复

四、数据库的存储引擎

存储引擎是什么:目的就是为了提高MySQL数据库管理系统的使用效率和灵活性。

我们可以根据实际的需要选择合适的存储引擎。

存储引擎,指定了表的类型,表的存储方式,索引数据,是不是支持事务。

1、通过show engines;查看数据库所支持的存储引擎

show engines;

show engines \g

show engines \G

注意:”;”、”\g”:都是作为语句的结束,作用是一样的。

“\G”:以每一行显示

2、通过show variables来查看所支持的存储引擎

  1. 查询默认的存储引擎

查询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

  1. 整数类型

类型名称

说明

字节

有符号

无符号

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;

  1. 浮点型和定点型

浮点型:

浮点型类型

所占字节

取值范围

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

  1. 位类型

位类型

所占字节

最小值

最大值

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)

);

  1. 日期和时间类型

日期和时间类型

所占字节

最小值

最大值

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()));