欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

人生苦短,我用Python--一个*农业大学计算机本科生的Python学习之路-数据库(第一天)

程序员文章站 2022-05-28 21:30:47
...

人生苦短,我用Python--一个*农业大学计算机本科生的Python学习之路-数据库(第一天)

数据库基本介绍

  • 数据库
  • RDBMS
  • SQL
  • MySQL

1.数据库

数据库就是一种特殊的文件,其中存储着需要的数据:

  • 数据库核心元素
    1.数据行(记录)
    2.数据表(数据行的集合)
    3.数据列(字段)
    4.数据库(数据表的集合)

2.RDBMS

Relational Database Management System

所谓的关系型数据库RDBMS,是建立在关系模型基础上的数据库,借助于集合代数等数学概念和方法来处理数据库中的数据

查看最全数据库排行榜:https://db-engines.com/en/ranking

  • 数据库的主要产品:
    1.oracle:在以前的大型项目中使用,比如,银行,电信等项目
    2.mysql:web时代使用最广泛的关系型数据库
    3.sql server:在微软的项目中使用
    4.sqlite:轻量级数据库,主要应用在移动平台

人生苦短,我用Python--一个*农业大学计算机本科生的Python学习之路-数据库(第一天)

3.SQL

Structured Query Language

SQL是结构化查询语言,是一种用来操作RDBMS的数据库语言,当前关系型数据库都支持使用SQL语言进行操作,也就是说可以通过 SQL 操作 oracle,sql server,mysql,sqlite 等等所有的关系型的数据库

  • 数据库的主要产品:
    1.DQL:数据查询语言,用于对数据进行查询,如select
    2.DML:数据操作语言,对数据进行增加、修改、删除,如insert、udpate、delete

    3.TPL:事务处理语言,对事务进行处理,包括begin transaction、commit、rollback
    4.DCL:数据控制语言,进行授权与权限回收,如grant、revoke
    5.DDL:数据定义语言,进行数据库、表的管理等,如create、drop
    6.CCL:指针控制语言,通过控制指针完成表的操作,如declare cursor

4.MYSQL

MySQL是一个关系型数据库管理系统,由瑞典MySQL AB公司开发,后来被Sun公司收购,Sun公司后来又被Oracle公司收购,目前属于Oracle旗下产品

  • MYSQL数据库的特点:
    1.使用C和C++编写,并使用了多种编译器进行测试,保证源代码的可移植性
    2.支持多种操作系统,如Linux、Windows、AIX、FreeBSD、HP-UX、MacOS、NovellNetware、OpenBSD、OS/2 Wrap、Solaris等

    3.为多种编程语言提供了API,如C、C++、Python、Java、Perl、PHP、Eiffel、Ruby等
    4.支持多线程,充分利用CPU资源
    5.优化的SQL查询算法,有效地提高查询速度
    6.提供多语言支持,常见的编码如GB2312、BIG5、UTF8
    7.提供TCP/IP、ODBC和JDBC等多种数据库连接途径
    8.提供用于管理、检查、优化数据库操作的管理工具
    9.大型的数据库。可以处理拥有上千万条记录的大型数据库
    10.支持多种存储引擎
    11.MySQL 软件采用了双授权政策,它分为社区版和商业版,由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型网站的开发都选择MySQL作为网站数据库
    12.MySQL使用标准的SQL数据语言形式
    13.Mysql是可以定制的,采用了GPL协议,你可以修改源码来开发自己的Mysql系统
    14.在线DDL更改功能
    15.复制全局事务标识
    16.复制无崩溃从机
    17.复制多线程从机

MYSQL查询

1.查询

数据库操作

--连接数据库
	mysql -uroot -p
	mysql -uroot -pmysql

	--退出数据库
	exit/quit/Ctrl+d

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

	--显示时间
	select now();

	--查看所有的数据库
	show databases;

人生苦短,我用Python--一个*农业大学计算机本科生的Python学习之路-数据库(第一天)

--创建数据库
	create database python04;
	create database python04new charset=utf8;

	--查看创建数据库的语句
	show create database python04;

人生苦短,我用Python--一个*农业大学计算机本科生的Python学习之路-数据库(第一天)
所以通常使用 create database python04new charset=utf8; 命令

	--删除数据库
	drop database python04;
	drop database python04new;

	--查看当前使用的数据库
	select database();

	--使用数据库
	use python01;

人生苦短,我用Python--一个*农业大学计算机本科生的Python学习之路-数据库(第一天)

	--使用数据库
	use python03;
	--查看当前数据库中所有的表
	show tables;

数据表操作
– 创建表
– auto_increment 表示自动增长
– not null 表示不能为空
– primary key 表示主键
– default 默认值
– create table 数据表名字 (字段 类型 约束[, 字段 类型 约束]);
– 创建classes表 (id, name)

	-- 创建一个名为 python03 的数据库
	create database python03 charset=utf8;
	--查看当前数据库中所有的表
	show databases;
	-- 数据库创建好了之后 我们得使用数据库
	use python03;

人生苦短,我用Python--一个*农业大学计算机本科生的Python学习之路-数据库(第一天)

	-- 创建数据表
	create table student(id int, name varchar(30));
	create table classes(id int primary key not null auto_increment, name varchar(30));
	-- 下面是最简单的数据表的创建

人生苦短,我用Python--一个*农业大学计算机本科生的Python学习之路-数据库(第一天)

	desc student;
	desc classes;

人生苦短,我用Python--一个*农业大学计算机本科生的Python学习之路-数据库(第一天)

--练习
	--创建student表(id, name, age, height, weight, gender, class_id)
	create table student2(
		id int unsigned not null auto_increment primary key,
		name varchar(30),
		age tinyint unsigned default 0,
		height decimal(5, 2),
		weight decimal(7, 2),
		gender enum("男", "女", "中性", "保密") default "保密",
		class_id int unsigned
		);

人生苦短,我用Python--一个*农业大学计算机本科生的Python学习之路-数据库(第一天)

	-- 给表中插入数据
	insert into student2 values (0, "小艾", 25, 1.72, 64, "男", 1);
	-- 查看插入的数据
	select * from student2;

人生苦短,我用Python--一个*农业大学计算机本科生的Python学习之路-数据库(第一天)
修改表-添加字段

	-- alter table  表明 add 列名 类型
	alter table student2 add birthday datetime;

人生苦短,我用Python--一个*农业大学计算机本科生的Python学习之路-数据库(第一天)
人生苦短,我用Python--一个*农业大学计算机本科生的Python学习之路-数据库(第一天)

	--修改表-修改字段:不重命名阪
	alter table student2 modify birthday date;

人生苦短,我用Python--一个*农业大学计算机本科生的Python学习之路-数据库(第一天)

	--修改表-修改字段:重命名版
	alter table student2 change birthday birth date default "2000-01-01";

人生苦短,我用Python--一个*农业大学计算机本科生的Python学习之路-数据库(第一天)

	-修改表-删除字段
	--alter table 表名 drop 列名
	alter table student2 drop weight;

人生苦短,我用Python--一个*农业大学计算机本科生的Python学习之路-数据库(第一天)

	--删除表
	-- drop database 数据库名;
	-- drop table 数据表;
	drop table student2;

增删改查

	-- 增加
		-- 全裂插入
		-- insert [into] 表明 values(...)
		-- 主键字段 可以用 0 null default 来占位
		-- 向classes 表中插入一个班级
		insert into classes values(0, "大神班");
	-- 向student 表中插入一个学生信息
		insert into student2 values(0, "xiaoai", "1999-11-11", 19, 1.88, 2);
		insert into student2 values(null, "xiaoai", "1999-11-11", 19, 1.88, 2);
		insert into student2 values(default, "xiaoai", "1999-11-11", 19, 1.88, 2);

		-- 失败
		insert into student2 values(default, "xiaoai", "中性""1999-11-11", 19, 1.88, 2);

		-- 枚举中 的 小标从1开始 1---"男" 2--->"女"
		insert into student2 values(default, "小力", 20, 1, 1, "1999-11-11");


		-- 部分插入
		-- insert into 表名(1,...) values(1,...)
		insert into student2 (name, gender) values ("小巧", 2);
		insert into student2 (name, gender) values ("小巧", 2), ("貂蝉"3) ("吕布"4);
	-- 修改
	-- update 表名 set1=1,2=2, ... where 条件;
	update student2 set gender=1; --全部修改
	update student2 set gender=1 where name="小巧"; --只要name是小巧的全部修改
	update student2 set gender=1 where id=3; --只要id为3的 进行修改
	update student2 set age=22, gender=1 where id=3; --只要id为3 进行修改
	-- 查询基本使用
		-- 查询所有列
		-- select * from 表名;
		select * from student2;

		-- 条件查询
		select * feom student2 where name="小巧";  -- 查询name为小巧的所有信息
		select * feom student2 where id>3;  -- 查询用户id小于3的所有用户信息

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



		-- 可以使用as为列或表指定别名
		-- select 字段[as 别名], 字段[as 别名] from 数据表 where ...;
		select name as 姓名, gender as 性别 from student2;

		-- 字段的序列
		select gender as 性别, name as 姓名 from student2;
		select id as ***, gender as 性别, name as 姓名 from student2;

	-- 删除
		-- 物理删除
		-- delete from 表名 where 条件
		delete from student2;  -- 整个数据表里的所有数据全部删除
		delete from student2 where name ="小巧";


		-- 逻辑删除
		-- 用一个字段来表示 这条信息是否已经不能在使用了
		-- 给 student2 表添加一个 is_delete 字段 bit 类型
		alter table student2 add is_delete bit default 0;
		update student2 set is_delete-1 where id= 0;