python 之 数据库(数据库安装方法、基本sql语句、存储引擎)
第十章 数据库
10.1 数据库介绍
1、数据库相关概念 数据库服务器:本质就是一个台计算机,该计算机之上安装有数据库管理软件的服务端 数据库管理系统RDBMS:本质就是一个C/S架构的套接字软件 库(文件夹)| 表(文件) 记录:抽取一个事物所有典型的特征/数据
2、数据库管理系统/软件分类: 关系型: 有表结构,存取数据前必先定义表结构,存数据必须按照字段的类型或者约束来 典型代表:MySQL,Oracle,DB2,SQL server 非关系型: 存取数据都是采用key:value的形式 非关系型:Mongodb,redis,memcache
10.2 mysql 安装以及制作系统服务
1、安装 、加环境变量
2、把 mysqld 软件做成系统服务 注意:制作之前先把mysqld关掉
C:\Windows\system32>tasklist |findstr mysqld mysqld.exe 8372 Console 2 454,916 K C:\Windows\system32>taskkill /F /PID 8372 成功: 已终止 PID 为 8372 的进程。
制作:(管理员身份运行cmd)
mysqld --install 查看:windows+r 输入services.msc
3、启动:
未制作系统服务的启动方式: 1、启动服务端 mysqld 2、启动客户端 mysql -uroot -p -h127.0.0.1 -P 3306 如果是在本机登录mysqld服务端可以简写: mysql -uroot -p 制作完系统服务后就可以鼠标点击启动或关闭mysql: windows+r 输入services.msc 找到mysql,启动或关闭
4、破解管理员密码
1、先关闭mysqld服务端 2、以跳过授权表的方式在命令行中启动mysqld服务端 mysqld --skip-grant-tables 3、客户端直接以无密码的方式登录root用户,修改密码 mysql -uroot -p mysql> update mysql.user set password=password("123") where user="root" and host="localhost"; #Query OK, 0 rows affected (0.00 sec) #Rows matched: 1 Changed: 0 Warnings: 0 mysql> flush privileges; #Query OK, 0 rows affected (0.00 sec) 4、在命令行中用taskkill杀死mysqld服务,然后正常启动mysqld taskkill /F /PID 131312 5、用新密码登录 mysql -uroot -p123
5、统一字符编码
1、在mysql安装目录下新建my.ini文件
2、修改my.ini
[mysqld] character-set-server=utf8 collation-server=utf8_general_ci [client] default-character-set=utf8 [mysql] user="root" password='' default-character-set=utf8 3、重启mysqld 4、客户端重启后登录,输入\s查看结果
创建用户与授权:
create user 'egon'@'192.168.13.%' identified by '123'; #创建用户 mysql -uegon -p123 -h192.168.13.254 #连接数据库 grant all #授予所有权限 grant select on db1.* to 'egon'@'192.168.13.%'; #授予db1下所有表的查的权限给用户名egon grant select on db1.* to 'egon'@'192.168.13.%' identified by '123'; select user();#查看当前用户名 #在创建用户的同时授予db1下所有表的查的权限
10.3 基本的sql语句
10.31文件夹(库)
#增 create database db1 (charset utf8); #改 alter database db1 charset gbk; #查 查看所有库的库名 show databases; 单独查看某一个库的信息 show create database db1; #删 drop database db1;
10.32文件(表)
首先切换文件夹: use db1; select database(); #查看当前所在的文件夹 #增 create table t1(id int,name char); #改 alter table t1 modify name char(16); #查 查看当前库下所有的表名 show tables; 查看t1表的详细信息 show create table t1; 查看表结构 desc t1; #删 drop table t1;
10.33文件的一行内容(记录)
#增 insert (into) db1.t1 values (1,'egon'), (2,'alex'), (3,'lxx'); #改 update db1.t1 set name='sb' where id > 1; #查 select id,name from (db1.)t1; #删 delete from db1.t1 where name = "SB" ;#delete是用来删除表中某一些符合条件的记录 delete from t1; #不会将自增的id重置为0 truncate t1; #清空表,将整张表重置 ,id也重置
10.34表类型之存储引擎
方法1:建表时指定(不同的存储引擎对应不同的存储机制)
create table t1(id int)engine=innodb; #t1.frm(表结构) t1.ibd(数据) 存储在硬盘 create table t2(id int)engine=myisam; #t2.frm(表结构) t2.MYD(数据) t2.MYI(索引) 存储在硬盘 create table t3(id int)engine=blackhole;#黑洞 t3.frm(表结构) 表内不存数据 create table t4(id int)engine=memory; #t4.frm(表结构) 数据存储在内存 服务端断电清空 (show create table t1;) insert (into) db1.t1 value(1); insert (into) db1.t2 value(1); insert (into) db1.t3 value(1); insert (into) db1.t4 value(1); select * from db1.t1; # id 1 select * from db1.t2; # id 1 select * from db1.t3; # Empty select * from db1.t4; # id 1 服务端断电清空数据(Empty)
方法2:在配置文件中指定默认的存储引擎
[mysqld] default-storage-engine=INNODB innodb_file_per_table=1