MySQL安装与应用
目录
安装
应用
MySQL运算符
安装
官方下载地址:MySQL :: Download MySQL Community Server (Archived Versions)
1.配置环境变量
新建:变量名:MySQL 变量值:安装MySQL地址(安装地址路径名尽量全是英文)
添加:系统变量名:path 添加变量值:%MySQL%\bin (如果前面没有 ; 号j,加上 ; 号)
2.配置文件
在(安装路径名下,bin目录同级目录下)新键配置文件名为:my.ini
[mysqld] # 设置3306端口 port=3306 # 设置mysql的安装目录 basedir=D:\Develop\MySQL\mysql-5.7.24-winx64 # 切记此处一定要用双斜杠\\,单斜杠我这里会出错,不过看别人的教程,有的是单斜杠。自己尝试吧 # 设置mysql数据库的数据的存放目录 datadir=D:\Develop\MySQL\mysql-5.7.24-winx64\Data # 此处同上 # 允许最大连接数 max_connections=200 # 允许连接失败的次数。这是为了防止有人从该主机试图攻击数据库系统 max_connect_errors=10 # 服务端使用的字符集默认为UTF8 character-set-server=utf8 # 创建新表时将使用的默认存储引擎 default-storage-engine=INNODB # 默认使用“mysql_native_password”插件认证 default_authentication_plugin=mysql_native_password [mysql] # 设置mysql客户端默认字符集 default-character-set=utf8 [client] # 设置mysql客户端连接服务端时默认使用的端口 port=3306 default-character-set=utf8
3.生成Data
cmd 进入 D:\Develop\MySQL\mysql-5.7.24-winx64\bin
输入指令:mysqld --initialize-insecure (生成 Data 数据库文件夹)
(找不到msvcp120dll,无法继续执行代码, 碰到这个问题, 点击下面链接下载安装(位置随意) https://www.microsoft.com/zh-CN/download/details.aspx?id=40784
4.注册服务
继续在cmd内输入指令:mysqld -install(可能用户注册权限不够,需用管理员身份打开命令控制符进行操作)
手动启动服务指令:net start MySQL
手动停止服务指令:net stop MySQL
查看电脑服务运行指令:services.msc(将MySQL成为电脑默认服务)
5.进入MySQL
(注:下列须在MySQL路径\bin目录下操作)
指令:mysql -u root -p (此时是没有密码的,敲两次回车就好了)
进入MySQL内后 设置密码指令:set password for root@localhost=password("自己需要设置的密码");
退出指令:exit 或 quit
进入他人MySQL指令:mysql -u root -p密码 -h他人服务器即电脑IP地址 -P端口号(默认:3306)
注:
mysql -u(用户名) -p密码 -hIP地址 -P端口号(默认端口号:3306)
下过MySQL设置过密码:将 skip-grant-tables 添加到my.ini配置文件内 mysqld 下
应用
注:此操作皆在登入MySQL后
SQL以分号结尾,可进行单行或多行书写
SQL不区分大小写,建议 关键字 大写
MySQL语法
/*多行注释*/ -- 单行注释 #单行注释
# DDL 操作数据库
use 数据库名; # 使用数据库
-- 增
create database 数据库名; # 创建数据库
create database if not exists 数据库名; # 如果数据库不存在就创建
-- 删
drop database 数据库名; # 删除数据库
drop database if exists 数据库名; # 如果数据库存在就删除
-- 查
show databases; # 查询所有数据库名称
select database(); # 查看当前使用的数据库
# DDL 操作表
-- 增
create table 表名(字段名1 数据类型1,字段名n 数据类型n); # 创建表
alter table 表名 add 列名 数据类型; # 表内添加列字段
-- 删
drop table 表名; # 删除表
drop table if exists 表名; # 如果表存在就删除
alter table 表名 drop 列名; # 删除列
-- 改
alter table 表名 rename to 新表名; # 修改表名
alter table 表名 modify 列名 新数据类型; # 修改数据类型
alter table 表名 change 列名 新列名 新数据类型; # 修改列名和数据类型
-- 查
show tables; # 查询当前数据库下所有表的名称
desc 表名; # 查询表的结构
# DML 操作数据
-- 增
insert into 表名(列名1,列名2,···) values(值1,值2,···); # 给指定列添加数据
insert into 表名 values(值1,值2,···); # 给全部列添加数据
insert into 表名(列名1,列名2,···) values(值1,值2,···),(值1,值2,···),···; # 批量添加数据
insert into 表名 values(值1,值2,···),(值1,值2,···),···; # 批量添加数据
-- 删
delete from 表名; # 删除所有数据
delete from 表名 where 条件; # 删除指定条件数据
-- 改
update 表名 set 列名=值,列名1=值1,...; # 修改所有指定的列的值
update 表名 set 列名=值,列名1=值1,... where 条件; # 修改指定条件列
# DQL 查询数据
-- 基础查询
select 字段1,... from 表名; # 查询指定列名的数据
select * from 表名; # 查询所有数据
select distinct */字段 from 表名; # 查询指定列数据并去重
select 字段1 (as) 别名,... from 表名; # 查询指定列的数据并取别名(as 可省略)
-- 条件查询
select 字段1,... from 表名 where 条件; # 查询指定符合条件的列
select * from 表名 where 条件; # 查询所有符合条件的列
select */字段 from 表名 where 条件1 &&/and 条件2; # 查询所有/指定符合两个条件的列
select */字段 from 表名 where 字段 between 数值 &&/and 数值; # 查询所有/指定符合字段条件范围的列
select */字段 from 表名 where 条件1 ||/or 条件2; # 查询所有/指定符合其中一个条件的列
select */字段 from 表名 where 字段 in(数值,数值); # 查询所有/指定 字段符合其中一个条件的列
select */字段 from 表名 where 字段 is not/is null; # 查询所有/指定 字段 不是null/是null的列
select */字段 from 表名 where 字段 like 条件(_单个任意字符,%多个任意字符); # 查询所有/指定相似列
-- 排序查询
select */字段 from 表名 order by 字段 ASC/DESC; # 查询所有/指定按指定的字段排序字段的列
select */字段 from 表名 order by 字段1 ASC/DESC,字段2 ASC/DESC; # 按多个指定字段排序(ASC 可省略)
select */字段 from 表名 where 条件 order by 字段 ASC/DESC;# 查询按指定条件排序的所有/指定的列
-- 分组查询 (分组之后,查询的字段为聚合函数和分组字段,查询其他字段无任何意义)
-# select 聚合函数(*/字段) from 表;
select count(*/字段) from 表; # 统计所有/指定的列总数(建议用*/主键作为统计字段)
select max/min(*/字段) from 表; # 统计所有/指定的列的最大值/最小值
select sum(*/字段) from 表; # 返回所有/指定列的总和
select avg(*/字段) from 表; # 返回所有/指定列的平均值
-# select 字段/聚合函数(*/字段) from 表 (where 条件) group by 字段 (having 分组后条件过滤)
# 执行顺序:(where > 聚合函数 > having)
select 字段,聚合函数(分组字段数据) from 表 group by 字段; # 得到指定字段进行聚合函数操作分组后的表
select 字段,聚合函数(分组字段数据) from 表 where 条件 group by 字段; # 得到指定的字段按条件进行的聚合函数操作分组后的表
select 字段,聚合函数(分组字段数据) from 表 where 条件 group by 字段 having 条件; # 得到指定的字段按指定的条件进行的聚合函数操作分组后条件过滤的表
-- 分页查询 (分页查询limit是MySQL数据库的方言,不同数据库可能分页查询不一样)
-# 索引计算公式: 起始索引 = (当前页码-1) * 每页显示的条目数(起始索引从0开始)
select 字段列表 from 表名 limit 起始索引,查询条目数
-# select 字段列表 from 表名 rownumber 起始索引,查询条目数 (Oracle 分页查询)
-# select 字段列表 from 表名 top 起始索引,查询条目数 (SQL Server 分页查询) ## 约束
-- 增
create table 表名(字段名 数据类型 约束名 (属性),...); # 创建表时添加约束(约束名后可追加数据类型属性)
alter table 表名 modify 字段名 数据类型 约束; # 建完表后添加约束
create table 表名(字段名 数据类型,(constraint 外键名称) foreign key (外键字段名) references 主表名(字段名)); # 创建外表外键字段名与主表指定主键字段名进行连接(外键名称可默认)
alter table 表名 add (constraint 外键名称) foreign key (外键字段名) references 主表名(字段名);
# 给表添加主表,外键字段名与主表指定主键字段名进行连接
-- 删
alter table 表名 modify 字段名 数据类型; # 表内删除约束(数据类型属性也将删除)
alter table 表名 drop foreign key 外键名称; # 表内删除外键约束
## 多表查询
#- 内连接查询
-- 隐式内连接
select */表名.字段 from 表1,表2... where 条件; # 查询按指定条件的多张表交集数据(可以取别名代替表名)
-- 显示内连接
select */表名.字段 from 表1 inner join 表2 on 条件; # 查询两张表按指定条件的表交集数据
#- 外连接查询
-- 左外连接
select */表名.字段 from 表1 left (outer) join 表2 on 条件; # 查询表1所有数据和两表的交集数据
-- 右外连接
select */表名.字段 from 表1 right (outer) join 表2 on 条件; # 查询表2所有数据和两表的交集数据
#- 子查询
select */字段 from 表 where 字段 运算符 (子查询); # 单行单列查询
select */字段 from 表 where 字段 in (子查询); # 多行单列查询
select */字段 from (子查询) where 条件; # 多行多列查询
## 事务(Mysql事务会自动提交,Oracle事务是手动提交)
start transaction/begin; # 开启事务
commit; # 提交事务
rollback; # 回滚事务
select @@autocommit; # 查看事务的默认提交方式(1 自动提交,0 手动提交)
set @@autocommit = 0/1; # 修改提交事务的方式
MySQL函数
聚合函数(null值不参与所有聚合函数运算)
函数名称 | 作用 |
---|---|
max | 查询指定列的最大值 |
min | 查询指定列的最小值 |
count | 统计查询结果的行数 |
sum | 返回指定列的总和 |
avg | 返回指定列的平均值 |
MySQL约束
1.约束是作用于表中列上的规则,用于限制加入表的数据
2.约束的存在保证了数据库中数据的正确性、有效性和完整性
约束名称 | 描述 | 关键字 |
---|---|---|
非空约束 | 保证列中所有数据不能有null值 | not null |
唯一约束 | 保证列中所有数据各不相同 | unique |
主键约束 | 主键是一行数据的唯一标识,要求非空且唯一 | primary key |
检查约束 | 保证列中的值满足某一条件(MySQL不支持检查约束) | check |
默认约束 | 保存数据时,未指定值采用默认值(默认值在default后输入) | default |
外键约束 | 外键来让两个表的数据之间建立链接,保证数据的一致性和完整性 | foreign key |
MySQL日志
配置文件(my.ini) [mysqld] # 输出文件 log-output=FILE # mysql运行日志,不建议开启 general-log=1 #文件地址 general_logfile="" # 慢查询日志,默认值为false slow-query-log=1 # 文件地址 slow_query_file="" # SQL语句的执行速度。 long_query_time=2 开启 general log 将所有到达MySQL Server的SQL语句记录下来。 一般不会开启开功能,因为log的量会非常庞大,一用于排障使用 相关参数:general_log、log_output、general_log_file show variables like 'general_log'; -- 查看日志是否开启 set global general_log=on; -- 开启日志功能 show variables like 'general_log_file'; -- 看看日志文件保存位置 set global general_log_file='tmp/general.lg'; -- 设置日志文件保存位置 show variables like 'log_output'; -- 看看日志输出类型 table或file set global log_output='table'; -- 设置输出类型为 table set global log_output='file'; -- 设置输出类型为filelog_output=’FILE’ 表示将日志存入文件,默认值是FILE log_output=’TABLE’表示将日志存入数据库,这样日志信息就会被写入到mysql.slow_log表中 开启数据库general_log步骤 1.show variables like '%log%';(可以看到默认general_log是OFF) 2.set global general_log = ON;(重启mysql失效,则需要修改需要在my.cnf/my.ini【mysqld】中添加:general_log = 1) general_Log文件处理步骤 SET GLOBAL general_log = 'OFF'; RENAME TABLE mysql.general_log TO mysql.general_log2; DELETE FROM mysql.general_log2; (如未删除成功则按下列代码删除) OPTIMIZE TABLE general_log2; RENAME TABLE mysql.general_log2 TO mysql.general_log; SET GLOBAL general_log = 'ON';
MySQL运算符
比较运算符
符号 | 描述 | 备注 |
---|---|---|
= | 等于 | |
<> / != | 不等于 | 推荐使用<>,因为!=在sql2000内语法错误,不兼容 |
> | 大于 | |
< | 小于 | |
>= | 大于等于 | |
<= | 小于等于 | |
<=> | 安全等于 | 与 = 相比,可以和数值可以和null作比较 |
&&/and | 逻辑与 | 建议用 and |
||/or | 逻辑或 | 建议用 or |
^/xor | 逻辑异或 | 建议用 xor |
!/not | 逻辑非 | 建议用 not |
特有运算符
符号 | 描述 | 备注 |
---|---|---|
binary | 二进制比较 | 写于 = 前,比较两数其二进制数 |
between...and... | 在两值之间 | 与 >=min && <=max 一致 |
not between...and... | 不在两值之间 | 与 min<= && >=max 一致 |
in | 在集合中 | 与 值1 || 值2||··· 一致 |
not in | 不在集合中 | 与 值1 ^ 值2 ^···) 一致 |
like | 通常结合通配符使用,筛查出匹配某种模式的 | 匹配相似数据 |
not like | 通常结合通配符使用,筛查出排除某种模式的 | 排除相似数据 |
regexp 或 rlike | 正则式匹配 | |
is null | 为空 | |
is not null | 不为空 | |
least | 最小的 | 有两个或多个参数时,返回最小值 |
greatest | 最大的 | 有两个或多个参数时,返回最大值 |
位运算符
位运算符 | 作用 |
---|---|
& | 按位与 |
| | 按位或 |
^ | 按位异或 |
~ | 按位取反 |
<< | 左移 |
>> | 右移 |
算数运算符
运算符 | 作用 |
---|---|
+ | 加法 |
- | 减法 |
* | 乘法 |
/ | 除法运算,商如果是小数,最多会保留小数点的后四位,且会四舍五入 |
div | 除法运算,整除,商如果是小数,只保留整数部分,且不会四舍五入 |
% | 求余 |
mod | 取模,余数 |
power | 幂运算、乘方运算 |
运算符优先级
优先级由低到高排列 | 运算符 |
---|---|
1 | =(赋值运算)、:= |
2 | ||、or、xor |
3 | &&、and |
4 | not |
5 | between、case、where、then、else |
6 | =(比较运算)、<=>、>=、>、<、<=、<>、!=、is、like、regexp、in |
7 | | |
8 | & |
9 | <<、>> |
10 | -(减号)、+ |
11 | *、/、div、%、mod |
12 | ^ |
13 | -(一元减号)、~(一元比特反转) |
14 | !、binary、collate |
MySQL数据类型
1、整型
MySQL数据类型 | 含义(有符号) |
---|---|
tinyint(m) | 1个字节 范围(-128~127) |
smallint(m) | 2个字节 范围(-32768~32767) |
mediumint(m) | 3个字节 范围(-8388608~8388607) |
int(m) | 4个字节 范围(-2147483648~2147483647) |
bigint(m) | 8个字节 范围(+-9.22*10的18次方) |
取值范围如果加了unsigned,则最大值翻倍,如tinyint unsigned的取值范围为(0~256)。 int(m)里的m是表示SELECT查询结果集中的显示宽度,并不影响实际的取值范围,没有影响到显示的宽度,不知道这个m有什么用。
2、浮点型(float和double)
MySQL数据类型 | 含义 |
---|---|
float(m,d) | 单精度浮点型 8位精度(4字节) m总个数,d小数位 |
double(m,d) | 双精度浮点型 16位精度(8字节) m总个数,d小数位 |
设一个字段定义为float(5,3),如果插入一个数123.45678,实际数据库里存的是123.457,但总个数还以实际为准,即6位。
3、定点数
浮点型在数据库中存放的是近似值,而定点类型在数据库中存放的是精确值。 decimal(m,d) 参数m<65 是总个数,d<30且 d<m 是小数位。
4、字符串(char,varchar,_text)
MySQL数据类型 | 含义 |
---|---|
char(n) | 固定长度,最多255个字符 |
varchar(n) | 固定长度,最多65535个字符 |
tinytext | 可变长度,最多255个字符 |
text | 可变长度,最多65535个字符 |
mediumtext | 可变长度,最多2的24次方-1个字符 |
longtext | 可变长度,最多2的32次方-1个字符 |
char和varchar: 1.char(n) 若存入字符数小于n,则以空格补于其后,查询之时再将空格去掉。所以char类型存储的字符串末尾不能有空格,varchar不限于此。 2.char(n) 固定长度,char(4)不管是存入几个字符,都将占用4个字节,varchar是存入的实际字符数+1个字节(n<=255)或2个字节(n>255),所以varchar(4),存入3个字符将占用4个字节。 3.char类型的字符串检索速度要比varchar类型的快。
varchar和text: 1.varchar可指定n,text不能指定,内部存储varchar是存入的实际字符数+1个字节(n<=255)或2个字节(n>255),text是实际字符数+2个字节。 2.text类型不能有默认值。 3.varchar可直接创建索引,text创建索引要指定前多少个字符。varchar查询速度快于text,在都创建索引的情况下,text的索引似乎不起作用。
5.二进制数据(_Blob)
1.BLOB和text存储方式不同,TEXT以文本方式存储,英文存储区分大小写,而Blob是以二进制方式存储,不分大小写。 2.BLOB存储的数据只能整体读出。 3.TEXT可以指定字符集,_BLO不用指定字符集。
6.日期时间类型
MySQL数据类型 | 含义 |
---|---|
date | 日期 '2008-12-2' |
time | 时间 '12:25:36' |
datetime | 日期时间 '2008-12-2 22:06:44' |
timestamp | 自动存储记录修改时间 |
若定义一个字段为timestamp,这个字段里的时间数据会随其他字段修改的时候自动刷新,所以这个数据类型的字段可以存放这条记录最后被修改的时间。
MySQL数据类型属性
MySQL关键字 | 含义 |
---|---|
null | 数据列可包含NULL值 |
not null | 数据列不允许包含NULL值 |
default | 默认值 |
primary key | 主键 |
auto_increment | 自动递增,适用于整数类型 |
unsigned | 无符号 |
character set name | 指定一个字符集 |
Navicat下载以及破解
「Navicat」阿里云盘分享 提取码: x63y
1.安装Navicat150版本(把网关掉)
2.打开Navicat_Keyv5.6
3.点击path找到navicat.exe安装位置后点击
4.在Navicat_Keyv5.6内点击Generate得到激活密钥
5.启动Navicat.exe注册,填入激活码(因为没网所以选择手动激活)
6.将手动激活的请求码复制到Navicat_Keyv5.6 Request Code 对应的框内
7.再点击Activation Code 下面 Generate 生成 激活码
8.复制激活码到 Navicat.exes注册手动激活页面,请求码下面的激活框内点击确认
在Idea内使用Mysql数据库
1.点击右上角 Database(如果在Maven项目内引用则Maven在下面)
2.点击弹出面板 + 号,在DataSource内选择MySQL数据库
3.填写User,Password,Database(用户名,密码,数据库名)
4.点击下方蓝色TestConnection(尝试连接,如果报绿勾连接成功)
5.之后点击Apply应用即可(像
MySQL安装与应用相关推荐
- fedora mysql 客户端_fedora mysql 安装
本例使用的是 mysql-5.0.45.tar.gz 安装编译前提: Yum install gcc Yum install gcc-c++ 1.第一个MYSQL安装 编译1.带上参数 ./confi ...
- centos mysql安装_mysql yum源安装
部署服务器环境的时候经常要安装mysql,以下是常见的安装方式 源码安装 rpm包安装 yum源安装 这篇主要介绍yum源安装. yum源下载 进入 https://dev.mysql.com/dow ...
- mysql数据库解压安装教程_MySQL数据库之windows 10下解压版MySql安装配置方法教程...
本文主要向大家介绍了MySQL数据库之windows 10下解压版MySql安装配置方法教程 ,通过具体的内容向大家展现,希望对大家学习MySQL数据库有所帮助. windows 10 下安装解压版的 ...
- Mysql 安装及实践(学习笔记二)
安装并配置MySQL数据库 3.2.1 安装MySQL数据库 1.MySQL数据库的安装环境准备 如果读者没有物理服务器环境,则可以搭建vmware等虚拟机环境学习,相应地则需准备如下内容: 1)请提 ...
- linux 下mysql的管理,Linux下 MySQL安装和基本管理
•安装linux一些必须的包: 1.yum install gcc gcc-c++ gcc-g77 autoconf automake zlib* fiex* libxml* ncurses-deve ...
- mysql安装源是什么_mysql官方源安装的一些问题
今天测试linux 各个软件源 ,发现mysql 配置官方源之后,yum install -y mysql 安装了 mysql lastst 最新版, 安装完之后,奇葩的是没有提示输入密码, 所 ...
- linux下memcached安装 和redis安装,jdk,tomcat,mysql 安装
一.memcached安装yum search memcached yum -y install memcached memmcached -h service memcached restart c ...
- Centos7 MYSQL安装与基础命令运用
Centos7 MYSQL安装与基础命令运用 1.关闭防火墙,selinux systemctl stop firewalld setenforce 0 2.实现虚拟机能够上网,所以说要两块网卡,一块 ...
- Linux下eclipse及mysql安装,c++访问mysql数据库
这两天在学习linux下用c++访问mysql,碰到一堆问题,记录一下. 1.mysql安装: 公司的电脑是64位的,安装的是64为的RHEL4,安装如下三个包: MySQL-client-5.1.4 ...
- 绿色版mysql安装步骤
绿色版mysql安装步骤 - johnnyhg - ITeye技术网站 绿色版mysql安装步骤 博客分类:Mysql MySQLSQL ServerC#CC++ 一.下载MySQL http://w ...
最新文章
- 5单个编译总会编译全部_玩转Android10(五)源码编译开发中常用命令
- python数据分析是什么意思_python数据分析有什么用
- 如何轻松拿到大厂面试offer | 掘金技术征文
- 两个很有用的进程间通信函数popen,pclose
- 【方案分享】2021年钟薛高营销策划方案.pptx(附下载链接)
- 人脸对齐(五)--ESR算法
- c语言之fopen参数(r+,w+,a+)
- Android 属性动画简单分析(二)
- Struts框架可以支持以下哪种程序开发语言?(选择1项)
- 销售记账管理系统php源码,crm客户销售管理系统销售统计ERP系统源php源码源码办公审批管理...
- C# 操作Gmap简单使用方法
- 2019年5月个人总结:大家都在跨界,原谅自己的懈怠
- Mac怎么方便看节假日安排,添加中国法定节假日安排
- 机器人系统的基本概念及外部模型参数详解
- Kali Linux学习笔记—无线渗透 WPA攻击(PSK破解、AIROLIB、JTR、cowpatty、pyrit)
- 大富翁11 V1.0.7 官方中文绿色免安装版
- php pdo 支持mysql表类型_全新的PDO数据库操作类php版(仅适用Mysql)
- 盘点安卓绿色联盟2018全年技术沙龙干货分享
- python三个点是什么意思_Python 3 中 ... 三个点的省略号的作用
- 成都Java4年经验踩坑指南