MySQL基础
MySQL
1、数据库介绍
-
我们本地存放的数据在文件中,和软件开发目录规范中,都是从本地读取数据
-
将所有的数据存放在一个第三方的公共位置,同一个如软件凡是需要操作数据,就必须去这个共享的位置操作——这个第三方的公共存放数据的位置就是数据库
-
数据库集群:将同一个数据库中的数据复制到不同的服务中备份
-
MySQL数据库:C/S架构软件
- MySQL数据库本质上就是一个基于网络通信的软件
- 所有基于网路通信的软件,底层都是socket
- 服务端:
- 基于网络通信
- 收发消息
- 客户端
- 基于网络通信
- 收发消息
- 所有的语言若想操作数据库,拿到服务端IP和port,都必须遵循一套标准的解析指令——SQL语句
-
DBMS:数据库管理系统
- 关系型数据库:MySQL,Oracle,DB2,SQL,servser......
- 表结构——字段和字段类型
- 非关系数据库:Redis,MongoDB......
- 非关系数据库一般以key:value的形式存储
- 关系型数据库:MySQL,Oracle,DB2,SQL,servser......
2、安装数据库
-
下载MySQL安装包
-
解压安装包
-
添加bin目录到系统环境变量中
-
以管理员身份打开cmd,输入mysqld 此时会卡住在一个位置(这是服务端)
-
再新建一个cmd,输入mysql 进入游客模式测试是否正常进入(这是客户端)
- 退出数据库客户端,直接输入quit或exit
-
在客户端中
- 直接输mysql是进入游客模块,全写: mysql -h (ip地址) -P 3306 -p 密码
- 输入: mysql -uroot -p 密码或者mysql -h 127.0.0.1 -P 3306 -uroot -p密码 进入管理员登录
- 接到远程主机上的MYSQL
假设远程主机的IP为:218.105.110.116,用户名为root,密码为abcd123456。
则键入以下命令:mysql -h218.105.110.116 -uroot -p abcd123456;(注:u与root之间可以不用加空格,其它也一样)。
-
查看操作系统中是否已经启动mysql服务端
- 查看:在cmd中直接输入tasklist |findstr "mysql"
- 杀死mysqld进程:在紧接着后面cmd直接输入taskkill /F /PID pid号(此处pid号为上一步查看的pid号)
-
每次都需要打开服务端再去开客户端太过麻烦,我们需要将服务端制作系统服务
- 必须将已启动的mysqld服务端cmd关闭
- 杀死已经启动过的mysqld进程(pid)(也可以直接输入net stop mysql 关闭服务端)
- 管理员权限下在cmd中输入mysql --install ——>安装mysqld系统服务
- 管理员权限下在cmd中输入net start mysql 打开服务端
-
修改密码
- 客户端默认没有密码的情况下,设置密码
- cmd>>>: mysqladmin -uroot password 新密码
- 有密码的情况下修改密码
- cmd>>>: mysqladmin -uroot -p原密码 password修改的密码
- 客户端默认没有密码的情况下,设置密码
-
破解密码
- 关闭服务端(管理员权限打开cmd,输入net stop mysql)
- 管理员权限下,cmd输入,mysqld --skip-grant-tables
- 重新打开一个cmd进入客户端模式:
- 进入游客模式,直接输入mysql
- 再输入update mysql.user set password=password('修改的新密码') where user="root";(记得加分号)
- 重新启动服务端
- 管理员权限打开cmd
- 先kill掉服务端的进程(输入net stop mysql)
- 再打开服务端(输入net start mysql)
-
设置配置文件(客户端输入\s查看配置)
-
找到mysql目录,D:\mysql-5.6.40-winx64
-
创建一个名为 “my.ini” 的文件,这个是mysql的配置文件
-
在文件中粘贴以下内容
[mysqld] character-set-server=utf8 collation-server=utf8_general_ci # 这个是用python软件连接的客户端 [client] default-character-set=utf8 # mysql软件的客户端 [mysql] # 可写,可不写这样可以不需要用户名与密码直接登录mysql # user='root' # password=123 # 设置默认的字符编码 default-character-set=utf8
-
重新启动mysql服务
-
3、数据库基本操作(数据库命令后都要加分号)
-
库的操作——类似于文件夹
- 增:
- 语法:create database 库名;
- 例:create database db1;
- 查:
- 语法:show databases; # 查看所有的库
- 语法:show create database 库名; # 查看库名中的信息
- 例:show create database db1;
- 改:
- 语法:alter database 库名 charset=“字符编码类型”;
- 例:alter database db1 charset=“utf8”;(注意数据库中utf8不能加-)
- 删:
- 语法:drop database 库名;
- 例:drop database db1;
- 增:
-
表的操作——>类似于文件
操作表前需要切换到指定的库
语法:use 库名;
例:use db1;
select database(); # 查看当前所在的库
-
增:
varchar与char 都是字符串类型,varchar(指定长度)
- 语法:create table 表名(字段名 字段类型);
- 例:create table text1(name varchar(20), age int(11));
-
查:
- 查看当前库中所有的表:show tables;
- 查看表结构:desc text1;
-
改:
- 语法:alter table 表名 modify 字段名 字段类型;
- 例:alter table text1 modify name varchar(28);
-
删:
- 语法:drop table 表名;
- drop table text1;
-
-
记录的操作——类似于文件中的一行行数据
-
增:
- 语法:insert into 表名 values('字段类型的数据1',字段类型的数据2);
- 语法:insert into 表名(字段名) values(字段名对应的值);
- 例:insert into text1 values('shen', 18); #插入一条
- 例:insert into text1(name,age) values('shen', 18);
- 例:insert into text1 values('shen', 18),('vikey', 20); # 插入两条
-
查:
*:指的是所有
- 语法:select * from 表名; # 查看表中所有的数据
- 例:select * from text1;
- 语法:select * from 表名 where 条件; # 查看表中所有的条件成立时的条件数据
- 例:select * from text1 where name=’shen‘
- 语法:select 字段A from 表名 where 条件; # 查看条件成立时字段A的数据
- 例:select age form text1 where name=’shen‘;
- 语法:select 字段A from 表名; # 查看所有的字段A
- 例:select name from text1;
-
改:
- 语法:update 表名 set 字段名=字段值 where 条件; # 若条件成立,则修改成功
- 例:update text1 set name='tate' where age=18;
-
删:
- 语法:delete from 表名;# 清空表记录,不提交,可恢复,可以用where条件删除
- 例:delete from text1;
- 例:delete from text1 where id=1;
- 语法:truncate table 表名; # 删除不可恢复,不可用where条件删除
- 例:truncate table text1;
-