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 列名 列类型 ; |
删除列 | alter table 表名 drop 列名; |
重命名列 | 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
Python学习之数据库初识的更多相关文章
- python学习笔记六 初识面向对象上(基础篇)
python面向对象 面向对象编程(Object-Oriented Programming )介绍 对于编程语言的初学者来讲,OOP不是一个很容易理解的编程方式,虽然大家都知道OOP的三大特性 ...
- python学习日记(初识面向对象)
面向过程 VS 面向对象 面向过程 面向过程的程序设计把计算机程序视为一系列的命令集合,即一组函数的顺序执行.为了简化程序设计,面向过程把函数继续切分为子函数,即把大块函数通过切割成小块函数来降低系统 ...
- Python学习:模块初识、数据类型
1.模块初识 在Python中,模块分为两种: (1)标准库 标准库无需安装,只要在使用的时候import就可以使用了 (2)第三方库 第三方库必须下载安装之后才能够引入使用 下面介绍两个基本的模块: ...
- python学习笔记七 初识socket(进阶篇)
socket socket通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄,应用程序通常通过"套接字"向网络发出请求或者应答网络请求. sock ...
- python学习笔记之初识Python
一直听说python语音的简单易用而又强大,今天终于忍不住借本书,开始接触接触一下它,下面结合书本和自己的一些体会,写一下刚刚接触python的东西,重点写一些和C++有区别的地方. (1)输入inp ...
- Python学习之路——初识Python
一.第一个程序Hello World: 1.打印输出Hello World: Python2打印方法: >>> print "hello world"hello ...
- Python学习笔记1_初识Python
一.Python的发展 1.CNRI时期:CNRI是自助Python发展初期的重要单位,Python1.5版之前的成果大部分都在此时期内完成 2.BeOpen时期:Guido van Rossum与B ...
- python学习日记(初识递归与算法)
递归函数 定义 递归的定义——在一个函数里再调用这个函数本身 递归的最大深度——997,即栈溢出. 使用递归函数需要注意防止栈溢出.在计算机中,函数调用是通过栈(stack)这种数据结构实现的,每当进 ...
- Python学习之数据库
9.6 表的查询 [结构]select distinct 字段1,字段2 from 表名 where 条件 group by 字段 having 筛选 order by 字段 limit 限制条数 [ ...
随机推荐
- HDU - 6704 K-th occurrence (后缀数组+主席树/后缀自动机+线段树合并+倍增)
题意:给你一个长度为n的字符串和m组询问,每组询问给出l,r,k,求s[l,r]的第k次出现的左端点. 解法一: 求出后缀数组,按照排名建主席树,对于每组询问二分或倍增找出主席树上所对应的的左右端点, ...
- Python在VSCode环境抓取TuShare数据存入MongoDB环境搭建
本文出自:https://www.cnblogs.com/2186009311CFF/p/11573094.html 总览 此文分为5个部分 第一:Anaconda(下载和安装) 第二:VSCode( ...
- JSONArray排序和倒转
JSONArray排序 // JSONArray转list List<JSONObject> list = JSONArray.parseArray(ordersDataArray.toJ ...
- ASP net 上传整个文件夹
HTML部分 <%@PageLanguage="C#"AutoEventWireup="true"CodeBehind="index.aspx. ...
- reactjs 的 css 模块化工具 styled-components 升级后 createGlobalStyle 废除,使用 createGlobalStyle 的方案
在 styled-components 升级到 4 版本后设置全局属性的 createGlobalStyle 这个 api 被废除,替代的 api 是 createGlobalStyle 与过去组织代 ...
- Python3学习笔记(十一):函数参数详解
一.位置参数 根据参数的位置来传递参数,调用函数时,传递的参数顺序和个数必须和定义时完全一致 # 定义函数 def man(name, age): print("My name is %s, ...
- R_Studio(学生成绩)使用主成分分析实现属性规约
对11_1_4.csv成绩表进行主成分分析处理 setwd('D:\\data') list.files() #读取数据 dat=read.csv(file="11_1_4.csv" ...
- Python3.X Selenium 自动化测试中如何截图并保存成功
在selenium for python中主要有三个截图方法,我们挑选其中最常用的一种. 挑最常用的:get_screenshot_as_file() 相关代码如下:(下面的代码可直接复制) # co ...
- SQLMAP自注入--INJECTION TECGBUQUES FINGERPRINT
-p参数 指定扫描的参数 ,使--level失效 -p“user-agent,refer”这些参数也可以通过-p来指定 sqlmap.py -u "http://127.0.0.1/muti ...
- jpa repostiory
JpaRepository的查询 image.png image.png Spring Data JPA框架在进行方法名解析时,会先把方法名多余的前缀截取掉,比如 find.findBy.re ...