1、下载安装
这个地址提供所有的MySQL Community Server版本下载(包括历史版本)。
2、添加环境配置
桌面【我的电脑】----右键【属性】----高级系统设置----环境变量----系统变量:双击Path----新建,将MySQL安装目录下bin文件夹路径复制进去----确定 3次。
3、在MySQL安装根目录下新建my.ini文件,并编辑,内容如下:注意格式为ANSI
,否则会在下一步中报错
mysqld: [ERROR] Found option without preceding group in config file D:\MySQL\my.ini at line 1!
mysqld: [ERROR] Fatal error in defaults handling. Program aborted!
my.ini
文件内容
[Client]
port=3306
default-character-set=utf8
[mysql]
default-character-set=utf8
[mysqld]
port=3306
basedir=D:\MySQL
datadir=D:\MySQL\data
max_connections=200
character-set-server=utf8
default-storage-engine=INNODB
4、管理员方式打开cmd,切换到MySQL安装目录bin下,初始化MySQL:
D:\MySQL\bin>mysqld --initialize --user=mysql --console
2018-11-01T01:29:23.532353Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
2018-11-01T01:29:26.971841Z 0 [Warning] InnoDB: New log files created, LSN=45790
2018-11-01T01:29:27.523754Z 0 [Warning] InnoDB: Creating foreign key constraint system tables.
2018-11-01T01:29:27.773737Z 0 [Warning] No existing UUID has been found, so we assume that this is the first time that this server has been started. Generating a new UUID: 92c04cf6-dd75-11e8-8742-44334c06f63c.
2018-11-01T01:29:27.867507Z 0 [Warning] Gtid table is not ready to be used. Table 'mysql.gtid_executed' cannot be opened.
2018-11-01T01:29:27.975723Z 1 [Note] A temporary password is generated for root@localhost: iO%F;L>rN7iV
初始化成功后,会自动在MySQL目录下创建data
目录,并生成初始密码。将密码保存。
5、安装MySQL:
D:\MySQL\bin>mysqld --install mysql
如果之前安装过MySQL,而未清理干净,可能出现如下错误提示:
D:\MySQL\bin>mysqld --install mysql
The service already exists!
The current server installed: D:\mysql5718\bin\mysqld MySQL
解决方案:以管理员身份运行cmd
①查询是否有名为mysql的服务:
C:\WINDOWS\system32>sc query mysql
SERVICE_NAME: mysql
TYPE : 10 WIN32_OWN_PROCESS
STATE : 1 STOPPED
WIN32_EXIT_CODE : 0 (0x0)
SERVICE_EXIT_CODE : 0 (0x0)
CHECKPOINT : 0x0
WAIT_HINT : 0x7d0
②如有,删除mysql
C:\WINDOWS\system32>sc delete mysql
[SC] DeleteService 成功
接着就能安装成功了。
6、启动MySQL服务:
D:\MySQL\bin>net start mysql
mysql 服务正在启动 .
mysql 服务已经启动成功。
关闭/停止:net stop mysql
控制台:mysqld --console
7、登录MySQL:输入刚才的初始密码
D:\MySQL\bin>mysql -u root -p
Enter password: ************
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 3
Server version: 5.7.18
Copyright (c) 2000, 2017, 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.
也可以一条语句完成,但会暴露密码,不推荐:
D:\MySQL\bin>mysql -uroot -p(p字母后接着输入密码,不用空格)
8、修改密码:
mysql> set password=password('新密码');
Query OK, 0 rows affected, 1 warning (0.00 sec)
也可以用这条语句,略显复杂:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '密码';
9、cmd中退出mysql:
mysql> quit
Bye
与常规脚本语言类似,MySQL也具有一套对 字符、单词、特殊符号的使用规定,MySQL通过执行SQL脚本来完成对数据库的操作,该脚本由一条或多条MySQL语句(SQL语句+扩展语句)组成,保存时脚本文件后缀为.sql
。当然,在控制台下,MySQL客户端也可对语句进行单句执行,而不用保存为.sql
文件。
标识符用来命名一些对象, 如数据库、表、列、变量等, 以便在脚本中的其他地方引用。MySQL标识符命名规则稍微有点繁琐, 这里我们使用万能命名规则: 标识符由字母、数字或下划线(_)组成, 且第一个字符必须是字母或下划线。
对于标识符是否区分大小写取决于当前的操作系统, Windows下是不敏感的, 但对于大多数 linux\unix 系统来说, 这些标识符大小写是敏感的。
MySQL的关键字众多, 这里不一一列出, 在学习中学习。 这些关键字有自己特定的含义, 尽量避免作为标识符。
MySQL语句是组成MySQL脚本的基本单位, 每条语句能完成特定的操作, 它是由 SQL 标准语句 + MySQL 扩展语句组成。
MySQL函数用来实现数据库操作的一些高级功能, 这些函数大致分为以下几类: 字符串函数、数学函数、日期时间函数、搜索函数、加密函数、信息函数。
MySQL有三大类数据类型, 分别为数字、日期\时间、字符串, 这三大类中又更细致的划分了许多子类型:
tinyint、smallint、mediumint、int、bigint
float、double、real、decimal
date、time、datetime、timestamp、year
char、varchar
tinytext、text、mediumtext、longtext
tinyblob、blob、mediumblob、longblob
文本均以管理员运行cmd下操作。
1、启动MySQL服务
C:\WINDOWS\system32>net start mysql
mysql 服务正在启动 .
mysql 服务已经启动成功。
【任务管理----服务,可查看mysql是否启动。】
关闭:
net stop mysql
2、登录MySQL,进入mysql>
模式:如果连接远程主机加上-h
指令
mysql -u root [-h IP] -p
或
mysql -u root -p#安全模式,输入密码显示为*号。
或
mysql -uroot -p(p字母接着密码,不用空格)
退出mysql>
模式:quit
mysql>quit
3、创建数据库
mysql>create database <数据库名称> character set utf8;
会配置MySQL时的(如)D:\MySQL\data文件夹下创建数据库文件夹。
如需在指定文件夹下创建数据库,则需要修改.ini
文件中的datadir
值。
删除数据库:
drop database <数据库名>;
删除一个已确定存在的数据库:
mysql>drop database <数据库名>;
删除一个不确定存在的数据库:
mysql>drop database if exists <数据库名>;
3、选择/切换要操作的数据库,两种方式:
①在登录MySQL时指定,命令:
mysql -D <数据库名> -u root -p
②登录后使用use
语句指定,命令:
mysql> use <数据库名>;
4、创建数据库表,用create table
语句:
create table 表名称(列声明);
以创建students
表为例,该表存放 学号id、姓名name、性别sex、年龄age、联系电话tel
:
create table students(
id int unsigned not null auto_increment primary key,
name char(8) not null,
sex char(4) not null,
age tinyint unsigned not null,
tel char(13) null default "-"
);
上述MySQL脚本语句可直接在任何文本编辑器(如txt、SublimeText、NotePad++)下输入后将其保存为createtable.sql
文件。
再通过cmd下的文件重定向执行该脚本:
mysql -D <数据库名> -u root -p < createtable.sql
创建成功的话会在同文件夹下新增students.idb
文件。createtable.sql.sql
文件若不在当前工作目录下,需指定该文件的完整路径。
在mysql>
模式下:
查看已创建了的表名称
show tables;
查看已创建表的结构
describe <表名>;
列出所有数据库
show databases;
5、操作MySQL数据库
向表中插入数据,语法:
insert [into] 表名 [(列名1,列名2,列名3,...)] values (值1,值2,值3,...);
例:
insert into students values(NULL, "王刚","男", 20,"13812341234");
有时插入部分数据 或不按列的顺序插入,可使用如下形式:
insert into students (name, sex, age) values("佳儿","男",21);
查询表中的数据,语法:
select 列名称 from 表名称 [查询条件];
例:查询students表 中所有学生的名字和年龄
select name,age from students;
使用通配符 *
查询表中所有的内容,语句:
select * from students;
按特定条件查询:where
关键词用于指定查询条件,语法:
select 列名称 from 表名称 where 条件;
例:查询所有性别为男的信息,语句:
select * from students where sex="男";
where
子句不仅支持“where 列名称=值
”查询形式,还支持比较运算符,如=、>、<、>=、<=、!=
,以及扩展运算符如 is [not] null、in、like
等,还可使用or
和and
进行组合查询。
更新表中的数据,语法:
update 表名称 set 列名称=新值 where 更新条件;
例 id为4的手机号改为15200901235:
update students set tel="15200901235" where id=4;
例 将所有人年龄减1:
update students set age= age-1;
将手机号为13812341234的姓名改为“李新宇”、年龄为17:
update students set name="李新宇",age=17 where tel="13812341234";
删除表中的数据,语法:
delete from 表名称 where 删除条件;
例 删除id为2的行:
delete from students where id=2;
删除表中所有数据:
delete from students;
创建后 表的修改:alter table
语句用于创建后对表的修改。
添加列
alter table 表名 add 列名 列数据类型 [after 插入位置];
例:在表的最后追加列 address:
alter table students add address char(60);
修改列
alter table 表名 change 列名称 列新名称 新数据类型;
例:将students表中列tel改为telphone:
alter table students change tel telphone char(13);
删除列
alter table 表名 drop 列名称;
重命名表
alter table 表名 rename 新表名;
删除整张表
drop table 表名;
添加、删除用户,授权(如果在使用,MySQL8.0加密方式修改了)
添加用户:
create user "test"@"localhost" identified by "123456";
添加了一个名为 test、密码为123456的用户,其中localhost代表只允许本地IP访问(即只能在本地登录MySQL),将localhost 改为 % 将可在任何一台电脑上登录,也可指定某个外网IP(将localhost改为某指定IP)可远程登录。
授权:
grant all privileges on *.* to "test"@"localhost" with grant option;
其中all privileges
代表全部权限,可改为部分权限如 select,insert,update
;第一个*
表示允许该用户访问所有数据库文件,可改成某个数据库如 testdb。
刷新权限:
flush privileges
可退出当前某用户登录,用刚添加的用户名和密码登录了,之后就可以在授权范围内操作数据库了,如show databases;
。
查看用户权限:
show grants for "root"@"localhost";
修改指定用户密码:
alter user "test"@"localhost" identified by "test123";
删除用户:
drop user "test"@"localhost";