Mysql - 01

目录

 

1. 数据库

2.MySql

3. MySql客户端工具

3.1 连接登录服务器

3.2 查看数据库

3.3 进入数据库

3.4 查看数据表

3.5 退出客户端

4. 远程登录MySql服务器

5. 中文问题

6.数据库管理

6.1创建数据库

6.2 查看数据库

6.3 修改数据库

6.4 删除数据库

7. 数据表的管理

7.1 创建表

7.2 查看表

7.3 修改表

8.SQL

8.1 insert 插入数据

8.2 update 修改数据

8.3 delete 删除数据

8.4 select 查询数据

9.技术术语

10. 存储引擎

10.1innodb

10.2 myisam

11.mysql数据类型

11.1 字符串

char

varchar

text

11.2 数字

11.3 日期

datetime

date

time

timestamp

12. default和comment


1. 数据库

存储数据的仓库有:

Oracle            MySql

DB2                Sybase

Sql Server      Sqlite

No Sql数据库  Redis

MongoDB


2.MySql

创始人是一个芬兰人,把MySql公司,以10亿美金,卖给Sun公司,一年后,Sun被Oracle收购,MySql被Oracle收购之后,Oracle不重视MySql的开发,收缩了MySql的开发社区,只允许几个大的厂商参与开发,还推出收费版MySql

主流开源社区,认为MySql存在闭源风险,开源社区已经不支持MySql,而是转向支持MariaDB数据库

MariaDB数据库

MySql创始人从MySql新开了一个新的分支,起个名叫MariaDB,继续开发

阿里向Ma也riaDB贡献代码


3. MySql客户端工具

MySql命令行客户端有:

      Workbench       Navicat         Sqlyog         MySql Front...

3.1 连接登录服务器

c:\program files\mysql5.5\bin

 

mysql -uroot -p

登录本机服务器,连接3306端口

 

mysql -uroot -p -hxxx.xx.xx.xxx -P3306

登录指定ip地址的服务器,连接指定的端口

 

mysql -uroot -p

password:****

3.2 查看数据库

 

show databases;

show schemas;

3.3 进入数据库

 

 

use mysql;

use test;

 

3.4 查看数据表

show tables;

3.5 退出客户端

 

quit

\q


4. 远程登录MySql服务器

4.1 MySql用户

MySql用户用 用户名@网络地址 来标识

例如:

   'root'@'localhost'

   'root'@'192.168.122.8'

   'root'@'192.168.122.%'

   'root'@'%'

 

用户授权:

   可以设置一个用户访问数据库的权限,比如允许访问哪些库,哪些表,哪些字段,允许执行哪些操作

 

让root用户可以在远程连接,需要两步:

1.创建用户:

create user 'abc'@'localhost' identified by '123456'

create user 'abc'@'192.168.0.68' identified by ''

create user 'abc'@'192.168.0.%' identified by ''

create user 'abc'@'%' identified by ''

 

2.对用户授权:

grant    select,insert,update,delete     on     test.*   to   'abc'@'%'

grant    create,alter,drop               on    db1.*     to   'abc'@'localhost'

grant    all privileges                  on    *.*       to   'abc'@'%'

grant    select,insert                   on    db1.t1    to   'abc'@'%'

grant    select(id, name)                on   db1.t1     to   'abc'@'%

 

创建远程访问的root用户

创建用户

create user 'root'@'192.168.31.%'

identified by 'root';

对用户授权

grant all on *.* to

'root'@'192.168.31.%';

连接远程服务器(需要关闭防火墙)

mysql -uroot -p -hxxx.xx.xxx.xx -P3306


5. 中文问题

数据库端存储的字符编码,与客户端字符编码可能不一致

GBK

   中  d6 d0

 

UTF-8

   中  e4 b8 ad

 

服务器要做正确的编码转换,必须知道客户端发送的是什么编码

客户端必须告诉服务器,自己的编码是什么编码

windows命令行的字符编码,就是gbk编码

通知服务器,客户端的编码是gbk

set names gbk;


6.数据库管理

6.1创建数据库

create database db1

charset utf8;

 

6.2 查看数据库

show databases;

查看建库语句

show create database db1\G

 

 

6.3 修改数据库

只能修改数据库的默认字符编码

alter database db1

charset gbk;

show create database db1\G

 

6.4 删除数据库

删除数据库,所有的表,所有的数据都会被删除,不可恢复

 

drop database db1;

show databases;


7. 数据表的管理

7.1 创建表

create database db1

charset utf8;

use db1;

-- 创建表

create table tb1(

name varchar(10),

gender char(1)

) engine=innodb charset=utf8;

 

7.2 查看表

show tables;

查看表结构

desc tb1;

查看建表语句

 

show create table tb1\G

 

7.3 修改表

 

--改表名

rename table tb1 to user;

show tables;

 

--改表属性

修改存储引擎(innodb或myisam)

修改字符编码(gbk或utf8)

alter table user

engine=myisam charset=gbk;

show create table user\G

 

--添加字段

first 第一个

after 指定字段之后

 

alter table user add

id int first;

desc user;

alter table user add

email varchar(100) after name;

alter table user add(

age int,

height int

);

 --改字段名

alter table user

change gender sex char(1);

desc user;

 

--改字段类型

alter table user

modify sex char(2);

desc user;

 

--改字段顺序

 

 

first

after

alter table user

modify age int after name;

desc user;

 

 

 

--删除字段

删除字段,这个字段中所有的数据也会被删除,不可恢复

alter table user

drop column height;

desc user;

删除表

 

删除表,会删除表中说有的数据,不可恢复

drop table user;

如果存在的话,才执行删除

drop table if exists user;

show tables;

--截断表 (truncate)

 

删除表并重新创建,两步合并成一步执行

truncate table user;


8.SQL

结构化的查询语言    Structured Query Language

DDL 数据定义语言

     建库、建表...

DML 数据操作语言

     增删改

DQL 数据查询语言

       select

 

 

8.1 insert 插入数据

use db1;

新建user

create table user(

id int,

name varchar(10)

)engine=innodb charset=utf8;

通知服务器,客户端使用的是什么编码

set names gbk;

插入数据

insert into user values(1,'张三');

insert into user values

(2,'李四'),(3,'王五'),(4,'赵六');

 

8.2 update 修改数据

update user set

id=5,name='钱七'

where id=1;

select * from user;

 

8.3 delete 删除数据

delete from user

where id>3;

 

8.4 select 查询数据

select * from user;

select name from user;

select name,id from user;


9.技术术语

database

schema

mysql中都指的是数据库

table  表

row

record

    一行数据

    一条记录

column

field    列   字段 


10. 存储引擎

innodb (默认)

myisam

memory

10.1innodb

 

支持事务

支持外键

支持行级锁

有较多修改操作

10.2 myisam

不支持事务

不支持外键

只有表级锁

大量查询,很少修改的表,可以使用myisam,查询效率更高


11.mysql数据类型

11.1 字符串

char

定长字符串

char(20)

    定长20个字符

    不足20个字符,补空格

    超出20个字符,可能出错或截断

最大长度,不能超过255个字符

所有该字段的字符串数据,都是连续存储

 

varchar

 

 

变长字符串

varchar(20)

    最长不能超过20个字符

   不足20个字符,直接存储;

    超出20个字符,可能出错或截断;

存储的最大字节量,不能超过65535

   gbk编码,字符数65535/2

   utf8编码,字符数65535/3

字节量<=255,需要一个额外字节,表示字符串的字节长度

字节量>255,需要两个额外字节,表示字符串的字节长度

 

char 和 varchar

   char类型效率更高,定长字符串尽量使用char类型

text

    最大存储65535字节的字符串

 

11.2 数字

 

unsigned  无符号,只有正数

zerofill 

    用0填充配合int(6)格式设置使用

    1234 --> 001234

    12 --> 000012

    1234567 --> 没有影响

 

tinyint     1字节

smallint    2字节

int         4字节

bigint      8字节

 

float       4字节

double      8字节

         运算可能会产生不精确的结果

 

decimal(m,n)

      一共m位,小数n位,

      字节量:m+2

   表示金额,一般使用decimal

11.3 日期

datetime

年月日时分秒

date

年月日

time

时分秒

timestamp

时间戳

修改一行数据时,第一个timestamp字段,会自动更新成系统当前时间

最大只能到2031年

 

 

数据类型测试

use db1;

drop table if exists tb1;

create table tb1(

a int(6) unsigned zerofill,

b timestamp,

c timestamp

)engine=innodb charset=utf8;

insert into tb1(a) values

(12),(123),(1234567);

select * from tb1;

insert into tb1(a) values(-123);

修改其他字段,第一个timestamp字段会自动更新

update tb1 set a=999

where a=12;

select * from tb1;


12. default和comment

default 设置字段的默认值

插入一行数据时,一个字段中,不插入数据,自动填入指定的默认值

comment 在建表语句中,添加注释信息,会存储在服务器中

create table a(

a int comment '....';

);


<think>好的,我现在需要帮用户选择一个适合他们Hive版本的MySQL镜像源。首先,用户提供的镜像源列表中有很多MySQL的不同版本,从4.1到8.0,还有Cluster和工具相关的目录。我需要先回忆Hive通常兼容的MySQL版本。 Hive是一个数据仓库工具,通常用于Hadoop生态系统,它使用MySQL作为元数据存储。根据经验,Hive 3.x及以后的版本通常推荐使用MySQL 5.7或更高版本,而Hive 1.x和2.x可能兼容MySQL 5.6甚至更旧的版本。不过用户并没有明确说明他们的Hive版本,所以我可能需要做一些假设,或者提示用户提供更多信息。 在用户提供的镜像源中,MySQL的版本包括5.5、5.6、5.7、8.0等。最新的稳定版本应该是8.0,但需要确认Hive是否支持。因为MySQL 8.0在身份验证方式上有所改变,默认使用caching_sha2_password,而旧版的MySQL驱动可能不支持,需要额外配置。这可能带来兼容性问题。 如果用户使用的是较新的Hive版本(比如3.x),可能官方文档推荐MySQL 5.7或8.0,但需要注意驱动兼容性。而如果Hive版本较旧,可能需要选择5.6或更早的版本。例如,Hive 2.x可能官方支持到MySQL 5.7,但可能需要额外的JDBC驱动更新。 另外,用户提供的镜像源中,MySQL 5.7和8.0都有,同时还有Cluster版本,但Cluster通常用于分布式数据库,可能和Hive的元数据存储需求不太相关,除非用户有特殊需求。因此,建议用户选择常规的MySQL版本,如5.7或8.0。 不过,考虑到兼容性,大部分情况下Hive可能更稳定地运行在MySQL 5.7上,尤其是如果用户的Hive不是最新版。而如果用户使用的是最新Hive,可能已经适配了MySQL 8.0。此外,用户需要注意JDBC驱动版本是否支持对应的MySQL版本,比如使用MySQL Connector/J 8.x来连接MySQL 8.0。 总结,用户可能需要根据Hive的具体版本选择对应的MySQL版本,如果无法确定,建议选择较新且稳定的MySQL 5.7或8.0,同时注意驱动和配置的调整。需要提醒用户检查Hive官方文档的兼容性列表,以确保没有兼容性问题。</think>根据你提供的镜像源列表,选择MySQL版本时需要结合Hive官方文档的兼容性要求。以下是逐步分析: --- ### **1. 确认Hive与MySQL的兼容性** - Hive的元数据存储(Metastore)对MySQL版本有明确要求: - **Hive 1.x/2.x**:通常兼容MySQL **5.6/5.7** - **Hive 3.x+**:推荐使用MySQL **5.7/8.0**(需确认JDBC驱动是否支持) --- ### **2. 从镜像源中选择推荐版本** 根据你的镜像源,建议优先选择以下目录: - **稳定且广泛兼容**:$MySQL-5.7/$ - 支持Hive 1.x到3.x(需使用MySQL Connector/J 5.1.48+) - **最新版本**:$MySQL-8.0/$ - 仅适用于Hive 3.1.3+,且需配置`useSSL=false&allowPublicKeyRetrieval=true` --- ### **3. 不推荐版本** - **MySQL 5.6及以下**:$MySQL-5.6/$, $MySQL-5.5/$ - 较旧版本,可能缺少Hive Metastore所需功能。 - **MySQL Cluster系列**:如$MySQL-Cluster-7.6/$ - 专为高可用场景设计,常规Hive元数据存储无需使用。 --- ### **4. 操作建议** 1. **检查Hive版本**: - 若为Hive 3.x,优先选择$MySQL-8.0/$,否则选$MySQL-5.7/$。 2. **配置MySQL驱动**: - 下载对应版本的Connector/J([MySQL官网](https://dev.mysql.com/downloads/connector/j/)),放置到Hive的`lib`目录。 3. **修改Hive配置**(`hive-site.xml`): ```xml <property> <name>javax.jdo.option.ConnectionURL</name> <value>jdbc:mysql://your-mysql-host:3306/hive_metastore?createDatabaseIfNotExist=true</value> </property> ``` --- ### **5. 最终选择** 根据通用性推荐: $$ \boxed{MySQL-5.7/} $$ (若环境允许升级到Hive 3.x,可尝试$MySQL-8.0/$)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值