MySQL是一种关系型数据库,目前属于Oracle公司。MySQL是一种关联数据库管理系统,将数据保存在不同的表中,提高了速度和灵活性。MySQL所使用的SQL语言是用于访问数据库的最常用标准化语言。MySQL分为社区版和商业版,由于其体积小、速度快、成本低,尤其是开放源代码这一特点,一般中小型网站都选择MySQL作为网站数据库,搭配Apache/Nginx和PHP可运行的PHP网站。
MySQL5.5的32位软件:https://pan.baidu.com/s/1p6IbVtTh3nXS1Igf_S7BkQ
MySQL5.5的64位软件:https://pan.baidu.com/s/1TqGDIELF5M5ZuvbEhFL67Q
安装MySQL:
这里选择Custom:(自定义MySQL的安装路径)
注释:MySQL的安装路径中,不能含有中文;生产环境中,不要安装在C盘。
下面是选择MySQL的应用类型:
注释:第一种是开发服务器,将占用尽量少的内存;第二种是Web/应用服务器,将占用中等数量内存;最后一种是这台服务器只跑MySQL数据库,将占用全部的可用内存。
下面是选择数据库的用途:
注释:第一种是多功能用途,将把数据库优化成很好的InnoDB和高效率的MyISAM存储引擎;第二种是只用于事务处理类型,支持InnoDB、MyISAM;最后一种是非事务处理类型,只支持MyISAM;
一般选择第一种多功能用途。
选择MySQL的最大连接数:
注释:安装后,以MySQL的主配置文件为准。
选择MySQL的监听端口,默认是TCP 3306:
注释:可以在这里打开操作系统的防火墙的TCP 3306端口。
选择数据库的默认字符集:
注释:安装后,以MySQL的主配置文件为准。
设置MySQL的数据库管理员root@localhost的密码,这个超级用户非常重要,拥有对数据库完全控制的权限:
点击“Finish”按键,完成安装:
安装完成后,打开服务:
注释:MySQL服务默认会随系统的启动而自动启动。
根据上面安装时的配置,已在操作系统的防火墙打开TCP 3306端口:
使用客户端命令行程序,登录MySQL:
输入数据库管理员root@localhost的密码:
查看数据库里有哪些库:(以下4个库是默认就有的)
show databases;
MySQL的主配置文件:
MySQL的主配置文件的内容:(根据上面安装时的配置,自动生成的)
[client]
port=3306
[mysql]
default-character-set=utf8
[mysqld]
port=3306
basedir="D:/MySQL/"
datadir="C:/ProgramData/MySQL/MySQL Server 5.5/Data/"
character-set-server=utf8
default-storage-engine=INNODB
max_connections=100
query_cache_size=0
table_cache=256
tmp_table_size=103M
thread_cache_size=8
myisam_max_sort_file_size=100G
myisam_sort_buffer_size=205M
key_buffer_size=175M
read_buffer_size=64K
read_rnd_buffer_size=256K
sort_buffer_size=256K
innodb_additional_mem_pool_size=7M
innodb_flush_log_at_trx_commit=1
innodb_log_buffer_size=3498K
innodb_buffer_pool_size=339M
innodb_log_file_size=170M
innodb_thread_concurrency=8
使用CMD命令行程序:
MySQL的命令都在安装目录下的bin里面:(截图有省略)
d:
cd MySQL\bin
dir
使用CMD命令行程序登录MySQL:
D:\MySQL\bin>mysql -u"root" -p"123"
注释:使用的是库管理员root@localhost
查看所有数据库用户及其主机信息:(以下是初始状态)
select user,host from mysql.user;
查看数据库管理员root@localhost的权限:
mysql> show grants for root@localhost;
+-------------------------------------------------------------------------------
---------------------------------------------------------+
| Grants for root@localhost
|
+-------------------------------------------------------------------------------
---------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY PASSWORD '*23AE809DDACAF96AF0FD78ED04B6A265E05AA257' WITH GRANT OPTION |
| GRANT PROXY ON ''@'' TO 'root'@'localhost' WITH GRANT OPTION
|
+-------------------------------------------------------------------------------
---------------------------------------------------------+
2 rows in set (0.00 sec)
mysql>
查看MySQL的默认字符集:
show variables like '%character%';
show variables like '%collation%';
注意:
character_set_database、character_set_server
collation_database、collation_server
注释:此时数据库的默认字符集为 utf8_general_ci
直接新建一个库,不指定其字符集:
mysql> create database db1;
Query OK, 1 row affected (0.02 sec)
mysql> show create database db1;
+----------+--------------------------------------------------------------+
| Database | Create Database |
+----------+--------------------------------------------------------------+
| db1 | CREATE DATABASE `db1` /*!40100 DEFAULT CHARACTER SET utf8 */ |
+----------+--------------------------------------------------------------+
1 row in set (0.00 sec)
mysql>
注释:此时不指定其字符集的话,创建的库的字符集默认都为 utf8_general_ci
再新建一个库,指定其字符集:
mysql> create database data1 character set utf8 collate utf8_unicode_ci;
Query OK, 1 row affected (0.00 sec)
mysql> show create database data1;
+----------+--------------------------------------------------------------------
--------------------+
| Database | Create Database
|
+----------+--------------------------------------------------------------------
--------------------+
| data1 | CREATE DATABASE `data1` /*!40100 DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci */ |
+----------+--------------------------------------------------------------------
--------------------+
1 row in set (0.00 sec)
mysql>
注释:库data1的字符集为 utf8_unicode_ci
再次查看数据库里有哪些库:
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| data1 |
| db1 |
| mysql |
| performance_schema |
| test |
+--------------------+
6 rows in set (0.00 sec)
mysql>
创建一个数据库用户并授权:
授权数据库用户zhuohua@'%'(密码1234),可以从任意IP进行访问,仅仅对库db1、data1有完全控制的权限:
mysql> grant all on db1.* to zhuohua@'%' identified by '1234';
Query OK, 0 rows affected (0.02 sec)
mysql> grant all on data1.* to zhuohua@'%';
Query OK, 0 rows affected (0.00 sec)
查看数据库用户zhuohua@'%'的权限:
mysql> show grants for zhuohua@'%';
+-------------------------------------------------------------------------------
-------------------------+
| Grants for zhuohua@%
|
+-------------------------------------------------------------------------------
-------------------------+
| GRANT USAGE ON *.* TO 'zhuohua'@'%' IDENTIFIED BY PASSWORD '*A4B6157319038724E3560894F7F932C8886EBFCF' |
| GRANT ALL PRIVILEGES ON `db1`.* TO 'zhuohua'@'%'
|
| GRANT ALL PRIVILEGES ON `data1`.* TO 'zhuohua'@'%'
|
+-------------------------------------------------------------------------------
-------------------------+
3 rows in set (0.00 sec)
mysql>
再次查看所有数据库用户及其主机信息:
############
############
Windows客户端使用SQLyog,远程访问MySQL数据库:
运行 SQLyogEnt.exe ,新建一个连接:
注释:
MySQL服务器的IP地址 192.168.168.129
数据库用户名 zhuohua
密码 1234
端口 3306
SQLyog的主界面:
注释:数据库用户 zhuohua@'%' 可以登录MySQL,只对库db1、data1有完全控制的权限。
使用SQLyog查询编辑器,查看数据库版本:
代码:
SELECT VERSION();
使用SQLyog查询编辑器创建一个表:
代码:
Use data1;
create table t_1(
id int not null auto_increment,
name varchar(30) not null,
shijian1 datetime,
shijian2 datetime,
primary key (id)
);
使用SQLyog查看库data1中的表t_1的表结构:
######
使用SQLyog插入记录:(字段id为主键、标识符列,会自动增长,不用写)
Use data1;
insert into t_1 (name,shijian1,shijian2) values ('zhuohua','1987-1-9','1987-1-19');
insert into t_1 (name,shijian1,shijian2) values ('Python','1987-1-9','1987-4-18');
insert into t_1 (name,shijian1,shijian2) values ('李大杰','2018-2-8 8:3:15','2019-3-6 12:30:6');
insert into t_1 (name,shijian1,shijian2) values ('李丽','2018-4-9 18:6:23','2000-06-16 22:03:15');
######
使用SQLyog进行查询,输出表data1.t_1中的所有记录:
SELECT * FROM data1.t_1;
只显示日期部分:
USE data1;
SELECT DATE(shijian1) AS date1,shijian2 FROM t_1;
注释:DATE()函数可以从具体时间中筛选出日期部分。
只显示日期中的年:
Use data1;
SELECT name,YEAR(shijian2) AS yesar2 FROM t_1;
只显示日期中的月:
Use data1;
SELECT name,MONTH(shijian2) AS month2 FROM t_1;
只显示日期中的日:
Use data1;
SELECT name,DAY(shijian2) AS day2 FROM t_1;
查询两个日期之间的相隔天数:( 不足一天的话,返回的结果会是0 )
USE data1;
SELECT NAME,shijian1,shijian2,TIMESTAMPDIFF(DAY,shijian1,shijian2) AS 相隔天数 FROM t_1;
注释:在TIMESTAMPDIFF()函数里,如果第一个日期大于第二个日期,返回的结果会是负数。
查询两个日期之间的相隔月数:( 不足一个月的话,返回的结果会是0 )
USE data1;
SELECT NAME,shijian1,shijian2,TIMESTAMPDIFF(MONTH,shijian1,shijian2) AS 相隔月数 FROM t_1;
注释:在TIMESTAMPDIFF()函数里,如果第一个日期大于第二个日期,返回的结果会是负数。
查询两个日期之间的相隔年数:( 不足一年的话,返回的结果会是0 )
Use data1;
SELECT name,shijian1,shijian2,TIMESTAMPDIFF(YEAR,shijian1,shijian2) AS 相隔年数 FROM t_1;
注释:在TIMESTAMPDIFF()函数里,如果第一个日期大于第二个日期,返回的结果会是负数。
查询两个日期之间相差超过2年的记录:
Use data1;
SELECT name,shijian1,shijian2 FROM t_1 WHERE TIMESTAMPDIFF(YEAR,shijian1,shijian2) > 2
Use data1;
SELECT name,shijian1,shijian2 FROM t_1 WHERE TIMESTAMPDIFF(YEAR,shijian2,shijian1) > 2
注释:这种情况下,在TIMESTAMPDIFF()函数里,第一个日期要小于第二个日期。
只显示时间部分:
USE data1;
SELECT TIME(shijian1) AS time1,shijian2 FROM t_1;
注释:TIME()函数可以从具体时间中筛选出时间部分。
只显示时间中的时:
Use data1;
SELECT name,HOUR(shijian1) AS hour1 FROM t_1;
只显示时间中的分:
Use data1;
SELECT name,MINUTE(shijian1) AS minute1 FROM t_1;
只显示时间中的秒:
Use data1;
SELECT name,SECOND(shijian1) AS second1 FROM t_1;
查询两个时间之间的相隔小时数:( 不足一个小时的话,返回的结果会是0 )
USE data1;
SELECT NAME,shijian1,shijian2,TIMESTAMPDIFF(HOUR,shijian1,shijian2) AS 相隔小时数 FROM t_1;
注释:在TIMESTAMPDIFF()函数里,如果第一个时间大于第二个时间,返回的结果会是负数。
查询两个时间之间相差大于240个小时的记录:
Use data1;
SELECT name,shijian1,shijian2,TIMESTAMPDIFF(HOUR,shijian1,shijian2) AS 相隔小时数 FROM t_1 WHERE TIMESTAMPDIFF(HOUR,shijian1,shijian2) > 240;
查询两个时间之间相差大于或等于240个小时的记录:
Use data1;
SELECT name,shijian1,shijian2,TIMESTAMPDIFF(HOUR,shijian1,shijian2) AS 相隔小时数 FROM t_1 WHERE TIMESTAMPDIFF(HOUR,shijian1,shijian2) >= 240;
查询两个时间之间相差小于3个小时的记录:
Use data1;
SELECT name,shijian1,shijian2,TIMESTAMPDIFF(HOUR,shijian1,shijian2) AS 相隔小时数 FROM t_1 WHERE TIMESTAMPDIFF(HOUR,shijian1,shijian2) < 3;
查询两个时间之间相差小于或等于3个小时的记录:
Use data1;
SELECT name FROM t_1 WHERE TIMESTAMPDIFF(HOUR,shijian1,shijian2) <= 3;
查询两个时间之间的相隔分钟数:
Use data1;
SELECT name,shijian1,shijian2,TIMESTAMPDIFF(MINUTE,shijian1,shijian2) AS 相隔分钟数 FROM t_1;
注释:在TIMESTAMPDIFF()函数里,如果第一个时间大于第二个时间,返回的结果会是负数。
查询两个时间之间的相隔秒钟数:
Use data1;
SELECT name,shijian1,shijian2,TIMESTAMPDIFF(SECOND,shijian1,shijian2) AS 相隔秒钟数 FROM t_1;
注释:在TIMESTAMPDIFF()函数里,如果第一个时间大于第二个时间,返回的结果会是负数。
给用户李丽的字段shijian2加大21年:
USE data1;
UPDATE t_1 SET shijian2 = DATE_ADD(shijian2,INTERVAL 21 YEAR) WHERE NAME = '李丽';
SELECT name,shijian2 FROM t_1;
给用户李丽的字段shijian2减小1年:
Use data1;
update t_1 set shijian2 = DATE_ADD(shijian2,INTERVAL -1 YEAR) WHERE name = '李丽';
SELECT name,shijian2 FROM t_1;
给用户李丽的字段shijian2加大2个月:
Use data1;
update t_1 set shijian2 = DATE_ADD(shijian2,INTERVAL 2 MONTH) WHERE name = '李丽';
SELECT name,shijian2 FROM t_1;
给用户李丽的字段shijian2加大3天:
Use data1;
update t_1 set shijian2 = DATE_ADD(shijian2,INTERVAL 3 DAY) WHERE name = '李丽';
SELECT name,shijian2 FROM t_1;
给用户李丽的字段shijian2减小1小时:
Use data1;
update t_1 set shijian2 = DATE_ADD(shijian2,INTERVAL -1 HOUR) WHERE name = '李丽';
SELECT name,shijian2 FROM t_1;
给用户李丽的字段shijian2减小2分钟:
Use data1;
update t_1 set shijian2 = DATE_ADD(shijian2,INTERVAL -2 MINUTE) WHERE name = '李丽';
SELECT name,shijian2 FROM t_1;
给用户李丽的字段shijian2减小3秒钟:
Use data1;
update t_1 set shijian2 =DATE_ADD(shijian2,INTERVAL -3 SECOND) WHERE name = '李丽';
SELECT name,shijian2 FROM t_1;
根据日期部分作为关键字进行查询:
Use data1;
SELECT * FROM t_1 WHERE DATE(shijian1) = '1987-01-09';
注释:DATE()函数可以从具体时间中筛选出日期部分。
Use data1;
SELECT name AS 姓名, DATE(shijian1) AS date1 FROM t_1 WHERE DATE(shijian1) LIKE '1987-01-%';
Use data1;
SELECT name AS 姓名, DATE(shijian2) AS date2 FROM t_1 WHERE YEAR(shijian2) IN ('1987','2019');
Use data1;
SELECT name AS 姓名, DATE(shijian2) AS date2 FROM t_1 WHERE YEAR(shijian2) BETWEEN '1987' AND '2019';
根据时间部分作为关键字进行查询:
Use data1;
SELECT * FROM t_1 WHERE TIME(shijian1) = '08:03:15';
注释:TIME()函数可以从具体时间中筛选出时间部分。
Use data1;
SELECT name AS 姓名,TIME(shijian1) AS time1 FROM t_1 WHERE TIME(shijian1) = '8:03:15';
Use data1;
SELECT name AS 姓名,TIME(shijian1) AS time1 FROM t_1 WHERE TIME(shijian1) = '08:03:15';
注释:TIME()函数作为关键字时,它的值要写完整。
#######
卸载MySQL:
卸载后,MySQL的原安装目录:
相关文章:
MySQL5.5主从同步
Windows2008R2_IIS+Discuz!7.2
Windows2008R2_Tomcat+JDK+虚拟主机+MySQL
MySQL的SQL语句
MySQL的字符集
Windows2012R2_安装MySQL5.5
MSSQL的SQL语句(日期时间)
Zabbix使用Agent监控Windows的TCP端口和服务状态
Zabbix使用Agent监控Windows进程+问题
Zabbix使用模板监控Windows下的MySQL |