Python进阶-数据库编程-01

Python进阶系列
Python进阶-网络编程-01
Python进阶-网络编程-02
Python进阶-网络编程-03
Python进阶-多任务编程-01
Python进阶-多任务编程-02
Python进阶-多任务编程-03
Python进阶-正则表达式
Python进阶-数据库编程-01
Python进阶-数据库编程-02
Python进阶-数据库编程-03
Python进阶-数据库编程-04
Python进阶-数据拷贝问题
Python进阶-模块导入问题
Python进阶-miniWeb框架

文章目录

      • 10.1. 数据库概念及作用
      • 10.2. 数据库分类及特点
      • 10.3. 数据库管理系统
      • 10.4. MySQL环境搭建
      • 10.5. 数据完整性
      • 10.6. 客户端Navicat的使用(一)
      • 10.7. 客户端Navicat的使用(二)
      • 10.8. MySQL数据类型
      • 10.9. SQL命令-查看数据库的版本和当前时间
      • 10.10. SQL命令-数据库的操作
      • 10.11. SQL命令-表结构的创建
      • 10.12. SQL命令-表结构的修改
      • 10.13. SQL命令-表数据的增删改查

10.1. 数据库概念及作用

  • 数据库概念:一些特殊格式的文件的集合

  • 数据库的作用:用来存储各种数据

  • 数据库的使用优势

    1. 持久存储
    2. 存储效率高
    3. 支持可拓展

10.2. 数据库分类及特点

  • 关系型数据库:基于关系模型建立,用二维表进行数据存储的数据库

    MySQL Oracle

  • 非关系型数据库:不是基于二维表,基于key-value方式存储

    MongoDB Redis


10.3. 数据库管理系统

  • 数据库管理系统

    数据库管理系统是管理数据库的一套软件系统,简称DBMS

    数据库管理系统构成:

    1. 客户端
    2. 服务端
    3. 数据库文件

    关系型数据库管理系统:RDBMS

  • SQL

    • 作用:客户端跟服务端通信的特殊"语言"
    • 含义:结果化查询语言
    • 分类:
      • DDL:数据定义语言,创建、删除
      • DQL:数据查询语言,用来查询
      • DML:数据操作语言,增删改查
  • 数据库的核心元素

    • 数据库:数据库系统
    • 数据表:二维表(行、列)
    • 记录(二维表的一行,要求数据要完整)
    • 字段(二维表的列,要求数据类型要一致)
  • 数据保存的流程

    • 创建数据库 --> 创建数据表 --> 字段 --> 保存数据

10.4. MySQL环境搭建

  • MySQL数据库管理系统的安装

    sudo apt-get install mysql-server
    
  • MySQL数据库的配置

    配置文件:/etc/mysql/mysql.conf.d/mysqld.cnf

  • MySQL数据库操作

    • 启动:sudo service mysql start
    • 检测:ps-ajx | grep mysql
    • 重启:sudo service mysql restart
    • 停止:sudo service mysql stop
  • 客户端连接服务端

    • 图形化工具

    • 命令行连接

      • 可以看到密码

        # mysql -u用户名 -p密码
        # 回车
        
      • 看不到密码

        # mysql -u用户名 -p
        # 回车
        # 输入密码
        # 回车
        
    • 命令行退出:exit 或者 quit或者ctrl+d(linux)


10.5. 数据完整性

  • 实体完整性
    • 主键约束:不能为空,也不能重复 primary key
    • 唯一约束:能为空,但是不能重复 unique key
  • 域完整性
    • 非空约束:该字段信息不能为空 not null
    • 默认约束:该字段可以设置默认值 default
  • 参照完整性
    • 外键约束:建立表和表主键的关系 foreign key
  • 用户定义的完整性
    • 字段的值必须是设定的范围之内

10.6. 客户端Navicat的使用(一)

  • 建立连接

    • 连接 --> MySQL --> 主机、用户名、端口、密码 --> 确定
  • 创建数据库

    ​ 1) 连接

    ​ 2) 右键->创建数据库->名称、字符集utf8、排序规则

  • 创建数据表

    ​ 1) 打开数据库
    ​ 2) 右键创建表
    ​ 3) 输入字段(光标移动)
    ​ 4) 保存,输入表名

  • 修改数据表

    ​ 1) 右键表名->设计表->保存


10.7. 客户端Navicat的使用(二)

  • 打开表

    双击表名,打开表

  • 添加数据

    单击单元格,可以添加

    自动增长列,不需要写

    保存: 1)ctrl+s 2)底部√

  • 修改表数据

    双击单元格,修改内容

  • 删除数据

    选中某行,点击底部”"号

  • 导出、备份、导入

    导出:右键数据库 --> 转储SQL --> 数据和结构

    导入:

    ​ 1)新建数据库

    ​ 2)右键 运行 sql文件


10.8. MySQL数据类型

  • 数值

    • 整型

      int tinyint

      浮点型

      float double

      ​ 表示的精度不同

      ​ float 6位有效 double 16位有效

  • decimal 浮点型,用来更加精确的保存小数

  • 字符串

    • char: 255个字符,固定大小
    • varchar: 65535字节,不固定(可变)
    • text: 64kb
  • 枚举

    • enum:1-2个字节存储数据
  • 时间

    • date :年月日
    • time :时分秒
    • datatime :年月日时分秒

10.9. SQL命令-查看数据库的版本和当前时间

  • 查看数据库的版本

    select version();
    
  • 查看当前时间

    select now();
    

10.10. SQL命令-数据库的操作

1.-- 连接数据库
	mysql -uroot -pmysql
	不显示密码
	mysql -urbot -p
	mysql

2.-- 退出数据库
	exit
	quit
	ctrl+d
  sql语句最后需要有分号;结尾

3.-- 显示数据库版本version
	select version();

4.-- 显示时间
	select now();

5.-- 查看所有数据库
	show databases;
	
6.-- 使用数据库
  use 数据库名;
	
7.-- 查看当前使用的数据库
	select database();

8.-- 创建数据库
	create database python_db;
	指定编码的数据库创建
	create database python_dbl charset=utf8;

9.-- 查看创建数据库的语句
	show create database python_db;

10.-- 删除数据库
	drop database 数据库名;
	drop database python_db;

10.11. SQL命令-表结构的创建

1.-- 查看当前数据库中所有表
	show tables;

2.-- 创建表
  create table  数据表名字(字段类型约束[字段 类型 约束]);
  相关约束条件
			int unsigned  无符号整形
			auto_increment  表示自动增长
			not null  表示不能为空
			primary key  表示主键
			default  默认值
	
3.-- 创建classes表(id、name)
  create table classe(
      id int unsigned primary key auto_increment,
      name varchar(10) not null,
      num tinyint
  );

4.-- 查看表结构
	desc 数据表的名字;
	desc classes; 


5.-- 创建students表(id、name、age、high(decimal)、gender(enum)、cls_id)
  create table students(
      id int unsigned primary key auto_increment,
      name varchar(20) not null,
      age tinyint(1),
      high decimal(3,2),
      gender enum("男","女","妖"),
      cls_id int unsigned
      );

6.-- 查看表的创建语句
  show create table 表名字;
  show create table students;
  1. 查看当前数据库中所有表

    Python进阶-数据库编程-01_第1张图片

  2. 查看表结构
    Python进阶-数据库编程-01_第2张图片

  3. 创建表
    Python进阶-数据库编程-01_第3张图片

  4. 查看表的创建语句
    Python进阶-数据库编程-01_第4张图片


10.12. SQL命令-表结构的修改

  • 添加字段

    -- alter table 表名 add 列名 类型;
    例:alter table students add birthday datetime;
    
  • 重命名字段

    -- alter table 表名 change 原名 新名 类型及约束;
    例:alter table students change birthday birth datetime not null;
    
  • 修改字段类型

    -- alter table 表名 modify 列名 类型及约束;
    例:alter table students modify birth date not null;
    
  • 删除字段

    -- alter table 表名 drop 列名;
    例:alter table students drop birthday;
    
  • 删除表

    -- drop table 表名;
    例:drop table students;
    

10.13. SQL命令-表数据的增删改查

1.增加
+-------+------------------+------+-----+---------+----------------+
| Field | Type             | Null | Key | Default | Extra          |
+-------+------------------+------+-----+---------+----------------+
| id    | int(10) unsigned | NO   | PRI | NULL    | auto_increment |
| name  | varchar(10)      | NO   |     | NULL    |                |
| num   | tinyint(4)       | YES  |     | NULL    |                |
+-------+------------------+------+-----+---------+----------------+

	-- 全列插入
	-- insert [into] 表名 values(...)
	-- 主键字段 可以用 0  null   default 来占位
	-- 向classes表中插入 一个班级
		insert into classes values(1, 'python20', 70);

		insert into classes values(null, 'python19', 68);

	-- 向students表插入 一个学生信息
| Field  | Type                    | Null | Key | Default | Extra          |
+--------+-------------------------+------+-----+---------+----------------+
| id     | int(10) unsigned        | NO   | PRI | NULL    | auto_increment |
| name   | varchar(20)             | NO   |     | NULL    |                |
| age    | tinyint(1)              | YES  |     | NULL    |                |
| high   | decimal(3,2)            | YES  |     | NULL    |                |
| gender | enum('男','女','妖')    | YES  |     | NULL    |                |
| cls_id | int(10) unsigned        | YES  |     | NULL    |                |
+--------+-------------------------+------+-----+---------+----------------+

	-- 部分插入
	-- insert into 表名(列1,...) values(值1,...)
		insert into students values(null, '司马二狗', 18, 1.78, '女', 1);
		insert into students(id, name) values(null, '司马狗剩');

	-- 多行插入
		insert into students values(null, '欧阳铁娃', 18, 1.78, '女', 1),(null, '诸葛铁锤',      18, 1.78, '男', 1);



2.修改
  -- update 表名 set 列1=值1,列2=值2... where 条件;
  -- 全部修改
  	update students set age = 38;

	-- 按条件修改
		update students set age = 88 where name = '司马狗剩';
		update students set high = 1.2 , gender='男' where name='司马狗剩';
	
  
  
3.查询基本使用
	-- 查询所有列
	-- select * from 表名;
		select * from students;

	--定条件查询
		select * from students where name='司马狗剩';
		select * from students where id = 2;


	-- 查询指定列
	-- select 列1,列2,... from 表名;
		select id,name from students;
		select id,age  from students;


	-- 可以使用as为列或表指定别名
	-- select 字段[as 别名] , 字段[as 别名] from 数据表;
		select id as '编号', name as '姓名' from students;

	-- 字段的顺序
  	select age,name from students;
    


4.删除
	-- 物理删除
	-- delete from 表名 where 条件
		delete from students where id = 2;

	-- 逻辑删除
	-- 用一个字段来表示 这条信息是否已经不能再使用了
	-- 给students表添加一个 is_delete 字段 bit 类型  默认为0
		alter table students add is_delete bit default 0;
	-- bit 类型,智能保存 0 或者 1
	-- is_delete = 1  逻辑删除  
		update students set is_delete = 1 where id = 3;



5.数据库备份与恢复(了解)
	-- mysqldump –uroot –p 数据库名 > python.sql;
	-- mysql -uroot –p 新数据库名 < python.sql;

你可能感兴趣的:(Python进阶,数据库,python,mysql)