Java基础26--Mysql的客户端的连接mysql服务&mysql的数据类型&mysql运算符

Java基础26–Mysql的客户端的连接mysql服务

mysql数据库管理软件:C/S

  • (1)服务器必须先启动(安装时启动)
    Java基础26--Mysql的客户端的连接mysql服务&mysql的数据类型&mysql运算符
    可以查看是否启动
  • (2)客户端连接服务器端

一、连接的方式一:用命令行客户端连接服务器
mysql -hlocalhost -P3306 -uroot -p回车
Enter password:密码

说明:
(1)如果你连接的是localhost本地的mysql,那么可以省略-hlocalhost
(2)如果你连接的mysql服务的端口号就是默认的3306,那么可以省略-P3306
(3)-h,-P,-u这三个options后面可以有空格,例如:-h localhost
但是-p与密码之间不要加空格,否则会认为这个空格是密码的其中一个字符

成功后,看到如下界面:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 8
Server version: 5.5.27 MySQL Community Server (GPL)

Copyright © 2000, 2015, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type ‘help;’ or ‘\h’ for help. Type ‘\c’ to clear the current input statement.

mysql>

二、mysql5.5版本等,安装后,有自带的一个命令行客户端
只需要输入密码
只能以root用户,并且只能连接本机的,mysql服务
Java基础26--Mysql的客户端的连接mysql服务&mysql的数据类型&mysql运算符
Java基础26--Mysql的客户端的连接mysql服务&mysql的数据类型&mysql运算符
只用输密码就行

三、可视化工具
例如:SQLyog,Navicate…

四、Java程序
JDBC的内容

简单的几个sql演示

(面试)
#注释
#1、查看当前mysql数据库管理软件中都有什么数据库
show databases;
Java基础26--Mysql的客户端的连接mysql服务&mysql的数据类型&mysql运算符

#使用一个数据库
use test;

#如果test不存在,可以创建一个新的数据库
create database test;

#查看当前数据库中都有什么表格
show tables;

#查看某个表的数据
select * from 表名称;
select * from t_employee;

#查询所有人的薪资
select salary from t_employee;
select salary+1000 from t_employee;

#修改所有人的薪资,涨1000元
update t_employee set salary = salary + 1000;

#查询薪资加完1000元后,超过20000
select * from t_employee where salary+1000 > 20000;

Java基础26--Mysql的客户端的连接mysql服务&mysql的数据类型&mysql运算符
注意:中文可能出现编码问题
Java基础26--Mysql的客户端的连接mysql服务&mysql的数据类型&mysql运算符
Java基础26--Mysql的客户端的连接mysql服务&mysql的数据类型&mysql运算符
解决方法:
设置当前命令行客户端的字符编码:
(1)方式一:修改客户端的字符编码为UTF-8,比较麻烦
(2)方式二:告知mysql数据库管理软件,我这个客户端就是GBK的
set names gbk;
Java基础26--Mysql的客户端的连接mysql服务&mysql的数据类型&mysql运算符

mysql的数据类型

一、mysql的数据类型

  • 1、整数系列
    TINYINT:非常小的整数,类似于Java的byte类型
    SMALLINT:小整数,类似于Java的short类型
    MEDIUMINT:中整数(3个字节),Java没有对应
    INT、INTEGER:整数,类似于Java的int类型
    BIGINT:大整数,类似于Java的long类型
    Java基础26--Mysql的客户端的连接mysql服务&mysql的数据类型&mysql运算符

使用int数据类型:
(1)int,等价于int(11)
(2)int(M):M表示宽度,需要结合另外的两个参数使用
unsigned:表示无符号,即没有负数
zerofill:表示用0填充
例如:int(5) unsigned zerofill,表示每一个整数有5位数字,如果不足5位的在左边用0凑够5位
如果只是单独int(5),那是不会起作用。
无论:int的宽度指定为多少,在内存中都是占4个字节,如果你的数字超过了int(5)也可以存储

  • 2、浮点小数
    float:4个字节
    double:8个字节

使用float和double时两种形式:
(1)float或double
(2)float(M,D),double(M,D):M表示总位数,D表示精度,即小数点几位
例如:double(5,2)表示的数据范围[-999.99,999.99],如果超过这个范围会报错。

  • 3、定点小数,类似于Java的BigDecimal,底层使用字符串存储
    DECIMAL
    DECIMAL(M,D)

  • 4、日期时间类型
    date:只能表示日期
    time:表示时间
    datetime:表示日期和时间
    year:表示年
    timestamp:时间戳,表示日期和时间

datetime和timestamp:
(1)timestamp实际存储的毫秒值,显示时,显示根据毫秒值算出来一个本地化的日期时间
datetime就是存储日期时间
(2)timestamp因为存储的毫秒值,所以在比较和计算时,效率比较高。
(3)datetime和timestamp可以表示的时间范围是不同的
Java基础26--Mysql的客户端的连接mysql服务&mysql的数据类型&mysql运算符
Java基础26--Mysql的客户端的连接mysql服务&mysql的数据类型&mysql运算符

  • 5、字符串
    强调:mysql没有单字符类型,只有字符串类型

char:定长字符串,长度[1,255]
char,char(1),长度为1个字符
char(10),长度为10个字符
varchar:变长字符串
varchar(M):必须指定M,这个M的意思是最长不超过M个字符
例如:varchar(20),最长不超过20个字符

text:长文本
一般用于存储,文字比较多的,简介等,又不经常检索的信息(检索效率低)
Java基础26--Mysql的客户端的连接mysql服务&mysql的数据类型&mysql运算符

char和varchar
(1)内存占用空间不同
char(M):M字符就占M个字符的空间
例如:char(2) 实际存储的是’男’,但是也是占2个字符的位置,那一个空的字符存储的是\u0000
varchar:实际几个字符 + 1/2个字节的空间
例如:varchar(20) 实际存储的是’张三’,占的2个字符 + 1/2个字节(用来记录实际的字符个数的)
(2)
varchar节省空间,但是每次存和取,都要数字符个数
char:看起来浪费空间,但是每次存和取,都按照固定的长度去处理的

建议:像身份证号,学号,邮编等定长的字符串使用char,例如:地址等使用变长的
现在mysql的版本对varchar优化的越来越快了。

  • 6、位类型(了解)
    二进制的位类型,BIT(M)类型允许存储M位值。M范围为1~64,默认为1

  • 7、blob系列类型(了解)
    BINARY和VARBINARY类型类似于CHAR和VARCHAR类型,但是不同的是,它们存储的不是字符字符串,而是二进制串。所以它们没有字符集

  • 8、枚举(ENUM)
    多个中选择一个

  • 9、集合
    多个中可以选择多个

导入执行备份的sql脚本

Java基础26--Mysql的客户端的连接mysql服务&mysql的数据类型&mysql运算符
Java基础26--Mysql的客户端的连接mysql服务&mysql的数据类型&mysql运算符
一、导入
1、登录mysql后
2、导入执行sql脚本
mysql> source sql文件的路径名
例如:mysql> source d:/mysqldb.sql

二、导出数据库备份
不用登录,直接在命令行
mysqldump -h主机名 -P端口 -u用户名 -p密码 --database 数据库名 > 文件名.sql
例如:
mysqldump -hlocalhost -P3306 -uroot -p123456 --database test > D:\mysqldb.sql

先登录
Java基础26--Mysql的客户端的连接mysql服务&mysql的数据类型&mysql运算符
查看数据库:
show databases;
Java基础26--Mysql的客户端的连接mysql服务&mysql的数据类型&mysql运算符
使用test数据库
use test;
Java基础26--Mysql的客户端的连接mysql服务&mysql的数据类型&mysql运算符
test数据库不存在,创建test数据库
create database test;
Java基础26--Mysql的客户端的连接mysql服务&mysql的数据类型&mysql运算符
再使用
Java基础26--Mysql的客户端的连接mysql服务&mysql的数据类型&mysql运算符
导入文件
source 文件路径
Java基础26--Mysql的客户端的连接mysql服务&mysql的数据类型&mysql运算符
Java基础26--Mysql的客户端的连接mysql服务&mysql的数据类型&mysql运算符
导入成功

查看当前数据库中都有什么表格
show tables;
Java基础26--Mysql的客户端的连接mysql服务&mysql的数据类型&mysql运算符
查看某个表的数据
select * from 表名;
Java基础26--Mysql的客户端的连接mysql服务&mysql的数据类型&mysql运算符
Java基础26--Mysql的客户端的连接mysql服务&mysql的数据类型&mysql运算符
表的一部分截图,可以看出乱码

设置告知服务器当前客户端的字符编码,修改服务器端的一个变量
set names gbk;(一般中文版就gbk)
Java基础26--Mysql的客户端的连接mysql服务&mysql的数据类型&mysql运算符
设置完重新查询
Java基础26--Mysql的客户端的连接mysql服务&mysql的数据类型&mysql运算符
若是设置完后还是乱码:有两种原因
1:安装mysql时没有选择utf-8,数据库里默认拉丁的字符集,要么重新配置要么停掉服务改配置文件
2:安装时选择了utf-8,但是win10的操作系统,系统是比较新的版本,在mysql的cmd里,点击左上角图标,选择属性,选项里有一个低版本的控制台的运行方式,选上这个后电脑重启一下再使用就行

mysql的运算符

举例:
Java基础26--Mysql的客户端的连接mysql服务&mysql的数据类型&mysql运算符
Java基础26--Mysql的客户端的连接mysql服务&mysql的数据类型&mysql运算符
Java基础26--Mysql的客户端的连接mysql服务&mysql的数据类型&mysql运算符
单独运算也可以写为
Java基础26--Mysql的客户端的连接mysql服务&mysql的数据类型&mysql运算符
Java基础26--Mysql的客户端的连接mysql服务&mysql的数据类型&mysql运算符
只保留整数部分
Java基础26--Mysql的客户端的连接mysql服务&mysql的数据类型&mysql运算符
一、运算符

  • 1、算术运算符
    +:加
    -:减
    *:乘
    /:除 可以保留小数部分
    div:除 如果整数与整数相除只保留整数部分
    %:求余数
    mod:求余数(和%一样)

select 1/2; #0.5
select 1 div 2; #0

  • 2、比较运算符

:大于
<:小于
=:等于 注意区别,Java中是==,mysql中是=
=:大于等于
<=:小于等于
!=:不等于
<>:不等于
<=>:安全等于 用于判断null值的比较运算符
null值的判断,习惯上我们用is null 和is not null

Java基础26--Mysql的客户端的连接mysql服务&mysql的数据类型&mysql运算符
用0表示false,1表示true

#查询薪资大于20000元的员工
select * from t_employee where salary > 20000;

#查询所有男员工
select * from t_employee where gender = ‘男’;
select * from t_employee where gender != ‘女’;
select * from t_employee where gender <> ‘女’;

#查询奖金比例commision_pct是null的员工
select * from t_employee where commission_pct <=> null;
select * from t_employee where commission_pct is null;

  • 3、逻辑运算符
    &&和and:逻辑与
    两个条件同时满足(单个&是按位与)
    ||和or:逻辑或
    两个条件满足任意一个
    ^和xor:逻辑异或
    两个条件只能满足其中一个
    !和not:
    不满足xx条件

#查询薪资大于20000元的女员工
select * from t_employee where salary > 20000 && gender = ‘女’;
select * from t_employee where salary > 20000 and gender = ‘女’;

#查询男员工
select * from t_employee where not gender = ‘女’;
select * from t_employee where !(gender = ‘女’);

#查询薪资大于10000 异或 性别是男的,即它俩只能满足一个
#即查询薪资大于10000的女的或薪资低于10000的男的
select * from t_employee where salary>10000 ^ gender =‘男’;
select * from t_employee where salary>10000 xor gender =‘男’;

  • 4、范围
    (1)区间范围:
    在[a,b]之间,between a and b
    不在[a,b]之间,not between a and b
    (2)集合范围
    in(…)
    not in(…)

#查询薪资在[15000,20000]之间的员工
select * from t_employee where salary between 15000 and 20000;
select * from t_employee where salary >= 15000 and salary <=20000;

#查询薪资在9000,10000,12000
select * from t_employee where salary in(9000,10000,12000);
select * from t_employee where salary =9000 || salary =10000 || salary =12000;

  • 5、模糊查询
    like ‘%x%’ x代表确定的字符 %表示不确定的0~n个字符
    ‘_x%’ x代表确定的字符 _表示不确定的1个字符

#查询,名字ename中包含“冰”这个字的员工
select * from t_employee where ename like ‘%冰%’;

#查询,名字ename是张xx,三个字
select * from t_employee where ename like ‘张__’;

#查询,名字ename是第二个字是’冰’
select * from t_employee where ename like ‘_冰%’;

6:位运算符:和Java中规则一样