MySQL数据库
一、MySQL数据库的介绍
发展史
1996年,MySQL 1.0
2008年1月16号 Sun公司收购MySQL。
2009年4月20,Oracle收购Sun公司。
MySQL是一种开放源代码的关系型数据库管理系统(RDBMS),使用最常用的数据库管理语言--结构化查询语言(SQL)进行数据库管理。
MySQL是开放源代码的,因此任何人都可以在General Public License的许可下下载并根据个性化的需要对其进行修改。
MySQL因为其速度、可靠性和适应性而备受关注。大多数人都认为在不需要事务化处理的情况下,MySQL是管理内容最好的选择。
MySQL简介
MySQL是一个关系型数据库管理系统,由瑞典MySQLAB 公司开发,目前属于 Oracle 旗下产品。MySQL是最流行的关系型数据库管理系统之一,在WEB 应用方面,MySQL是最好的 RDBMS (RelationalDatabase Management System,关系数据库管理系统)应用软件MySQL所使用的SQL 语言是用于访问数据库的最常用标准化语言。MySQL软件采用了双授权政策,分为社区版和商业版,由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型网站的开发都选择MySQL 作为网站数据库
社区版本和企业版本的区别
主要的区别有以下两点。
1.企业版只包含稳定之后的功能,社区版包含所有Mysql的最新功能。
也就是说,社区版是企业版的测试版,但是,前者的功能要比后者多。
2.官方的支持服务只针对企业版,用户在使用社区版时出现任何问题,Mysql官方概不负责。
MySQL如何下载
进入MySQL官网(https://www.mysql.com) 查看底部下载-https://dev.mysql.com/downloads/mysql/
二、数据库的分类
关系型与非关系型数据库
关系型数据库的优势:
-
复杂查询
可以用SQL语句方便的在一个表以及多个表之间做非常复杂的数据查询
-
事物支持
使得对于安全性能很高的数据访问要求得以实现
非关系型数据库的优势:
-
性能
NOSQL是基于键值对的 可以想象成表中的主键和值的对应关系 不需要经过SQL层的解析 所以性能很高
-
可扩展性
同样也是也因为基于键值对 数据之间没有偶尔性 所以非常容易水平扩展
三、主要操作
数据库表的操作 包含创建 、修改、删除、查看
数据的操作:包含增加 修改 删除 查询 简称crud
crud:
是指在做计算处理时的增加(Create)读取查询(Retrieve) 更新(Update)和删除(Delete) 单词首字母简写
对于库和表操作的单词为:
创建 CREATE
删除 DROP
查看 SHOW
修改 ALTER
对数据的操作:
增:insert into
删:delete
改:update
查:select
四、进入到MySQL数据库
(1) 简单模式
C:\Users\xlg>mysql -uroot -p Enter password: ******
(2) 标准模式
C:\Users\xlg>mysql -h127.0.0.1 -uroot -p
mysql -hlocalhost -uroot -p
mysql -h10.0.110.238 -uroot -p
Enter password: ******
参数所代表的含义:
h:host 主机(localhost IPV4 127.0.0.1)
注意:
root用户默认是不允许远程访问登录的 也就是IPV4的访问不了的
u:root 用户
p:password 密码
授权root用户可以通过外网IP进行访问
命令:
grant all privileges on *.* to 'root'@'%' identified by 'password' with grant option
五、对于MySQL数据库的操作
对于库和表操作的单词为:
创建 CREATE
删除 DROP
查看 SHOW
修改 ALTER
对数据的操作:
增:insert into
删:delete
改:update
查:select
(1) 查看所有的数据库
show databases;
(2) 选择数据库
use 库名
(3) 查看当前库下有哪些表
show tables;
(4) 查看当前所在库
select database();
(5)创建数据库
create database 库名;
(6) 查看创建库信息
show create database 库名;
(7) 修改数据库字符编码
alter database 库名character set utf8;
(8)修改表的编码
alter table user character set utf8;
(9) 修改表中字段的字符编码
alter table 表名modify 字段名 字段类型约束条件 character set utf8;
(10) 删除库/表 drop database 库名;
drop table 表名;
(11) 创建库并设置字符编码
create database lucky character set utf8;
(12) 创建库判断当前创建的库是否存在(防止创建库时报错)
create database if not exists lucky;
(13) 创建表判断当前创建的表是否存在(防止创建库时报错)
create table if not exists lucky(id int unsigned);
(14) 查看表结构
desc 表名;
(15) 查看创建表语句
show create table lucky;
(16) 以竖状查看 \G
show create table lucky\G
(17) 删除不存在的表防止报错
drop table if exists lucky;
(18) 删除不存在的库防止报错
drop databaseif exists lucky;
(19) 撤销当前命令
\c
(20) 数据库的退出
-
\q
-
exit
-
quit
注意:
-
MySQL命令以英文的分号作为结束
-
SQL命令不区分大小写
-
在进入到一个数据库中在进入到另外一个的时候 不需要退出数据库 而是使用use再次进行数据库的切换
-
如果创建的MySQL库编码错误的 则表和字段都为库的编码 当将库编码改为utf8 则表和字段依然没有改变 那么需要继续修改表和字段 所以在创建的时候注意库的编码
-
更改默认创建库字符编码
C:\ProgramData\MySQL\MySQL Server 5.7
64行 :default-character-set=utf8
-
更改不严谨报错
sql-mode="NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
-
windows下表名库名不区分大小写 Linux下严格区分
-
MySQL数据库的名称具有唯一性 每个库中的表的名称也具有唯一性(库名或者一个库中的表名不要出现相同的名称)
-
当在输入命令的时候输入完以后 添加分号不能执行命令 那么查看一下左侧是否存在引号没有闭合的情况
六、MySQL表的创建
字段类型
(1) 数值类型
类型 | 大小 | 范围(有符号) | 范围(无符号) | 用途 |
---|---|---|---|---|
tinyint | 1字节 | (-128,127) | (0,255) | 小整数值 |
smallint | 2字节 | (-32768,32767) | (0,65535) | 大整数值 |
int | 4字节 | (-2147483648, 2147483647) | (0,4294967295) | 大整数值 |
float | 4字节 | 单精度浮点型 | ||
double | 8字节 | 双精度浮点型 | ||
decimal | decimal(m,d)如果m>d为m+2否则为d+2 | 依赖于m和d的值 | 依赖于m和d的值 | 小数值(更加精准) |
创建表语句
mysql> create table testnum(
-> ttinyint tinyint,
-> tsmallint smallint,
-> tint int,
-> tfloat float(6,2),
-> tdouble double(6,2),
-> tdecimal decimal(6,2)
-> );
创建表的主体结构:
create table if not exists 表名(
字段名称 字段类型 约束条件 字段说明,
字段名称 字段类型 约束条件 字段说明,
...
主键索引,
唯一索引,
常规索引
)
表插入数据语句
指定字段名称插入值
insert into 表名(字段1,字段2...) values(值1,值2...)
不指定字段插入之
insert into 表名 values(值1,值2...)
注意:
-
decimal 小数类型 不仅能够保证数据计算更为精确 还可以节省空间
-
float/double/decimal 在存储的时候 小数点超出了 会四舍五入
-
数值类型 如int /tinnyint/smallint 等 在给后面括号值的时候 没有任何的意义的 也就是说不能够去限制当前存储值的长度 除非配合约束条件zerofill 零填充的时候 才有意义
(2) 日期和时间类型
类型 | 大小(字节) | 范围 | 格式 | 用途 |
---|---|---|---|---|
date | 3 | 1000-01-01/9999-12-31 | YYYY-MM-DD | 日期值 |
time | 3 | -838:59:59/838:59:59 | HH:MM:SS | 时间值或持续时间 |
year | 1 | 1901-2155 | YYYY | 年分值 |
datetime | 8 | 1000-01- |