python中string数据库_Python 10 MySQL数据库(一)

内容概要:

1.数据库介绍

2.mysql数据库安装使用

3.mysql数据类型

4.mysql命令语句

5.事务

6.一对多、多对多

7.其他

一、数据库介绍

什么是数据库?

数据库(Database)就是按照数据结构来组织、存储和管理数据的仓库。由于数据保存在文件中访问速度较慢,所以一般使用数据库存储数据。

数据库的分类?

数据库分为关系数据库和非关系型数据库。关系型数据库(RDMS relationship databse management system)通过外键建立两张表之间的关系。

Mysql数据库

mysql是现在最流行的关系型数据库,他是开源的,支持大型的数据库,使用标准的SQL语句。

二、Mysql数据库安装

三、Mysql数据类型

Mysql中定义数据字段的类型对数据库的优化非常重要。

Mysql支持多种类型,大致可以分为三类:数值、字符串和日期/时间类型。

数值类型

类型大小范围(有符号)范围(无符号)用途

TINYINT

1 字节

(-128,127)

(0,255)

小整数值

SMALLINT

2 字节

(-32 768,32 767)

(0,65 535)

大整数值

MEDIUMINT

3 字节

(-8 388 608,8 388 607)

(0,16 777 215)

大整数值

INT或INTEGER

4 字节

(-2 147 483 648,2 147 483 647)

(0,4 294 967 295)

大整数值

BIGINT

8 字节

(-9 233 372 036 854 775 808,9 223 372 036 854 775 807)

(0,18 446 744 073 709 551 615)

极大整数值

FLOAT

4 字节

(-3.402 823 466 E+38,1.175 494 351 E-38),0,(1.175 494 351 E-38,3.402 823 466 351 E+38)

0,(1.175 494 351 E-38,3.402 823 466 E+38)

单精度 浮点数值

DOUBLE

8 字节

(1.797 693 134 862 315 7 E+308,2.225 073 858 507 201 4 E-308),0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308)

0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308)

双精度 浮点数值

DECIMAL

对DECIMAL(M,D) ,如果M>D,为M+2否则为D+2

依赖于M和D的值

依赖于M和D的值

小数值

字符串类型

类型大小用途

CHAR

0-255字节

定长字符串

VARCHAR

0-65535 字节

变长字符串

TINYBLOB

0-255字节

不超过 255 个字符的二进制字符串

TINYTEXT

0-255字节

短文本字符串

BLOB

0-65 535字节

二进制形式的长文本数据

TEXT

0-65 535字节

长文本数据

MEDIUMBLOB

0-16 777 215字节

二进制形式的中等长度文本数据

MEDIUMTEXT

0-16 777 215字节

中等长度文本数据

LONGBLOB

0-4 294 967 295字节

二进制形式的极大文本数据

LONGTEXT

0-4 294 967 295字节

极大文本数据

CHAR和VARCHAR类型类似,但它们保存和检索的方式不同。CHAR是定长,如果数据长度不够则会自动补充空格;VARCHAR只是规定了最大长度。

日期/时间类型

类型大小 (字节)范围格式用途

DATE

3

1000-01-01/9999-12-31

YYYY-MM-DD

日期值

TIME

3

'-838:59:59'/'838:59:59'

HH:MM:SS

时间值或持续时间

YEAR

1

1901/2155

YYYY

年份值

DATETIME

8

1000-01-01 00:00:00/9999-12-31 23:59:59

YYYY-MM-DD HH:MM:SS

混合日期和时间值

TIMESTAMP

4

1970-01-01 00:00:00/2037 年某时

YYYYMMDD HHMMSS

混合日期和时间值,时间戳

四、Mysql基础语法

管理Mysql的命令:

use 数据库名; #进入某个数据库,之后的操作只对这个数据库生效

show databases; #展示所有数据库

show tables; #展示当前数据库的所有表

show columns from 表名; #显示表的属性,如主键信息、是否为NULL,默认值等

desc 表名

show index from 表名; #显示表的详细索引信息

create database 库名; #创建数据库

drop database 库名; #删除数据库

表操作命令:

Mysql创建数据表

1 #创建表

2 create table table_name(column name, column type)3

4 #创建一张学生表

5 create table students(6 'sid'INT AUTO_INCREMENT PRIMARY KEY,7 'name' VARCHAR(50) NOT NULL,8 'age'INT NOT NULL,9 )engine=InnorDB DEFAULT charset=utf810

11 #查看表信息

12 desc student;

增删改查DML:

1 增 语法:2 INSERT INTO table_name ( field1, field2,...fieldN ) VALUES ( value1, value2,...valueN );3 INSERT INTO table_name VALUES(xxx,xxx,xxx),(xxx,xxx,xxx);

4

4 查 语法:5 SELECT column_name,column_name FROM table_name [WHERE Clause] [OFFSET M ][LIMIT N]6

7 改 语法:8 UPDATE table_name SET field1=new-value1, field2=new-value2 [WHERE Clause]9

10 删 语法:11 DELETE FROM table_name where stu_id=5;

12 DELETE FROM table_name # 清空整张表

alter命令

# 修改表结构1. 修改表名ALTER TABLE表名

RENAME 新表名;2. 增加字段ALTER TABLE表名ADD 字段名 数据类型 [完整性约束条件…],ADD 字段名 数据类型 [完整性约束条件…];3. 删除字段ALTER TABLE表名DROP字段名;4. 修改字段ALTER TABLE表名

MODIFY 字段名 数据类型[完整性约束条件…];ALTER TABLE表名

CHANGE 旧字段名 新字段名 旧数据类型[完整性约束条件…];ALTER TABLE表名

CHANGE 旧字段名 新字段名 新数据类型[完整性约束条件…];

create table t(id int unique,name char(10) not null);

#去掉null约束alter table t modify name char(10) null;

# 添加null约束alter table t modify name char(10) not null;

alter操作约束条件

create table t(id int unique,name char(10) not null);

# 去掉unique约束alter table t drop indexid;

# 添加unique约束alter table t modify id int unique;alter table t add index unique id

alter操作索引

# 添加外键

alerttable table_name add foreign key(column_name) referencestable_name(column_name);

# 删除外键alter table book drop foreign key fk_id;

alter操作外键

排序

select * from student order by age; #默认升序

select * from student order by age asc; #升序

select * from student order by age desc; #降序

like模糊查询

select * from student where name like '%abc'; #表示查询以abc结尾的数据

select * from student where name like '_abc_'; #表示查询中间有abc的数据

where用于分组前的条件筛选

#1:单条件查询SELECT emp_name FROMemployeeWHERE post='sale';

#2:多条件查询SELECT emp_name,salary FROMemployeeWHERE post='teacher' AND salary>10000;

#3:关键字BETWEEN AND

SELECT emp_name,salary FROMemployeeWHERE salary BETWEEN 10000 AND 20000;SELECT emp_name,salary FROMemployeeWHERE salary NOT BETWEEN 10000 AND 20000;

#4:关键字IS NULL(判断某个字段是否为NULL不能用等号,需要用IS)SELECT emp_name,post_comment FROMemployeeWHERE post_comment IS NULL;SELECT emp_name,post_comment FROMemployeeWHERE post_comment IS NOT NULL;SELECT emp_name,post_comment FROMemployeeWHERE post_comment=''; 注意''是空字符串,不是null

ps:

执行update employee set post_comment='' where id=2;

再用上条查看,就会有结果了

#5:关键字IN集合查询SELECT emp_name,salary FROMemployeeWHERE salary=3000 OR salary=3500 OR salary=4000 OR salary=9000;SELECT emp_name,salary FROMemployeeWHERE salary IN (3000,3500,4000,9000) ;SELECT emp_name,salary FROMemployeeWHERE salary NOT IN (3000,3500,4000,9000) ;

#6:关键字LIKE模糊查询

通配符’%’SELECT * FROMemployeeWHERE emp_name LIKE 'eg%';

通配符’_’SELECT * FROMemployeeWHERE emp_name LIKE 'al__';

where查询

聚合&分组  group by

having用于分组后的条件筛选

limit n; 表示查询前n行数据

distinct 去重

五、数据完整性约束

not null,unique,primary key,foregin key

六、事务

MySQL 事务主要用于处理操作量大,复杂度高的数据。比如说,在人员管理系统中,你删除一个人员,你即需要删除人员的基本资料,也要删除和该人员相关的信息,如信箱,文章等等,这样,这些数据库操作语句就构成一个事务.

只有使用InnorDB引擎时才支持事务,事务可以维持数据库的完整性,保证一批语句要么全部执行,要么全部不执行。

1 begin; #开始一个事务

2 insert into students (name) values(1);3 commit; #如果没出错则commit提交

4 rollback; #如果出错就回滚,这样相当于没有执行过命令

七、外键和多对多关系

创建外键关系:

1 create table classroom(2 'cid'INT AUTO_INCREMENT PRIMARY KEY3 );4

5 create table student(6 'name' VARCHAR(24) NOT NULL,7 'class_id'INT NOT NULL,8 foreign key(class_id) references classroom(id)9 );

如果在创建表时没有创建外键,也可以通过alert建立联系:

1 alert table student add foreign key(class_id) references classroom(id);

删除外键:

1 alert table student drop foreign key class_id;

多对多可以通过创建第三张表,分别创建两张表的外键来实现。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值