Python学习之数据库初识

9 数据库

9.1 数据库的初识

? 数据库是可以独立运行的,并且可以对数据的增删改查提供高效便捷方式的工具。

数据库解决的问题:

? 解决了操作文件的效率和便捷问题

? 解决了多个服务同时使用数据时的一致性问题

? 解决了安全问题

? 解决了并发问题

数据库的优点:

? 程序稳定性:应用服务器的崩溃不会影响数据的安全

? 数据的一致性:将所有数据的管理统一,所有对数据的操作统一

? 并发:数据库支持并发的网络操作,不需要我们自己写socket

? 效率:使用数据库对数据进行增删改查的效率比操作文件的效率高甚多

常见概念

DataBase

数据库,简称DB,存放数据的仓库,数据按照一定的格式存放
数据库中的数据按照一定的模型组织、描述和纯属,具有较小的冗余,较高的数据独立性和易扩展性,可为各种用户共享数据

DBMS

数据库管理系统 ,对数据进行科学的组织和存储,以及能够高效的获取和维护数据

常见数据库分类:

【关系型数据库】通过某些条件都可以同一条目;数据之间关联性比较紧密;存取效率相对低;MySQL Oracle SQL server SQLlite(轻量级) access

【非关系型数据库】速度快;通过key找数据;数据之间关联关系是K-V模式;存取效率相对高;redis mongodb(轻量级) memcache(内存级别,断电消失)

数据库管理员 DBA

各个概念之间的关系

记录:多个字段的信息组成一条记录

表:stable,文件,用来存放多条信息或记录

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

数据库管理系统:管理数据库

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

9.2 MySQL的安装

卸载数据库:

停止数据库服务: net stop mysql 停止MySQL服务,还可以在服务里找到停掉

删除服务: mysqld remove

删除安装文件

删除环境变量

清除注册表或者重启电脑

安装数据库:

安装包下载:

找到安装包:路径不能有中文;路径中不能由特殊字符\t \n \b \1 \2 ;

修改配置文件:utf-8;所有配置项后面不要由特殊的符号;修改两个路径basedir,datadir

[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8
[mysqld]
#设置3306端口
port = 3306
# 设置mysql的安装目录
basedir=D:\mysql\mysql-5.6.45-winx64
# 设置mysql数据库的数据的存放目录
datadir=D:\mysql\mysql-5.6.45-winx64\data
# 允许最大连接数
max_connections=200
# 服务端使用的字符集默认为8比特编码的latin1字符集
character-set-server=utf8
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB

配置环境变量:把bin目录的路径添加到环境变量中

以管理员身份打开CMD: mysqld install net start mysql

9.3 常用命令

数据库命令分类

SQL:Structured Query Language,结构化查询语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新、管理关系型数据库

【按功能分类】

  • DDL语句 数据库定义语言:数据库、表、试图、索引、存储过程
  • DML语句 数据库操纵语言:增删改查
  • DCL语句 数据库控制语句:控制用户权限等

进入与退出MySQL

mysql
mysql> select user() # 查看当前用户
mysql> exit  # 退出

# 指定用户密码登录
mysql -uroot -p
Enter password:    # 第一次使用root用户登录时,默认是没有密码的,回车直接登录
mysql> set password = password('root'); # 给当前数据库设置密码

# 远程登陆
mysql -utest -p -h 192.168.13.121 

创建账号

格式:grant 权限 on 数据库.* to 用户名@登录主机 identified by "密码"

权限包括:select,insert,update,delete == all

数据库名.:与该数据库里的所有表建立连接; .* 表示所有数据库的所有表

# 创建本地账户
mysql> create user 'admin'@'localhost' identified by 'admin';

# 创建可用于远程登陆账号
mysql> create user 'test'@'192.168.10.%'   IDENTIFIED BY '12345'   #'192.168.10.%' 指的是一个网段,可以指定单独一台主机的IP
mysql> create user 'test1'@'%'   # 表示所有机器都可以连接

# 给账号赋权限
mysql> grant all on *.* to 'admin'@'localhost';  # 权限全开
mysql> grant select on *.* to 'test1';   # 开部分权限,给test1用户赋予查询所有数据库所有表的权限
mysql> flush privileges;  # 赋权立马生效

# 查看用户权限
mysql> show grants for 'admin'@'localhost';

操作文件夹(库)

操作 命令
创建数据库 create database 数据库名 charset utf8 ;
删除数据库(千万别用) drop database 数据库名;
查看所有数据库 show databases;
查看当前数据库 select database();或者status;
连接数据库 use 数据库名
修改数据库 alter database 数据库名 charset latin1;

进入到其他数据库时使用:? use 数据库名

操作文件(表)

操作 命令
创建数据表 create table 表名([字段1] [类型],[字段2] [类型]);
删除数据表 drop table 表名;
清空表 delete from 表名;或者 Truncate 表名;
查看表的结构 desc 表名; 或者 describe 表名 ;
查看建表语句 show create table 表名;
重命名数据表 aletr table 现表名 rename 新表名;
增加列 alter table 表名 add column 列名 列类型 ;
删除列 alter table 表名 drop column 列名;
重命名列 alter table 表名 change 现列名 新列名 类型;
修改列的属性 alter table 表名 modify 列名 新属性;
添加索引 alter table 表名 add index 索引名(字段名 1,字段名 2…);
查看索引 show index from 表名;
删除索引 alter table 表名 drop index 索引名

表中的每一行叫做一个字段

操作数据

操作 命令
增加 insert into 表名 values(字段1),(字段2),(字段3);字段内部数据以,隔开
查看 select 内容 from 表名 ;
修改 update 表名set 修改的内容 where 条件 ;
删除 delete from 表名 where 条件 ;
清空表 delete from 表名; truncate table 表名;(比第一条运行速度快)
删除字段自增长 alter table 表名 change 列名 列名 类型 ;注意列名称要重复一次,即需要将列的名称写两次
增加字段自增长 alter table 表名 modify 列名 类型 auto_increment;
(反方向)alter table 表名 change 列名 列名 类型auto_increment;
修改自增长起始值 alter table 表名 auto_increment=[value];

文章参考:https://www.cnblogs.com/Eva-J/articles/9676220.html

原文地址:https://www.cnblogs.com/jjzz1234/p/11272722.html

时间: 2024-09-30 20:46:28

Python学习之数据库初识的相关文章

python学习之数据库:mongoDB

参考网址: 1.http://www.runoob.com/mongodb/mongodb-intro.html 2.http://www.runoob.com/python/python-mysql.html 3.http://www.cnblogs.com/descusr/archive/2011/11/15/2249391.html from pymongo import * # 导包 con = Connection(...) # 链接 db = con.database # 链接数据库

Python学习笔记-数据库的使用(二)

1  在MySQL创建表 1)启动mysql #service mysqld start 2)创建项目 #django-admin.py startproject web_04 3)创建应用 #cd web_04 #django-admin.py startapp blog 4)创建新的database #mysql –u root –p   (有密码) #mysql –u root         (无密码) Mysql>create database user default charset

[Python学习]——序列(1)——初识Python中的序列

我们讲的python中的序列包括:1. 字符串(多个字符组成的一个序列)2. 列表3. 元组 #列表和元组的异同? list=[1,2,3] print type(list) tuple=(1,2,3) print type(tuple) #<相同点> 列表和元组都是容器,可以包含任意类型的元素(甚至是包含一个序列) 列表和元素也都包含元素的顺序 #<差别> 列表是可变的,元组是不可变的 所以通常,在你有一些不确定长度的相同类型队列时使用列表 在已知元素数量的情况下用元组 #<

python学习笔记之初识Python

一直听说python语音的简单易用而又强大,今天终于忍不住借本书,开始接触接触一下它,下面结合书本和自己的一些体会,写一下刚刚接触python的东西,重点写一些和C++有区别的地方. (1)输入input().输出print() 注意输入input()括号中是提示符,返回值才是输入的数 如a=input("请输入一个数") (2)数据类型 1)python中使用变量不需要提前对变量进行声明,可以直接使用,这点倒有点想MATLAB,而不是C. 2)python中所表示的整数大小只受限制于

python学习之数据库操作

一.数据库基本操作 数据库操作: 查看存储引擎: show engines; 查看数据库: show databases; 或者show create database oldboy\G 创建数据库: create database oldboy default charset=utf8; 删除数据库: drop database oldboy; 进入数据库:  use oldboy; 数据表操作: 创建数据表: create table tb_emp1 (     -> id int(11),

Python学习笔记-数据库的使用(一)

1.     CentOS7安装MySQL # wget http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm # rpm -ivh mysql-community-release-el7-5.noarch.rpm # yum install mysql-community-server 重启MySQL服务 # service mysqld restart 初次安装mysql,root账户没有密码. # mysql -

python学习之数据库mariadb操作

数据库简介数据库分类关系型数据库:指采用了关系模型来组织数据的数据库.关系模型指的就是二维表格模型,而一个关系型数据库就是由二维表及其之间的联系所组成的一个数据组织.主流的关系型数据库有:Oracle.Microsoft SQL Server.MySQL.PostgreSQL,SQLite.MariaDB(MySQL的一个分支)Microsoft Access.SAP.非关系型数据库:指非关系型的,分布式的,以键值对存储且结构不固定,可以减少一些时间和空间的开销.非关系型数据库都是针对某些特定的

python学习之路 初识xml

import requests from xml.etree import ElementTree as ET r = requests.get('http://www.webxml.com.cn//webservices/qqOnlineWebService.asmx/qqCheckOnline?qqCode=577800103') re = r.text r1 = ET.XML(re) print(r1.text) 简单检查qq在线 xml 之 tag  attrilb   text运用 f

Python学习之jQuery初识

jQuery 两大特点: 链式编程:比如.show()和.html()可以连写成.show().html(). 隐式迭代:隐式对应的是显式.隐式迭代的意思是:在方法的内部进行循环遍历,而不用我们自己再进行循环,简化我们的操作,方便我们调用. jQuery的简介 jQuery 是 js 的一个库,封装了开发过程中常用的一些功能,方便开发人员调用,提高开发效率. jQuery 的导入 从官网复制相应的版本到本地js文件中,使用script标签将本地的jQuery包导入即可,导包的代码一定要放在js代