Python学习day41-数据库(1)
数据库
概念
首先我们要明白数据的概念,什么是数据呢,宽泛来讲,我们之前所创建的文件,以及各种赋值语句,甚至是计算机上的各种图片,,视频,音乐,其实最后都可以叫做是数据.
那么问题就来了,库,通常来讲库的定义就是一个可以存放很多东西的容器,所以数据库,最简单的定义就是可以存放很多数据的一个库.
我们为什么要用数据库?
试想一下,如果我们在一个比较大的公司,就是那种需要同时和上千万用户进行交互的软件的公司,那么用户和公司软件之间的交互应该是什么样的?
我们不是直接和计算机交互,而应该是服务器,甚至通常是一个服务器的集群.而这些服务器里面装的也不是我们这些常用的win10或者mac系统,而是Linux或者是Windows Server系列,这些系统的界面和与用户的交互性也许没有那么优秀,却足够稳定.而这些系统上通常就只会放一些数据库,仅此而已.
那么我们使用数据库的理由就有了,一方面,我们要用数据库来存储文件,从而实现文件和程序的分离,另外一方面,数据库修改数据的效率比我们直接手动修改,或者是通过Python修改的效率要高的太多太多了.
数据库的分类
数据库按照不同的标准,分类也不尽相同,但一般会有三种标准来进行分类:
-
关系型与非关系型
关系型:顾名思义,关系型数据库就是其中的表与表之间都有联系,每个表并不是独立存在的,比如MySQL,Oracle,SQLserver等
非关系型:非关系型数据库里面没有表的概念,只有单独的每一行的数据,比如redis,MongoDB等,其优势在于存取速度都比关系型数据库要快,缺点就是逻辑较复杂,脉络不清晰.
-
内存和硬盘(按照工作的区域来分):
硬盘:可以永久存储,比如MySQL,MongoDB等
内存:数据的存取率极高,比如redis,memcache等
-
sql与nosql来区分
sql:就是说数据库需要通过sql语句来操控,操控较复杂,但效率很高
nosql:数据库操作是通过直接用key-value的方式进行记录,而不通过sql语句,
数据库的安装与卸载
安装:
首先,如果你从来没有安装过数据库,那么恭喜你,你非常的幸运,你只需要按照下面这个教程来一步一步安装即可,绝对不会出错.教程如下:
Windows版本
mysql的安装、启动和基础配置 —— Windows版本:https://www.cnblogs.com/nickchen121/p/11145124.html
Linux版本
mysql的安装、启动和基础配置 —— Linux版本:https://www.cnblogs.com/nickchen121/p/11145125.html
Mac版本
mysql的安装、启动和基础配置 —— Mac版本:https://www.cnblogs.com/nickchen121/p/11145123.html
以上安装教程均为博客园,nickchen这位大帅比所写,非常的详细,亲测没有任务问题.
卸载:
下面我们要说的是,如果你之前安装过数据库,而且卸载的不是那么彻底,那么就会非常麻烦.其实也没有那么麻烦,只需要做两个步骤就可以了
-
删除环境变量里数据库的地址
具体为,右键我的电脑-->属性-->高级系统设置-->高级标签页-->环境变量-->找到下面系统变量里面有一个叫path的东西,双击或者编辑,然后从里面所有的环境变量里面找到类似于这样的:
删除即可,顺便把这个路径下的文件夹也删除,整个删除
-
删除安装过的服务的注册表
注册表的路径比较绕,这里要看自己,首先,打开运行界面
输入上图中的regedit,打开注册表,路径如下:\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MySQL
对的,我们要直接删除这个MySQL的文件夹,果断的直接删除
然后,你需要重启机器,记住,这点非常重要,重启完之后,你的电脑就彻底干净了,再也没有之前安装的残余了,然后按照上面的安装步骤安装就可以了.
亲测,十分有效,如果没效果,你来找我
数据库的连接
在正确的安装好数据库之后,我们打开cmd窗口,输入mysql,就可以进入到数据库里了~不过这时候你是以游客方式进入的,并没有任何的修改权.
如果这个时候你报错是这样的:
ERROR 2003 (HY000): Can't connect to MySQL server on 'localhost' (10061)
那么你需要去服务里面把MySQL打开,步骤为:
开始菜单-->搜索框-->服务–>在名称里面找到MySQL,然后右键启动即可,之后就可以用mysql连接上数据库了,当然这是最原始的连接数据库的方法,需要更高级一点的,请看下列网站:
http://www.downxia.com/downinfo/227395.html
xxxxxxxxxx
#1. 直接输入mysql登录就是游客登录,登陆了也不能操作什么
>:mysql
#2. 账号密码登录
>:mysql -uroot -p
# 再输入密码,没有任何提示,没有密码就直接回车
#3. 连接指定服务器的mysql
>:mysql -h ip地址 -P 端口号 -u 对方账号 -p 密码
# 回车后敲入密码
eg:
>:mysql -hlocalhost -P3306 -uroot -p 密码
#4.退出数据库
quit
exit
用户信息查看
我们把信息存到数据库中的目的当然就是为了查看,或者说调用,单纯的存进去没有任何意义.
查看数据库信息的常用命令为以下几个:
xxxxxxxxxx
#1. 查看当前用户
select user():
#2. root权限下可以查看所有用户信息
select * from mysql.user:
select * from mysql.user \G
select user,password,host from mysql.user;
::1ipv6,可以接收所有的ipv6
#3. root登陆下删除游客(重启服务)
delete from mysql.user where user='';
#4. root登陆下,修改密码(重启服务)
update mysql.user set password=password('123456') where host = '127.0.0.1'
mysql> set password for 用户名@localhost = password('新密码');
eg:
mysql> set password for root@localhost = password('123');
#5. 没有登录
musqladmin -uroot -p旧密码 password"新密码"
#6. 创建用户(root登陆下)
grant 权限 on 数据库名.表名 to 用户名@主机名 identified by '密码';
数据库的基本操作
不管是对数据库,还是对表,或者是对记录,我们最常用的操作基本大致都是分四种,增删改查,所以下面我们分别用这四个方向来简单说明一下对于数据库,表和数据记录三者的一些简单操作.
xxxxxxxxxx
# 前提:用户已登录,且有权限对数据库操作
1. 增,即增加,创建数据库,后面为默认的字符编码类型
create database 数据库名[charset='utf8']:
实例如下:
create database db1;
create database db2 charset='utf8'
2. 删,删除数据库,主要用drop
drop database 数据名;
drop database db2
3. 改,即修改,对数据库的修改一般只修改其编码集以及数据库名,但是直接修改数据库名有丢失数据的风险,因为如果之前有些脚本在取数据的话,会丢失数据,所以其实对数据库改名的命令在MySQL5.1.7版本的时候被添加进来,但是5.1.23的时候又去掉了,所以我们了解就好
rename database db1 to db2;(现版本已经没有这个命令)
alter database db1 charset="utf8";# 修改数据库的默认字符集编码
4. 查,不管是什么结构,查都是其重中之重,因为只有你能查到数据,才能把它取出来,才可以做别的操作
show databases;# 可以查看当前机器有的所有的数据库,只显示数据库名
show create database db1;# 可以查看指定数据库的详细信息,包括数据库的名字和其编码格式
表的基本操作
同样是增,删,改,查:
x
# 前提:要知道当前在哪个库下面
1. 增
create table 表名(
(字段 字段类型)
(字段 字段类型)
(字段 字段类型)
);# 创建一个表
create table student(name char(16),age int,gender char(10))
2. 删,表的删除方法和数据库基本一样,都是用drop
drop table 表名;
drop table student;
3. 改,表的修改通常是指修改表名和字段名以及字段属性
alter table 旧表名 rename 新表名;
alter table student rename teacher;
alter table student change 旧字段名 新字段名 新字段属性
alter table student modify 字段名 字段的新属性
4. 查,表的查询通常可以查询三个方面,如下例
show tables;# 查看当前数据库里所有的表名
show create table student;# 查看具体某个表的详细信息
desc student;# 可以查看表字段的结构信息,包括字段名,以及每个字段的类型的定义
字段的基本操作
x
# 前提: 知道操作的是哪个表里面的字段
# 1.增, 添加字段
insert [into][数据库名.]表名 values(值1,...,值n);
insert into t1 (name, age) values ("1", 18),("2", 8);
# 2.查
select * from [数据库名.]表名;
select * from student
select * from owen.student
# 注意一点,其中的*其实是代表所有字段的意思
# 3.改
update [数据库名.]表名 set 字段1=新值1,字段n=新值n where 字段=旧值;
update t1 set age=28 where name="1";
# 4.删,字段的删除用的是delete,不是drop了
delete from [数据库名.]表名 where 条件
delete from t1 where age>8;