python全栈开发day54-mysql库操作、表操作、数据类型、完整性约束
一.昨日内容回顾
1、mysql的安装
1).解压文件 添加环境变量bin
2).初始化mysql生成数据data文件夹:
mysqld --initialize-insecure
3).mysqld 启动服务
4).mysql -u root -p 客户端连接
//将mysql服务制作成windows服务
1)mysqld --install
2) mysqld --remove
net start mysql # 启动服务
net stop mysql # 停止服务
2、 mysql的基本管理
1) 查看当前用户
select user();
2) 设置密码(现在已不用这种方式)
mysqladmin -u root -p'123' password "456"
3) 忘记密码的登录方式
(1) 以管理员身份运行终端,停止net stop mysql服务
(2) 执行跳过授权命令 启动mysql服务
mysqld --skip-grant-tables
(3) 更改密码
update mysql.user set authentication_string = password('') where User='root';
(4) 刷新权限,执行命令
flush privileges;
(5) 退出mysql exit
(6) 服务端kill mysql进程
tasklist|findstr mysql
taskkill /F /PID 进程号
(7) 启动服务进行mysql新密码登录即可。
4) 统一字符编码 mysql> \s 查看编码信息
在C:\mysql-5.6.40-winx64文件下创建my.ini文件
#mysql5.5以上:修改方式为
[mysqld]
character-set-server=utf8
collation-server=utf8_general_ci
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
my.ini
二.今天内容总结
1、mysql库操作crud
1) 增
create database db1 charset utf8;
2) 查
show create database db1; # 查看数据库
show databases; # 查看当前库
select database(); # 查看所在的库。
3) 改
alter database db1 charset gbk
4) 删
drop database db1;
5) 数据库的命名规则:
可以由字母、数字、下划线、@、#、$
区分大小写
唯一性
不能使用关键字如 create select
不能单独使用数字
最长128位
# 基本上跟python或者js的命名规则一样
数据库的命名规则
6) 了解DDL、DML、DCL
SQL语言主要用于存取数据、查询数据、更新数据和管理关系数据库系统,SQL语言由IBM开发。SQL语言分为3种类型:
1、DDL语句 数据库定义语言: 数据库、表、视图、索引、存储过程,例如CREATE DROP ALTER 2、DML语句 数据库操纵语言: 插入数据INSERT、删除数据DELETE、更新数据UPDATE、查询数据SELECT 3、DCL语句 数据库控制语言: 例如控制用户的访问权限GRANT、REVOKE
DDL、DML、DCL
2、mysql表操作
1 ) 操作表
# 增
use db1
create table t1(id int,name char);
# 查
show create table t1; # 查看当前的这张t1表
show tables; # 查看所有的表
desc t1; # 查看表的详细信息
# 改
alter table t1 modify name char(6) # 改name的数据类型显示宽度,更改字段属性
alter table t1 change name Name char(7) # 改字段name为Name 后边也要加属性
alter table t1 add 新列名 int
alter table t1 drop 列名;
alter table t1 add i int after c;
alter table t1 add i int first; # 插入在第一列处
alter table t1 alter i set default 1000; # 设置默认值
alter table t1 alter i drop default; # 删除列默认值
alter table t1 rename to t2; # 修改表名
alter table t7 add primary key(id); # 修改主键
alter table t7 change id id int auto_increment; # 增加auto_increment 属性
alter table user add constraint fk foreign key(idept_d) references dept(id) on delete cascade on update cascade; # 增加外键、
alter table user drop foreign key fk;
# 删
drop table tb1 # 删除表tb1
# 复制表
方式一:create table b1 select * from db2.a1; # 复制结构和数据;
方式二:create table b1 select * from db2.a1 where 1>2; # 仅复制表结构;
方式三:create table b1 like db2.a1; # 仅复制表结构。
2) 操作表内容
# 增 插入内容
insert into tb1 values(1,'kack'),(2,'merry');
# 查
select id,name from tb1;
select * from db1.tb1;
# 改
update db1.t1 set name ='alex' where id =2;
# 删
delete from t1;
delete from t1 where id =2;
3、mysql数据类型
1) 数值类型
整型:tinyinit int bigint
小数:
float :在位数比较短的情况下不精准
double :在位数比较长的情况下不精准
0.000001230123123123
存成:0.000001230000 decimal:(如果用小数,则用推荐使用decimal)
精准
内部原理是以字符串形式去存
数值型
单精度:float(M,D) 255 30 四字节 32 1 8 23 7
双精度:double(M,D) 255 30 八字节 64 1 11 52 16
dec: DEC(M,D) 65,30
2) 日期类型
#2. 字符串:
char(10):简单粗暴,浪费空间,存取速度快
root存成root000000
varchar:精准,节省空间,存取速度慢 sql优化:创建表时,定长的类型往前放,变长的往后放
比如性别 比如地址或描述信息 >255个字符,超了就把文件路径存放到数据库中。
比如图片,视频等找一个文件服务器,数据库中只存路径或url。
语法:
YEAR
YYYY(1901/2155) DATE
YYYY-MM-DD(1000-01-01/9999-12-31) TIME
HH:MM:SS('-838:59:59'/'838:59:59') DATETIME YYYY-MM-DD HH:MM:SS(1000-01-01 00:00:00/9999-12-31 23:59:59 Y) TIMESTAMP YYYYMMDD HHMMSS(1970-01-01 00:00:00/2037 年某时)
日期
3) 字符类型
length() 查字节长度、char_length() 查字符长度
char 和varvhar的区别:
char:
字符长度范围:0-255(一个中文是一个字符,是utf8编码的3个字节)
存储:定义多长个字符存多长字符,不足补空格,超出报错
查询:默认去掉尾部空格,除非设置SQL模式:SET sql_mode = 'PAD_CHAR_TO_FULL_LENGTH'; 查询sql的默认模式:select @@sql_mode;
varchar:
字符长度范围:0-65535(如果大于21845会提示用其他类型 。mysql行最大限制为65535字节,字符编码为utf-8:https://dev.mysql.com/doc/refman/5.7/en/column-count-limit.html)
存储:有多少字符存多少字符,空格也算
查询:有多少查多少,空格也算。
4) 枚举和集合类型
enum 单选 只能在给定的范围内选一个值,如性别sex male/female
set 多选 在给定的范围内可以选择一个或一个以上的值(爱好1,爱好2.。。。。)
mysql> create table consumer(
-> id int,
-> name varchar(50),
-> sex enum('male','female','other'),
-> level enum('vip1','vip2','vip3','vip4'),#在指定范围内,多选一
-> fav set('play','music','read','study') #在指定范围内,多选多
-> );
Query OK, 0 rows affected (0.03 sec) mysql> insert into consumer values
-> (1,'赵云','male','vip2','read,study'),
-> (2,'赵云2','other','vip4','play');
Query OK, 2 rows affected (0.00 sec)
Records: 2 Duplicates: 0 Warnings: 0 mysql> select * from consumer;
+------+---------+-------+-------+------------+
| id | name | sex | level | fav |
+------+---------+-------+-------+------------+
| 1 | 赵云 | male | vip2 | read,study |
| 2 | 赵云2 | other | vip4 | play |
+------+---------+-------+-------+------------+
rows in set (0.00 sec)
4、mysql完整性约束
用于保证数据的完整性和一致性。
PRIMARY KEY # 标识改字段为该表的主键,可以唯一的标识记录
FOREIGN KEY # 标识该字段为该表的外键
NOT NULL #标识该字段不能为空
UNIQUE KEY # 标识该字段值为唯一的
AUTO_INCREMENT # 标识该字段的值自动增长(整数类型,而且为主键)
DEFAULT # 为该字段设置默认值
UNSIGNED # 无符号
ZEROFILL # 使用0填充
1) not null与default
not null 不能为空,但是设置了default后可以不设置。
2) unique单列唯一和联合唯一
create table t1(
id int unique,
name char(10) unique);
create table t2(
id int ,
name char(10),
unique(id),
unique(name));
mysql> create table services(
-> id int,
-> ip char(15),
-> port int,
-> unique(id),
-> unique(ip,port)
-> );
3) primary key
单列主键、多列主键。相当于 not null 和unique
4) auto_increment
delete from t1; #如果有自增id,新增的数据,仍然是以删除前的最后一样作为起始。
truncate table t1;数据量大,删除速度比上一条快,且直接从零开始。
5) foreign key
create table user(
id int primary key,
name char(10) not null,
dpt_id int not null,
constraint fk_dep foreign key(dpt_id) references dep(id)
on delete cascade
on update cascade
); create table dep(
id int primary key,
name char(10) not null);
关联外键
三.预习和扩展
python全栈开发day54-mysql库操作、表操作、数据类型、完整性约束的更多相关文章
- python 全栈开发,Day61(库的操作,表的操作,数据类型,数据类型(2),完整性约束)
昨日内容回顾 一.回顾 定义:mysql就是一个基于socket编写的C / S架构的软件 包含: ---服务端软件 - socket服务端 - 本地文件操作 - 解析指令(mysql语句) ---客 ...
- Python全栈开发之---mysql数据库
1.数据库的安装和连接 #数据库安装 pip install PyMySQL #数据库操作 import pymysql db = pymysql.connect("数据库ip", ...
- Python全栈开发:Mysql(二)
视图 视图是一个虚拟表(非真实存在),其本质是[根据SQL语句获取动态的数据集,并为其命名],用户使用时只需使用[名称]即可获取结果集,并可以将其当作表来使用. SELECT *FROM (SELEC ...
- Python全栈开发:Mysql(一)
一.概述 1.什么是数据库 ? 答:数据的仓库,如:在ATM的示例中我们创建了一个 db 目录,称其为数据库 2.什么是 MySQL.Oracle.SQLite.Access.MS SQL Serve ...
- 巨蟒python全栈开发django6: FBV&CBV&&单表查询的其他方法
练习CBV用法 截图中的action="/cbv/",应该是这样 上边红图,说明mysql有问题,需要重启一下 返回,输入的内容 @wrapper==>cbv=wrapper ...
- python 全栈开发,Day73(django多表添加,基于对象的跨表查询)
昨日内容回顾 多表方案: 如何确定表关系呢? 表关系是在2张表之间建立的,没有超过2个表的情况. 那么相互之间有2条关系线,先来判断一对多的关系. 如果其中一张表的记录能够对应另外一张表的多条记录,那 ...
- Python 全栈开发【第0篇】:目录
Python 全栈开发[第0篇]:目录 第一阶段:Python 开发入门 Python 全栈开发[第一篇]:计算机原理&Linux系统入门 Python 全栈开发[第二篇]:Python基 ...
- Python全栈开发【模块】
Python全栈开发[模块] 本节内容: 模块介绍 time random os sys json & picle shelve XML hashlib ConfigParser loggin ...
- python 全栈开发之路 day1
python 全栈开发之路 day1 本节内容 计算机发展介绍 计算机硬件组成 计算机基本原理 计算机 计算机(computer)俗称电脑,是一种用于高速计算的电子计算机器,可以进行数值计算,又可 ...
- Win10构建Python全栈开发环境With WSL
目录 Win10构建Python全栈开发环境With WSL 启动WSL 总结 对<Dev on Windows with WSL>的补充 Win10构建Python全栈开发环境With ...
随机推荐
- struts2框架之请求参数(参考第二天学习笔记)
获取请求参数 请求参数:表单中的数据,或者是超链接中的数据. 1. 得到request,再通过request来获取.2. 属性驱动 在Action中提供与表单字段名称相同的属性即可. 而一个名为par ...
- Loj 【CQOI 2006】简单题,mmp
#10117. 「一本通 4.1 练习 2」简单题 题目描述 题目来源:CQOI 2006 有一个 nnn 个元素的数组,每个元素初始均为 000.有 mmm 条指令,要么让其中一段连续序列数 ...
- LabVIEW中下拉列表和枚举的区别(两点)
第一:如图,在表示法上,下拉列表表示的数据范围要大,枚举只能是U32,U16, U8 第二:在vi的动态调用过程中,常用下拉列表,因为枚举控件不能动态的增加或者减少项目,而下拉列表则可以.
- linux中shell变量$#,$@,$0,$1,$2的含义解释 (转载)
变量说明: $$Shell本身的PID(ProcessID)$!Shell最后运行的后台Process的PID$?最后运行的命令的结束代码(返回值)$-使用Set命令设定的Flag一览$*所有参数列表 ...
- [Linux]PHP-FPM与NGINX的两种通讯方式
一.通过监听TCP端口通讯 php-fpm.d/www.conf ; The address on which to accept FastCGI requests. ; Valid syntaxes ...
- SwipeRefreshLayout详解和自定义上拉加载更多
个人主页 演示Demo下载 本文重点介绍了SwipeRefreshLayout的使用和自定View继承SwipeRefreshLayout添加上拉加载更多的功能. 介绍之前,先来看一下SwipeRef ...
- Vue1.0到2.0变化
一.生命周期 二.代码片段 在vue1.0中可以在template编写时出现: <template> <div>第一行</div> <div>第二行&l ...
- swift 实践- 08 -- UISegmentedControl
import UIKit class ViewController: UIViewController { override func viewDidLoad() { super.viewDidLoa ...
- Confluence 6 代理和 HTTPS 详细配置指南链接
详细配置指南 更多有关连接器示例,我们提供了一些按步骤配置的指南来帮助你启用 HTTPS 并正确配置你的代理. HTTPS: Running Confluence Over SSL or HTTPS ...
- Confluence 6 附件存储文件系统的分级
从 Confluence 3.0 开始,附件的存储方式有了重大的改变和升级.如果你是从 Confluence 2.10 及其早期版本升级上来的,请参考 Upgrading Confluence 页面中 ...