python编程快速上手(持续更新中…)
概念
数据库概念
一些特殊格式的文件的集合
数据库作用
用来存储各种数据
数据库的使用优势
持久存储、存取效率高、支持可扩展
数据库分类和特点
关系数据库
基于关系模型建立,用二维表进行数据存储的数据
非关系数据库
mangondb.redis
数据库管理系统(DBMS)
数据文件集合
数据服务端
数据客户端
关系型数据库管理系统: RDBMS
-
SQL
- 作用: 客户端跟服务端通信的 特殊 “语言”
- 含义:结构化查询语言
- 分类:
- DQL 数据查询语言,用来查询
- DML 数据操作语言,用来增删改查
- DDL 数据定义语言,创建、删除
-
数据库的核心元素
- 数据库: 数据库系统
- 数据表: 二维表,(行、列)
- 记录(二维表的一行,要求数据要完整)
- 字段(二维表的列,要求一列的数据类型要一致)
-
数据保存的流程
- 创建数据库 --> 创建数据表—>字段 —> 保存数据
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
-
客户端连接服务器(*)
sudo apt-get install mysql-client
-
图形化工具Navicat
-
命令行连接
-
可以看到密码
mysql -u用户名 -p密码
回车
-
不可以看到密码
mysql -u用户名 -p
输入密码
回车
-
-
命令行退出: exit 或者 quit
-
数据完整性和约束
完整性的作用: 保证数据的正确性
实体完整性
主键约束:不能为空,也不能重复 primary key
唯一约束:能为空,但是不能重复 unique key
域完整性约束
非空约束: 该字段信息不能为空 not null
默认约束:这个字段可以设置默认值 default
参照完整性
外键约束: 建立表和表外键的关系 foreign key
用户定义完整性
字段的值必须是设定的范围之内 sex 男女
客户端Navicat使用
新建连接
选择编码“utf8”,排序规则:utf8-bin,点击“确认”
创建库
创建表
保存,填入表名“classes”
修改表
右键,设计表
表记录操作
双击表名,输入记录
- 添加记录
- 删除记录
改 双击记录
表转储
转储:表名,右键,转储sql文件
执行sql,运行SQL文件
用户
root用户,改为%,可实现远程ip访问
数据类型
选择合适的类型保存数据,好处:
1)节省存储空间
2)提升查询效率
数值
整型:int tinyint
浮点型
float(6) double(16) decimal(M,D)
float(5,2) 总共5个数字,2位小数
精确价格选用decimal
字符串
Char(255)/varchar(65535)/tinytext(255)/text(65535)
/mediumtext(16777215)/longtext(49838332323)
char与varchar区别
Char长度固定
Utf8 占3个字符
字符串选择
能用varchar不用text
枚举
Enum最多65535
时间类型
date 年月日
datetime 年月日时分秒 1000年 5字节
timestamp 年月日时分秒 1970年 4字节
SQL命令
登录与退出数据库
cmd
mysql -uroot -p
root
查询版本号
select version();
当前时间
select now
数据库操作
show databases; 查看数据库
create database 数据库名;
drop database数据库名;
use 数据库名;
select database(); 显示当前数据库
show create database 数据库名称 显示建表语句
创建数据库
create database python1 charset=utf8;
表结构创建(DDL)
show tables; 查看表
创建表
create table classes(
id int unsigned primary key auto_increment,
name varchar(10) not null,
num tinyint
);
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
);
查看表结构
desc classes;
查看创表语句+格式化
show create table students \G:
表结构修改(DDL)
增加生日表
alter table students add bithday datetime;
重命名
alter table students change bithday birthday datetime;
修改类型
alter table students modify birthday date not null;
删除字段
alter table students drop birthday;
删除表
drop table students
表数据操作-增删改查
set character_set_client=gbk;
set character_set_results=gbk;
查询select
查询所有
select * from classes
select * from students
条件where
select * from students where name=‘二狗子’;
别名as, 不加引号
select id as ‘编号’, name as ‘名称’ from students where name=‘二狗子’;
插入记录insert
insert into classes values(1,‘python20’,78);
自增长,可以忽略
insert into classes values(null,‘python21’,78);
insert into students values(null, ‘司马二狗’, 18, 1.78, ‘妖’, 1, ‘2001-12-12’);
列名
insert into students(id, name) values(null, ‘狗胜’);
多行
insert into students values(null, ‘二狗子’, 18, 1.78, ‘妖’, 1, ‘2001-12-12’), (null, ‘二狗子’, 18, 1.78, ‘妖’, 1, ‘2001-12-12’),(null, ‘狗蛋’, 18, 1.78, ‘男’, 1, ‘2001-12-12’),(null, ‘狗杂种’, 18, 1.78, ‘女’, 1, ‘2001-12-12’);
修改update
update students set age=28;
条件
update students set age=28 where name=‘狗杂种’;
多字段
update students set age=19,gender='男’where name=‘二狗子’;
逻辑删除
alter table students add is_delete bit default 0;
update students set is_delete = 1 where id = 3;
数据库备份与恢复
导出库:(需要管理员身份运行cmd)
mysqldump -uroot -p python1 > d:\python1 .sql
导入表(先删除库,再创建python1库)
mysql -uroot –p python1 < d:\students.sql
Navicat再次刷新,可见