一:数据库的相关概念
1.本质就是个c/s构架的套接字程序
2.数据库软件类型:
(1)关系型:MySQL,Oracle
数据组织比较清晰,方便管理;存数据前先把表或者数据建好,用户和权限之间是有关系和约束的
(2)非关系型:Redis,memcache,mongodb
以k对应一个value,表和表不需要对应关系
3.sql语句:是为使用者规定好的一些命令格式和规范
4.数据库核心概念总结:
(1)数据:事物的状态
(2)记录:文件中的一条信息
(3)表:一个文件
(4)库:文件夹
(5)数据库管理软件:套接字程序 服务端:mysqld 客户端mysql 默认端口是3306
(6)数据库服务器:运行mysqld 服务端的计算机
二:mysql的安装
1.windos安装
#1、下载:MySQL Community Server 5.7.16
http://dev.mysql.com/downloads/mysql/
#2、解压
如果想要让MySQL安装在指定目录,那么就将解压后的文件夹移动到指定目录,如:C:\mysql-5.7.16-winx64
#3、添加环境变量
【右键计算机】--》【属性】--》【高级系统设置】--》【高级】--》【环境变量】--》【在第二个内容框中找到 变量名为Path 的一行,双击】 --> 【将MySQL的bin目录路径追加到变值值中,用 ; 分割】
#4、初始化(服务端)
mysqld --initialize-insecure
#5、启动MySQL服务
mysqld # 启动MySQL服务
#6、启动MySQL客户端并连接MySQL服务
mysql -u root -p # 连接MySQL服务器
安装
cmd-mysqld 启动客户端 cmd-mysql -u root -p 启动客户端 默认没有密码
或者
mysql -h 127.0.0.1 -P 3306 -uroot -p
(2)注意事项:
以管理员的身份运行cmd
# 制作MySQL的Windows服务,在终端执行此命令:
"c:\mysql-5.7.16-winx64\bin\mysqld" --install
# 移除MySQL的Windows服务,在终端执行此命令:
"c:\mysql-5.7.16-winx64\bin\mysqld" --remove注册成服务之后,以后再启动和关闭MySQL服务时,仅需执行如下命令:
# 启动MySQL服务
net start mysql
# 关闭MySQL服务
net stop mysql
MySQL 服务无法启动时候:
(1)服务中终止后再打开即可
(2)输入netstat -aon|findstr “3306” 去查找占用了3306端口的进程id
然后打开任务管理器 到详细找到刚才看到的进程id 结束掉然后运行 net start mysql 就可以运行了
2.一些命令
(1)查看当前用户 select user();
(2)退出 exit
(3)取消上个sql语句 exit\c
2.改密码
(1)改密码的命令
mysqladmin -uroot password “123” 不登录前输入 (没有密码)
mysqladmin -uroot -p"123" password "456" (已有密码时候的修改)
改密码的命令必须在客户端退出后进行输入命令进行修改
(2)忘记密码时候
跳过授权表的方法进行登录,不需要输入密码
退出服务端net stop mysql🠒>非管理员身份登录cmd,输入mysqld --skip-grant-tables --user=mysql 🠒> 重新打开一个cmd,登录 mysql -uroot -p 🠒>
旧版本:
mysql> update user set password=password("新密码") WHERE user='你的用户名';
mysql>flush privileges;
mysql> quit;
新版本:mysql采用authentication_string替代了password字段
(真正存储用户表的密码字段存储的肯定是密文,只有用户自己知道是什么,这样更安全)
update mysql.user set authentication_string=password('root') where user='root' ;
flush privileges;
quit;
服务端:
1.用mysqld 打开的 只能用alt+Ctrl+delete 进程中结束
2.用net start mysql 打开的 就要 net stop mysql 结束
三:linux中跳过配置文件,免密登录
#1. 修改配置文件,添加 skip-grant-table;并修改字符编码
vim /data/3306/my.cnf
[mysqld]
skip-grant-table
default-character-set=utf8
[client] #表示的是其他的客户端 如py
default-character-set=utf8
[mysql]
default-character-set=utf8
#mysql5.5以上:修改方式有所改动
[mysqld]
character-set-server=utf8mb4
collation-server=utf8_general_ci
[client]
default-character-set=utf8mb4
[mysql]
default-character-set=utf8mb4
2.修改密码
update mysql.user set password=password("123") where user="root" and host="localhost";
flush privileges;
3. 重启服务
show variables like '%char%'; 显示编码所有的
systemctl restart mariadb
windows服务端登录时候遇到的问题:
C:\WINDOWS\system32>net start mysql
MySQL 服务正在启动 .
MySQL 服务无法启动。
服务没有报告任何错误。
请键入 NET HELPMSG 3534 以获得更多的帮助。
解决办法:
mysqld --initialize-insecure
四:一些基本命令
1 查看所有的库名:show databases; 位置在D:\Mysql\mysql-5.7.18-winx64\data 其中performance_schema在内存中
2.当你输入的命令不对,又不想让服务端执行并返回报错信息 可以在后面加上\c 取消
3.退出客户端的方法:直接退出/exit/quit (exit/quit后面加不加分号都可以的)
4.D:\Mysql\mysql-5.7.18-winx64\bin>mysql 可以以游客方式进入服务端,他和管理员身份进入服务端的区别在于show databases;时显示的库是不同的
五:环境变量配置
1.每次启动mysqld必须需要切换到D:\Mysql\mysql-5.7.18-winx64\bin才可以打开服务端比较麻烦,所以添加了环境变量
tasklist | findstr mysqld 如何查看当前的具体进程
taskkill /F /PID PID号 如何杀死具体的进程
net stop mysql
2.开多个cmd窗口还是很麻烦,将mysql服务端制成系统服务(开机自启动)
services.msc在cmd中打开服务,将mysql制作成系统服务,自动就是计算机打开就启动了
mysqld --install 安装后服务中就有了 ,以后右键就启动了
mysqld --remove 移除
六:sql语句
1.针对库的增删改查(文件夹)
增:create database db1; create database db1 charset='gbk'; (可以指定字符编码,目前都已经是utf-8)
查:show databases; 查所有的
show create database db1; 查单个的 此条命令是查db1
select database();查看当前所在的库
改:alter database db1 charset="utf8"; 把db1的字符编码改成了utf-8
删:drop database db1; 删除db1
2.针对表的增删改查(文件)
use db1; 切换到db1的库
增:create table t1(id int,name char(4)); id字段 int类型,name字段是4个字段
create table db2.t1(id int); 也可以用绝对路径的形式来操作不同的库
查:show tables; 查所有
show create table t1;查单个
describe t1; 支持简写 desc t1; 更详细
改:alter table t1 modify name char(16);
删:drop table t1;
3.针对数据的增删改查(数据)
一定要先有库再有表 再有数据
增:insert t1 values(1,'json'),(2,‘egon’),(3,'tom') ;
改:update t1 set name='DSB' where id>1; 把数据的name变成DSB,在所有的ID>1的数据
查:select *from t1; t1中的所有内容查出来,当数据量特别大的时候,不建议使用,因为查找不便和占用内存
select name from t1; 按照名字查找
删:delete from t1 where id>1;
delete from t1 where name='zz';
delete from t1;将t1所有的数据清空(不用)
truncate t1;