数据库

Posted acnjanna2019

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据库相关的知识,希望对你有一定的参考价值。

·一、什么是数据库?(DataBase,简称DB)

数据库即存放数据的仓库,只不过这个仓库是在计算机存储设备上,而且数据是按一定的格式存放的。

数据库是长期存放在计算机内、有组织、可共享的数据即可。

数据库中的数据按一定的数据模型组织、描述和储存、具有较小的冗余度、较高的数据独立性和易扩展性,并可为各种用户共享

 

二、什么是数据管理系统?

mysql 主要用于大型门户,它主要的优势就是开放源代码,因为开放源代码这个数据库是免费的,oracle主要用于银行、铁路、飞机场大型公司。该数据库功能强大,软件费用高。

 

数据库服务器:运行数据库存管理软件

数据库管理软件:管理——数据库

数据库:即文件夹,用来组织文件/表

表:即文件,用来存放多行内容/多条记录

 

数据库存管理软件分类

数据库的本质就是一款基于网络通信的应用程序,它仅仅就是一个基于网络通信的应用程序

关系型数据库: mysql、oracle、db2、access、sql server

  

非关系型数据库:redis、mongodb、memcache

 

关系型:数据之间彼此有关系或者约束、存储数据的表现形式通常是以表格存储、每次个字段还会有 存储类型的限制,比如姓名只能存字符串,需要有表结构

非关系型:存储数据通常都是以k,v键值的形式,没有表结构

 

 

三、mysql

Mysql是一个关系型数据库管理系统,任何基于网格通信的应用程序底层用的都是socket

mysql不单支持mysql自己的客户端app还支持其他编程语言来充当客户端操作

 

服务端

  基于socket通信

  收发消息

  sql语句

客户端 

  基于socket通信

  收发消息

  sql语句

 

库   》》》》 文件夹
表   》》》》 文件
记录  》》》 文件内一行行的数据

     name    password    hobby
     lili         123            学习
     summer   123          弹琴

表头    表格的第一行字段 
字段    name、password、hobby

  

MySQL的安装

参考网站:https://www.mysql.com/

服务端与客户端

服务端
mysql.exe

客户端
mysql.exe

在前期配置mysql的时候,cmd终端尽量以管理员的身份运行

windows+r输入cmd进入的是普通用户终端有一些命令是无法执行的搜索cmd右键以管理员身份运行

 

启动

先切换到mysqld所在的bin目录下,然后输入mysqld即可

保留原来的cmd窗口重新打开一个

常见软件的默认端口号


    mysql    3306
    redis    6379
    mongodb    27017
    django    8000
    flask    5000

Mysql 第一次以管理员身份进入是没有密码的,直接回车即可
客户端连接服务端完整命令
    mysql -h 127.0.0.1 -p 3306 -uroot -p

sql语句初识

 1、mysql中的sql语句是以分号作为结束的标志

 2、基本命令
        show databases;查看所有的库名
 3、连接服务端的命令可以简写
        mysql -uroot -p
 4、当输入的命令不对又不想让服务端执行并返回报错信息,可以用c取消
        错误命令 c
    
 5、客户端退出,退出命令加不加分号都可以执行
        quit
        exit
 6、当你在连接服务端的时候发现只输入mysql也能连接
        但是你不是以管理员身份运行的,只是一个游客模式 

 

环境变量配置及系统服务制作

1、如何查看当前具体进程

  tasklist

  tasklist |findstr mysqld

 2、如何杀死具体进程(只有在管理员cmd窗口下才能成功)

  taskkill /F /PID PID号

 

环境变量配置

每次启动mysqld需要先切到对应的文件路径下才能操作太多繁琐

将mysql所在的文件路径添加到系统环境变量中

将mysql服务端制作成系统服务(开机自启动)

查看当前计算机的运行进程数
    services.msc

将mysql制作成系统服务
    mysql -- install

移除mysql系统服务
    mysql --remove

设置密码

mysqladmin -uroot -p 原密码 password 新密码

改命令直接在终端输入即可,无需进入客户端

mysqladmin -uroot -p123 password 123456

破解密码

忘记密码了怎么办?

可以将mysql获取用户名和密码校验的功能看成是一个装饰器
装饰在了客户端请求访问的功能上

我们如果将该装饰器移除,那么Mysql服务端就不会校验用户名和密码了

1、先关闭当前mysql服务端
命令行的方式启动(让Mysql跳过用户名密码验证功能)
mysql --skip-grant-tables

2、直接以无密码的方式连接
mysql -uroot -p 直接回车

3、修改当前用户的密码
update mysql.user set password=password(123456) where 
user=‘root‘ and host=‘localhost‘;

真正存储用户表的密码字段,存储的肯定是密文
只有用户自己知道明文是件么其他人不知道,这样更加的安全
密码对比也只能对比密文

4、立刻将修改数据到硬盘
flush privileges;
5、关闭当前服务端,然后以正常校验授予权表的形式启动

统一编码

my_default.ini
ini结尾的一般都是配置文件

程序启动会先加载配置文件中的配置之后才真正的启动

[mysql] 一旦服务端启动立刻启动加载下面的配置
sql_mode=NO_ENGINE_SUBSTITUION,STRICT_TRANS_TABLES
[mysql]  一旦客户端启动立刻加载下面的配置
...
[client] 其他客户端
...
需要你自己新建一个my.ini的配置文件

验证配置是否真的是自动加载
[mysql]
print(‘hello world‘)

修改配置文件后一定要重启服务才能生效
统一编码的配置,无需掌握真接拷贝即可

偷懒 将管理员的用户名和密码也添加到配置文件中
[mysql]
character-set-server=utf8
collation-server=utf8_general_ci
[client]
default_character_set=utf8
[mysql]
user=‘root‘
password=123456
default-character-set=utf8

基本sql语句

  

针对库的增删改查(文件夹)  

#增

create database db1;
create database db2 charset=‘gbk‘;

#查
show databases; #查所有
show create database db1; 查单个

#改
alter database db2 charset=‘utf8‘;

#删
drop database db2;

针对表的增删改查(文件)

 

在操作表(文件)的时候,需要指定所在的库(文件夹)

查看当前所在的库名字
select database();

切换库
use db1;

#增
create table t1(id int,name char);

#查
show tables;
show create table t1;
desc t;   (describe t1;的缩写)

#改
alter table t1 modify name char(16);

#删
drop table t1;


create table db2.t1(id int);也可以用绝对路径的形式操作不同的库

 

针对数据的增删改查(一行行数据)

要有库 有表才能操作记录

#增
insert into t1 values(1,‘jason‘);
insert into t1 values(1,‘jason‘),(2,‘egon‘),(3,‘tank‘);

#查
select * from t1; 该命令数据量特别大的时候不建议用
select name from t1;

#改
update t1 set name =‘lili‘ where id > 1;

#删
delete from t1 where id > 1;
delete from t1 where name-‘json‘;
 #将表所有的数据清空
delete from t1;

  

  

 

 

以上是关于数据库的主要内容,如果未能解决你的问题,请参考以下文章

部分代码片段

将代码片段插入数据库并在 textarea 中以相同方式显示

python 用于数据探索的Python代码片段(例如,在数据科学项目中)

如何在片段中使用 GetJsonFromUrlTask​​.java

Android 使用两个不同的代码片段获取当前位置 NULL

解决方案电影标题中缺少代码的片段,完成挑战更多[关闭]