一.昨日内容回顾

  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库操作、表操作、数据类型、完整性约束的更多相关文章

  1. python 全栈开发,Day61(库的操作,表的操作,数据类型,数据类型(2),完整性约束)

    昨日内容回顾 一.回顾 定义:mysql就是一个基于socket编写的C / S架构的软件 包含: ---服务端软件 - socket服务端 - 本地文件操作 - 解析指令(mysql语句) ---客 ...

  2. Python全栈开发之---mysql数据库

    1.数据库的安装和连接 #数据库安装 pip install PyMySQL #数据库操作 import pymysql db = pymysql.connect("数据库ip", ...

  3. Python全栈开发:Mysql(二)

    视图 视图是一个虚拟表(非真实存在),其本质是[根据SQL语句获取动态的数据集,并为其命名],用户使用时只需使用[名称]即可获取结果集,并可以将其当作表来使用. SELECT *FROM (SELEC ...

  4. Python全栈开发:Mysql(一)

    一.概述 1.什么是数据库 ? 答:数据的仓库,如:在ATM的示例中我们创建了一个 db 目录,称其为数据库 2.什么是 MySQL.Oracle.SQLite.Access.MS SQL Serve ...

  5. 巨蟒python全栈开发django6: FBV&CBV&&单表查询的其他方法

    练习CBV用法 截图中的action="/cbv/",应该是这样 上边红图,说明mysql有问题,需要重启一下 返回,输入的内容 @wrapper==>cbv=wrapper ...

  6. python 全栈开发,Day73(django多表添加,基于对象的跨表查询)

    昨日内容回顾 多表方案: 如何确定表关系呢? 表关系是在2张表之间建立的,没有超过2个表的情况. 那么相互之间有2条关系线,先来判断一对多的关系. 如果其中一张表的记录能够对应另外一张表的多条记录,那 ...

  7. Python 全栈开发【第0篇】:目录

    Python 全栈开发[第0篇]:目录   第一阶段:Python 开发入门 Python 全栈开发[第一篇]:计算机原理&Linux系统入门 Python 全栈开发[第二篇]:Python基 ...

  8. Python全栈开发【模块】

    Python全栈开发[模块] 本节内容: 模块介绍 time random os sys json & picle shelve XML hashlib ConfigParser loggin ...

  9. python 全栈开发之路 day1

    python 全栈开发之路 day1   本节内容 计算机发展介绍 计算机硬件组成 计算机基本原理 计算机 计算机(computer)俗称电脑,是一种用于高速计算的电子计算机器,可以进行数值计算,又可 ...

  10. Win10构建Python全栈开发环境With WSL

    目录 Win10构建Python全栈开发环境With WSL 启动WSL 总结 对<Dev on Windows with WSL>的补充 Win10构建Python全栈开发环境With ...

随机推荐

  1. struts2框架之请求参数(参考第二天学习笔记)

    获取请求参数 请求参数:表单中的数据,或者是超链接中的数据. 1. 得到request,再通过request来获取.2. 属性驱动 在Action中提供与表单字段名称相同的属性即可. 而一个名为par ...

  2. Loj 【CQOI 2006】简单题,mmp

    #10117. 「一本通 4.1 练习 2」简单题     题目描述 题目来源:CQOI 2006 有一个 nnn 个元素的数组,每个元素初始均为 000.有 mmm 条指令,要么让其中一段连续序列数 ...

  3. LabVIEW中下拉列表和枚举的区别(两点)

    第一:如图,在表示法上,下拉列表表示的数据范围要大,枚举只能是U32,U16, U8 第二:在vi的动态调用过程中,常用下拉列表,因为枚举控件不能动态的增加或者减少项目,而下拉列表则可以.

  4. linux中shell变量$#,$@,$0,$1,$2的含义解释 (转载)

    变量说明: $$Shell本身的PID(ProcessID)$!Shell最后运行的后台Process的PID$?最后运行的命令的结束代码(返回值)$-使用Set命令设定的Flag一览$*所有参数列表 ...

  5. [Linux]PHP-FPM与NGINX的两种通讯方式

    一.通过监听TCP端口通讯 php-fpm.d/www.conf ; The address on which to accept FastCGI requests. ; Valid syntaxes ...

  6. SwipeRefreshLayout详解和自定义上拉加载更多

    个人主页 演示Demo下载 本文重点介绍了SwipeRefreshLayout的使用和自定View继承SwipeRefreshLayout添加上拉加载更多的功能. 介绍之前,先来看一下SwipeRef ...

  7. Vue1.0到2.0变化

    一.生命周期 二.代码片段 在vue1.0中可以在template编写时出现: <template> <div>第一行</div> <div>第二行&l ...

  8. swift 实践- 08 -- UISegmentedControl

    import UIKit class ViewController: UIViewController { override func viewDidLoad() { super.viewDidLoa ...

  9. Confluence 6 代理和 HTTPS 详细配置指南链接

    详细配置指南 更多有关连接器示例,我们提供了一些按步骤配置的指南来帮助你启用 HTTPS 并正确配置你的代理. HTTPS: Running Confluence Over SSL or HTTPS  ...

  10. Confluence 6 附件存储文件系统的分级

    从 Confluence 3.0 开始,附件的存储方式有了重大的改变和升级.如果你是从 Confluence 2.10 及其早期版本升级上来的,请参考 Upgrading Confluence 页面中 ...