zoukankan      html  css  js  c++  java
  • day46 Pyhton 数据库Mysql 03

    一内容回顾

      存储引擎:主要描述的是数据存储的不同方式

      innodb 支持事务支持外键行级锁聚焦索引

      myisam 不支持事务不支持外键表级锁非聚焦索引

      memory 只能在内存中存储表数据存取速度快断电数据丢失

      blackhole 无论写入什么数据都不存储在表中但是照常生成binlog日志用于数据的分流

      

      表结构的增删改查

      创建表结构

        create table 表名 (字段名  字段类型[(宽度) 约束条件],...)

      查看表结构

        desc  表名;

        show create table 表名G

      mysql 中的数据类型

        数字

          有多种表示数字的数据类型,分为小数和整数

          整数根据不同的数据类型,能表示的数据范围也不同

          小数根据不同的数据类型,对数据小数位的精准控制不同

          定义整数类型的时候,后面的宽度,约束的不是数字的位数,而是显示的宽度

         # int(11)
            # float(7,2),一共7位数,小数部分占2位,整数部分占5位
            # bigint  能放更大的数据
            # double  比float更精准(255,30)
            # decimal 超级精准,默认为整数,(65,30)
     # 字符串
            # char(11)    定长 浪费空间存取速度快(用户名性别手机号银行卡号身份证密码车牌号)
            # varchar(11) 不定长节省空间存取速度慢(地址评论)
     # 时间
            # date      年月日
            # datetime  年月日时分秒 可以为空
            # timestamp 年月日时分秒 不能为空 默认值是当前时间 update的时候更新时间字段 能表示的时间范围短
            # insert into 表 values ('2018-12-18 09:06:23')
            # insert into 表 values ('2018/12/18 09+06+23')
            # insert into 表 values ('20181218090623')
            # insert into 表 values (20181218090623)
    # 集合和枚举
            # set 多选 自动去重,不在set中的不写入表
            # enum单选 不在enum单选中的不写入表

    二今日内容

    # 一 表结构操作
    # 表结构的操作
    # 修改表结构
    # 删除表结构
    
    # create table 表名 (字段名 字段类型[(宽度) 约束条件],...)
    # 约束条件
    
    # 二 数据操作
    # 增 insert数据
    # 删 delete数据
    # 改 update数据
    # 查 select数据
        # 单表查询
        # 连表查询

    表的操作

    一修改表结构
        # 增加字段
        # 1. alter table 表名 add 字段 新的数据类型 ;
        # 2. alter table 表名 add 字段 新的数据类型 first;
        # 3. alter table 表名 add 字段 新的数据类型 after 某字段;
    
        # 删除字段
        # 1. alter table 表名 drop 字段;
    
        # 修改字段
        # 1. alter table 表名 modify 字段 新的数据类型;
        # 2. alter table 表名 modify 字段 数据类型 first;
        # 3. alter table 表名 modify 字段 数据类型 after 某字段;
    
        # 1. alter table 表名 change 旧字段 新字段 数据类型;
        # 2. alter table 表名 change 字段 字段 数据类型 first;
        # 3. alter table 表名 change 字段 字段 数据类型 after 某字段;
    
    # 二删除表结构
        # drop table 表名;

    约束条件

    # 什么是约束
    # not null    不能为空的
    # unique      唯一 = 不能重复
    # primary key 主键 = 不能为空 且 不能重复
    # foreign key 外键约束
    
    # 为什么要约束
    # 是因为一个表中的数据要想完整规范,就必须对一些字段有基础的约束
    # 一般情况下,我们都会根据程序的需求个特点对数据库进行约束
    # 在你的开发生涯中,你应该对数据有一个基础的判断
    
    # 在mysql中不区分大小写
    # 一个关键字 :NULL null关键字 表示 空(相当于PYTHON中的None)
    
    
    # 创建表
    # create table 表名 (字段名 数据类型(宽度) 约束条件,)
    
    # 约束一 not null
    # create table t (id int not null,
    #                 sex enum('male','female') not null default 'male')
    
    # 约束二 unique 唯一,允许多个字段为null
    # 设置某一个字段的内容必须是唯一的
    # create table t3 (id int unique);   # 你设置了唯一,就不能插入两个相同的内容 测试:除了null之外
    # create table t3 (id int not null unique);  # 你设置了唯一+非空,就不能插入两个相同的内容,也不能插入NULL,就相当于设置了一个主键primary key
    # create table t3 (id int, name char(12), unique(id),unique(name));
    # create table t4 (pid int, pname char(12),ip char(15),port int,unique(ip,port));
    # create table t4 (pid int, pname char(12),
                    # ip char(15) not null,
                    # port int not null ,
                    # unique(ip,port));
    
    # 记录每一个程序的信息
    # pid   程序名     ip地址          端口号
    # 111   pycharm
    # 123   pycharm
    # 234   mysqld    192.168.11.44    3306
    # 234   mysqld    192.168.11.22    3306
    # 235   kugou     192.168.11.44    8000
    
    # 两个或者多个字段的内容 = 联合唯一
    
    # 约束三
        # 主键 每一张表只能有一个主键
        # primary key = not null + unique
    # create table t5 (id int primary key);
    # 能设置多个主键么 ? 不能
    # create table t5 (id int primary key,name char(12) primary key);
    # 能不能设置多个非空 + 唯一 ? 能
    # create table t6 (id int not null unique,name char(12) not null unique);
    # 联合主键
    # create table t7 (pid int, pname char(12),
    #                 ip char(15),
    #                 port int,
    #                 primary key(ip,port));
    
    # auto_increment 自增
    # create table t8 (id int unique auto_increment,name char(12));
    # create table t9 (id int primary key auto_increment,name char(12));
    # 对于自增id来说,删除数据并不会影响自增
    # 设置为自增,用户最好不要自己插入这个字段
    
    # 约束四 外键
    # 部门id  部门名称 部门办公室号
    # create table department (id int unique,dep_name char(20),dep_num int);
    # alter table department modify id int unique;
    
    # 员工id   name  年龄  工资  部门id(外键)
    # create table employee (id int,name char(12),age int,salary int,dep_id int,
    #                        foreign key(dep_id) references department(id));
    
    # insert into department (id,dep_name) values
    # (1,'教质部'),
    # (2,'技术部'),
    # (3,'人力资源部');
    
    
    # 如果添加了外键约束,外键是employee(dep_id),那么employee(dep_id)和department (ide)都会受到约束
    # update department set id = 3 where id = 2;
    
    
    # create table employee2 (id int,name char(12),age int,salary int,dep_id int,
    #                        foreign key(dep_id) references department(id) on delete cascade on update cascade );
    
    # insert into department (id,dep_name) values
    # (3,'人力资源部');
    #
    # insert into employee2 (id,name,dep_id) values
    # (1,'yuan',1),
    # (2,'nezha',2),
    # (3,'egon',2),
    # (4,'alex',2),
    # (5,'wusir',3),
    # (6,'李沁洋',3),
    # (7,'皮卡丘',3),
    # (8,'程咬金',3),
    # (9,'程咬银',3)
    # ;
    
    
    # 约束 4个
    # not null     # 不允许为空
        # default  # 设置默认值
    # unique       # 唯一,不能约束null
                   # 联合唯一
        # auto_increment # 自增
    # primary key  # 主键 = not null + unique (同一张表不能有两个主键)
                   # 联合主键
    # foreign key  # 本表中的字段关联另一张表中的"唯一"字段 ,本表中的字段是 外键,外表中的字段必须唯一/主键
    
    # create table 表名 (
    #     字段名1 字段类型(宽度) not null default 默认值,
    #     字段名2 字段类型(宽度) not null unique,
    #     字段名3 字段类型(宽度) primary key,
    #     字段名4 int(宽度) unique auto_increment,
    # )
    
    
    # create table 表名 (
    #     字段名1 字段类型(宽度) not null,
    #     字段名2 字段类型(宽度) not null,
    #     字段名3 字段类型(宽度),
    #     字段名4 int(宽度),
    #     unique(字段名2),
    #     primary key(字段名3),
    #     unique(字段名4) auto increment,
    # )
    
    # create table 表名 (
    #     字段名1 字段类型(宽度) not null,
    #     字段名2 字段类型(宽度) not null,
    #     字段名3 字段类型(宽度),
    #     字段名4 int(宽度) auto increment,
    #     unique(字段名1,字段名2),
    #     primary key(字段名3,字段名4),
    # );
    
    # create table 表名(
    #     字段名1 字段类型(宽度) not null,
    #     字段名2 字段类型(宽度) not null,
    #     外键名 字段类型(宽度),
    #     foreign key (外建) references 外表(外表中的字段)
    #     on delete cascade
    #     on update cascade,
    #     primary key(字段名1)
    # )
    
    # 添加主键
    # alter table 表名 modify 字段名 类型(宽度) primary key;
  • 相关阅读:
    EXE、DLL和OCX文件的最佳压缩工具ASPack
    mysql忘记帐号密码 解决办法。
    vs2010 C++ 静态编译(解决:程序在别人的机子运行不了,缺少mfc100.dll, xxx100d.dll等的解决方法)
    去掉word每个标题前都有个小黑点 附word2003与2007方法
    struts2 中jsp页面replace的使用
    struts2 改变portlet windowState
    .net 知识补充 注意点
    广义表(1)
    字符串匹配(kmp)
    二叉排序树
  • 原文地址:https://www.cnblogs.com/pythonz/p/10138538.html
Copyright © 2011-2022 走看看