目录python
1.什么是数据库:用来存储数据的仓库,管理数据文件的系统 - 安装某种管理数据的系统 - 管理的对象本质是文件 2.存储数据的位置:在硬盘及内存中存储数据 3.什么是系统:运行在硬件基础上,管理其余软件 4.数据库的组成 库:存放多张表 - 文件夹 表:包含多条相同结构的记录(表结构文件,表数据文件(索引文件)) - 文件 记录:(数据的本体)包含多个key-value键值对的一条数据 - 二进制数据 字段:(数据的描述)描述信息 - 信息自己 == key-value - 二进制数据 例如: stu id name age gender 1 Bob 18 男 2 Tom 17 女 ... teacher ... 5. 数据库与文件存储数据区别 数据库本质也是经过文件来存储数据, 数据库的概念就是系统的管理存储数据的文件
数据库服务器端: 存放数据库的主机集群 数据库客户端: 能够链接数据库的任意客户端 数据库管理员: DBA # socket套接字的C/S架构应用
# 重要性: *** 库: 多表构建一个数据库, 本质就是文件夹 表: 多条相同结构的记录(数据), 本质就是文件 记录: 包含多个key-value键值对的一条数据, 本质就是文件中一条条数据记录,而且为二进制数据 字段:描述信息 - 信息自己 == key-value - 二进制数据 (字段)id, name, age, gender...一个老师的数据 => 一条数据记录 例如: stu id name age gender 1 Bob 18 男 2 Tom 17 女 ... teacher ...
分类:效率问题(内存>硬盘,非关系>关系,key-value>sql) # 重要性: *** 1)关系型数据库:数据库中表与表之间又联系 - mysql 1.有表的概念 2.以表中一条条记录存储数据 mysql oracle sqlServer access db2 2)非关系型数据库:没有表的概念-redis,mongodb(介于关系与非关系之间) 1.没有表的概念 2.经过key-value键值对方式存储数据 mongodb redis memcache 3)内存与硬盘(内存>硬盘) 硬盘:数据能够永久存储 - mysql、mongodb 内存:数据的存取效率极高 - redis、memcache 4)sql与nosql sql:数据库操做经过sql语句 nosql:数据库操做就是key-value形式(value就是一条记录) stu - {'name': 'Bob', 'age': 18} stus - [{'name': 'Bob', 'age': 18}, {'name': 'Tom', 'age': 18}] name - 'Jerry'
一、解压免安装版本(5.6 - 没有初始密码) 二、配置环境变量:数据库绝对路径下的bin 三、配置服务: 启动管理员终端:mysqld --install [nmysql] # 安装server端与client端 # 如何启动server? 若是经过client链接server 管理员的身份运行cmd或者powershell
前提)启动终端,输入 mysql,若是不是提示 不是内部或外部命令,表明已安装数据库 1)直接连入 i 搜索:服务,检索mysql服务,有 中止服务,并移除服务 - 启动管理员终端:mysqld --remove ii 搜索:服务,检索mysql服务,无 (mysql使用命令启动) 中止服务,启动管理员终端 tasklist | findstr mysql taskkill /pid 进程pid /f 2)链接超时 搜索:服务,检索mysql服务,移除服务便可 3)移除环境变量 总结:若是能连入,先中止服务 | 若是添加了服务,就移除服务 | 取消环境变量配置
数据库的链接:主机、端口、帐号、密码、数据库mysql
# 前提:配置环境变量 # 了解 1.前往数据库安装路径,bin文件夹下,cmd执行 mysqld 启动mysql服务器端 2.前往数据库安装路径,bin文件夹下,cmd执行 mysql 启动mysql客户端链接服务器端
# 掌握*** # 将mysql服务器添加到系统服务,在系统服务中启动mysql, 命令: mysqld --install # 进入系统服务: win+r => services.msc => 找到mysql服务手动启动或关闭 # 链接数据库:mysql -hlocalhost -P3306 -uroot -p 1)游客登录(不必定能登入,登入了也啥都不能干) >: mysql 2)帐号密码登陆 >: mysql -u root -p 再输入密码,没有任何提示,没有密码直接回车 3)链接指定服务器的mysql >: mysql -h ip地址 -P 端口号 -u 帐号 -p 回车后敲入密码 eg: >: mysql -hlocalhost -P3306 -uroot -p 4)退出数据库 >: quit >: exit # 经过最高权限进入数据库, 要采用root用户进入, 连入本地数据库: mysql -uroot -p
1)查看当前登陆的用户 mysql>: select user(); 2)root权限下能够查看全部用户信息 mysql>: select * from mysql.user; mysql>: select * from mysql.user \G mysql>: select user,password,host from mysql.user; 3)root登陆下,删除游客(操做后要重启mysql服务) mysql>: delete from mysql.user where user=''; 4)root登陆下,修改密码(操做后要重启mysql服务) mysql>: update mysql.user set password=password('12345678') where host='localhost'; 5)没有登陆 >: mysqladmin -u用户名 -p旧密码 -h域名 password "新密码" eg>: mysqladmin -uroot -p12345678 -hlocalhost password "root" 6)root登陆下,建立用户 mysql>:grant 权限们 on 数据库名.表名 to 用户名@主机名 identified by '密码';
建立对指定数据库权限的用户:grant 权限们 on 数据库.表 to 用户名@'主机名' identified by '密码';redis
# 操做前提:登陆root用户 1.重要字段 Host | User | Password 2.新建用户 create user 用户名@主机名 identified by '密码'; # 正确 create user zero@localhost identified by 'zero'; 3. 为特定的数据库分配有该数据库 操做权限 的用户 mysql>: grant 权限们 on 数据库.表 to 用户名@'主机名' identified by '密码'; 方法1 # 1)all:全部权限 # 2)oldboy.*:oldboy数据库下全部表 # 3)oldboy@'localhost':本机能够经过oldboy用户登入 # 4)identified by 'Oldboy123':密码为Oldboy123 eg>: grant all on oldboy.* to oldboy@'localhost' identified by 'Oldboy123'; 方法2 # 1)select,delete,update,insert,drop,alter:指定的权限 # 2)oldboy.*:oldboy数据库下全部表 # 3)oldboy@'%':任何机器能够经过oldboy用户登入 # 4)identified by 'Oldboy123':密码为Oldboy123 eg>: grant select,delete,update,insert,drop,alter on oldboy.* to oldboy@'%' identified by 'Oldboy123'; 注:数据库名,表名能够用*替换,表明全部 注:设置权限时若是没有当前用户,会自动建立用户,提倡使用 4. 撤销权限 mysql>: revoke 权限1,权限2,... on 数据库名.表名 from 用户名@'主机名'; # 禁掉本地oldboy用户对oldboy数据库的全部表的drop权限 eg:> revoke drop on oldboy.* from oldboy@'localhost'; 5.修改密码 set password for 用户名@主机名 = password('新密码'); set password for owen@localhost = password('123'); 6. 删除用户 drop user 用户名@'主机名';
修改密码: mysqladmin -uroot -p旧密码 password "新密码"
# 查看数据库配置信息: \s => 统一编码 => 防止乱码(读取不方便,数据丢失) # 在mysql安装根目录下:建立my.ini (my.cnf) (命令:type nul>文件名.文件后缀) # 经过配置文件统一配置的目的:统一管理 服务端(mysqld) 、客户端(client) # 配置了 mysqld(服务端) 的编码为utf8,那么再建立的数据库,默认编码都采用utf8 # 配置流程 # 1)在mysql安装根目录下,建立配置文件:my.ini # mac下配置文件名叫 my.cnf # 2)设置配置文件内容并保存 [mysqld] # 服务器配置 port=3306 # 能够修改数据库默认端口(若是数据库端口被其余软件占用) character-set-server=utf8 # 编码格式 collation-server=utf8_general_ci # 排序方式(默认跟编码格式走) [client] # mysql本身的客户端叫[mysql],配置[client]即配置了[mysql],也配置了其余存在方式的客户端,好比Navicat可视化客户端 default-character-set=utf8 # 编码格式 # 3)重启数据库服务
###直接复制粘贴 [mysqld] character-set-server=utf8 collation-server=utf8_general_ci [mysql] default-character-set=utf8 [client] default-character-set=utf8
[mysqld] character-set-server=utf8 collation-server=utf8_general_ci [mysql] default-character-set=utf8 ##########加入免登陆 user=root password=root [client] default-character-set=utf8
#修改字符编码 mysql>:alter database 数据库名 charset=编码格式;
# 前提: 链接上数据库 1.查看mysql版本: mysql>select version(); 2.查看当前用户: mysql>select user(); 3.查看mysqld下的(当前用户能够操做的)全部数据库: mysql>show databases; 4.选择数据库 mysql>:use 数据库名; mysql>use db1; 5.查看当前所在数据库: mysql>:select database(); 6.增,建立数据库 mysql>:create database 数据库名 [charset="编码格式"]; # 采用默认编码集: mysql>create database db1; # db1为数据库名 # 自定义编码集: mysql>create database db1 charset="gbk"; 7.查,查看数据库所有信息 mysql>:show create database 数据库名; # 详细信息: mysql>show create database db1; 8.改,修改数据库编码集 mysql>alter database db1 charset="utf8"; 9.删, 移除数据库 mysql>:drop database 数据库名; mysql>drop database db1; 10. 退出 mysql>exit mysql>quit
# sql_mode: 反映数据库的全局变量 # 数据库模式限制的是客户端对服务器操做数据的方式(是否严格) # mysql 5.7 之后默认都是安全模式 # mysql 5.6 版本 sql_model=no_engine_substitution # 非安全性,默认 sql_model=strict_trans_tables # 安全性 # 查看当前数据库模式: show variables like "%sql_mode%"; # %匹配0~n个任意字符 => 模糊查询 # 临时设置为安全模式,服务重启后会被重置 mysql>: set global sql_mode="strict_trans_tables"; # 在root用户登陆状态下 # 在设置后,quit断开数据库链接后(服务器不重启)就会进入安全模式 # 安全模式下,非安全模式下sql执行的警告语句,都会抛异常 eg>: create table t1(name char(2)); eg>: insert into t1 values ("ab") # 正常 eg>: insert into t1 values ("owen") # 错误 Data too long for column 'name' at row 1
继续输入 show variables like'%time_zone'; (注意不要漏掉后面的分号),回车,如图:sql
显示 SYSTEM 就是没有设置时区啦。mongodb
3,如今咱们来设置时区。shell
输入set global time_zone = '+8:00'; 注意不要漏掉后面的分号),回车,如图:数据库
这即是设置成功啦!安全
这时你从新链接下数据库,也许能链接成功!若是没有,就继续往下走!服务器