一:数据库的相关概念

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;