MySQL学习

程序员

JavaEE 企业级Java开发 Web开发

前端 (页面渲染:展示,数据提取)

后台(连接点:连接数据库JDBC,连接前端(控制、控制视图,和给前端传递数据))

需求:
  只会写代码,学好数据库,可以混饭吃!!!
  操作系统、数据结构与算法!!可以当一个不错的程序员
  离散数学、数字电路、计算机体系结构、编译原理 + 实战经验 —— 高级程序员~优秀的程序员

为什么要学习数据库

1、适应现在的岗位需求

2、现在的世界是大数据时代,得数据库者得天下;

3、需求量大,主要是用于存取数据;

4、数据库是软件系统中最核心的存在 DBA;

什么是数据库

数据库:DB(DataBase)

概 念:数据仓库,软件、安装在操作系统(Windows、Linux、Mac、…)之上,可以存储大量的数据,500万以下;若要存500万以上,则要用到优化机制。

作 用:存储数据,管理数据

数据库的分类

关系型数据库

  • MySQL、Oracle、SQL Server、DB2、SQLite
  • 通过表和表之间,行和列之间的关系进行数据的存储;比如学员信息表、考勤表、…

存储方式:
  1、以表格的形式存储,数据是以行和列的存储方式进行存储,要读取和查询都非常的方便;

  2、存储规范:关系型数据库为了避免重复、规范化数据以及充分利用好存储空间,把数据按照最小关系表的形式进行存储,这样数据管理的就可以变得很清晰、一目了然;

  3、关系型数据库采用结构化查询语言(即SQL)来对数据库进行查询;

  4、事务性:关系型数据库强调ACID规则(原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability))

  5、授权方式:关系型数据库常见的有 Oracle,SQLServer,DB2,Mysql,除了Mysql大多数的关系型数据库如果要使用都需要支付一笔价格高昂的费用,即使是免费的Mysql性能也受到了诸多的限制。

关系型数据库

非关系型数据库

概念: 非关系型数据库又被称为 NoSQL(Not Only SQL ),意为不仅仅是 SQL。通常指数据以对象的形式存储在数据库中,而对象之间的关系通过每个对象自身的属性来决定,常用于存储非结构化的数据。

  • Redis、MongoDB
  • 非关系型数据库、对象存储、通过对象的自身属性来决定

概念:
  NoSQL最常见的解释是“non-relational”, “Not Only SQL”也被很多人接受。NoSQL仅仅是一个概念,泛指非关系型的数据库,区别于关系数据库,它们不保证关系数据的ACID特性。

存储方式:
  键值(Key-Value)存储数据库
  这一类数据库主要会使用到一个哈希表,这个表中有一个特定的键和一个指针指向特定的数据

非关系型数据库

关系型数据库与非关系型数据库的区别

  1、事务:SQL中如果多张表需要同批次被更新,即如果其中一张表跟新失败的话,其他表也不会更新成功。这种场景可以通过事务来控制,可以在所有命令完成之后,再统一提交事务。在Nosql中没有事务这个概念,每一个数据集都是原子级别的。

  2、数据表 VS 数据集:关系型是表格型的,存储在数据表的行和列中。彼此关联,容易提取。而非关系型是大块存储在一起。

  3、预定义结构 VS 动态结构:
   在SQL中,必须定义好地段和表结构之后,才能够添加数据,例如定义表的主键、索引、外键等。表结构可以在定义之后更新,但是如果有比较大的结构变更,就会变的比较复杂。
   在Nosql数据库中,数据可以在任何时候任何地方添加。不需要预先定义。
  
  4、存储规范 VS 存储代码:
   关系型数据库为了规范性,把数据分配成为最小的逻辑表来存储避免重复,获得精简的空间利用。但是多个表之间的关系限制,多表管理就有点复杂。
   当然精简的存储可以节约宝贵的数据存储,但是现在随着社会的发展,磁盘上付出的代价是微不足知道的。
   非关系型是平面数据集合中,数据经常可以重复,单个数据库很少被分开,而是存储成为一个整体,这种整块读取数据效率更高。
   
  5、纵向拓展 VS 横向拓展
   为了支持更多的并发量,SQL数据采用纵向扩展,提高处理能力,通过提高计算机性能来提高处理能力。
   NoSQL通过横向拓展,非关系型数据库天然是分布式的,所以可以通过集群来实现负载均衡。

关系型数据库和非关系型数据的区别

DBMS (数据库管理系统)

在这里插入图片描述

MySQL安装

  • 官网下载

官网下载

  • 应用文件安装(.exe)

应用文件.exe安装

  • 压缩文件安装

压缩包的形式进行安装


根据个人需求进行MySQL安装

使用SQL创建数据库表

创建数据库

  语句:

语法:create database 数据库名称
样例:
    create database eye;

创建数据库表

格式:

create table [if not exists] 表名
(
   字段名  列类型[属性][索引][注释],
   字段名  列类型[属性][索引][注释],
   ......
   字段名  列类型[属性][索引][注释]
)

样例:

create table if not EXISTS course
(
id INT(6) not NULL comment '学号',
name varchar(255) not null default '匿名' comment '姓名',
pwd varchar(255) not null default '123456' comment '密码',
sex varchar(2) not null default '女' comment '性别',
birthday TIMESTAMP default null comment '出生日期',
address varchar(255) default null comment '家庭住址',
email varchar(255) default null comment '邮箱',
PRIMARY KEY(id)
)

创建表时,需要注意的地方

第一点:字段auto_increment 为自增
第二点:字符串使用单引号括起来
第三点:所有的语句后面加,(英文的逗号),最后一个不用加

MySQL中的数据类型

  MySQL中有三种数据类型:文本、数字和日期/时间类型

Text 类型

数据类型描述
char保存固定长度的字符串(可包含字母、数字以及特殊字符);在括号中指定字符串的长度,最多 255 个字符
varchar(size)保存可变长度的字符串(可包含字母、数字以及特殊字符),在括号中指定字符串的最大长度,可达255 个字符。注释:如果值的长度大于 255,则被转换为 TEXT 类型
tinytext存放最大长度为 255 个字符的字符串
text存放最大长度为 65,535 个字符的字符串
blob用于 BLOBs (Binary Large OBjects),存放最多 65,535 字节的数据
mediumtext存放最大长度为 16,777,215 个字符的字符串
mediumblob用于 BLOBs (Binary Large OBjects),存放最多 16,777,215 字节的数据
longtext存放最大长度为 4,294,967,295 个字符的字符串
longblob用于 BLOBs (Binary Large OBjects),存放最多 4,294,967,295 字节的数据
enum(x,y,z,etc)允许你输入可能值的列表。可以在 enum列表中列出最大 65535 个值。如果列表中不存在插入的值,则插入空值。注释:这些值是按照你输入的顺序存储的。可以按照此格式输入可能的值:ENUM(‘X’,‘Y’,‘Z’)
set与 enum 类似,set 最多只能包含 64 个列表项,不过 set 可存储一个以上的值

Number 类型

数据类型描述
tinyint(size)-128 到 127 常规。0 到 255 无符号*。在括号中规定最大位数。
smallint(size)-32768 到 32767 常规。0 到 65535 无符号*。在括号中规定最大位数。
mediumint(size)-8388608 到 8388607 普通。0 到 16777215 无符号*。在括号中规定最大位数。
int(size)-2147483648 到 2147483647 常规。0 到 4294967295 无符号*。在括号中规定最大位数。
bigint(size)-9223372036854775808 到 9223372036854775807 常规。0 到 18446744073709551615 无符号*。在括号中规定最大位数。
float(size,d)带有浮动小数点的小数字。在括号中规定最大位数。在 d 参数中规定小数点右侧的最大位数。
double(size,d)带有浮动小数点的大数字。在括号中规定最大位数。在 d 参数中规定小数点右侧的最大位数。
decimal(size,d)作为字符串存储的 double类型,允许固定的小数点。

日期类型

数据类型描述
date()

日期。格式:YYYY-MM-DD

注释:支持的范围是从 '1000-01-01' 到 '9999-12-31'

datetime()

*日期和时间的组合。格式:YYYY-MM-DD HH:MM:SS

注释:支持的范围是从 '1000-01-01 00:00:00' 到 '9999-12-31 23:59:59'

timestamp()

*时间戳。TIMESTAMP 值使用 Unix 纪元('1970-01-01 00:00:00' UTC) 至今的描述来存储。格式:YYYY-MM-DD HH:MM:SS

注释:支持的范围是从 '1970-01-01 00:00:01' UTC 到 '2038-01-09 03:14:07' UTC

time()

时间。格式:HH:MM:SS

注释:支持的范围是从 '-838:59:59' 到 '838:59:59'

year()

2 位或 4 位格式的年

注释:4 位格式所允许的值:1901 到 2155。2 位格式所允许的值:70 到 69,表示从 1970 到 2069

其他数据库类型可以参照

常用数据库语句

show create database school   --查看数据库的语句
show create table student --查看student数据表的定义语句
desc student --显示表的结构
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

殇淋狱陌

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值