• Python day 41:数据库的增删改查初级操作/外键(一对多)


    ## 数据库的操作:
    
    ```python
    增加:create database 数据库名称;
        例:create database db1;
    删除:drop database 数据库名称;
        drop database db1;
    修改: 没有专门的的指令,只能删了重建
    查询: show databases;
    使用: use 数据库名;  #对表/列/记录的操作都必须先use 数据库名
        例: use db1;
    
    ```
    
    ## 数据表的操作:
    
    ```python
    #首先 use 数据库名称;
    创建:create table 表名(列名1 列类型 ,列名2 列类型);
        例:create table t1( id int auto_increment primary key,name char(32) not null default "")engine=Innodb charset=utf8;
    添加:insert into 表名(列名1,列名2) values(值1,值2);
        例:insert into t1 (id,name) values (1,"owen")
    查询:show tables;
        desc 表名; 查看表的结构
        show create table 表名;查看表的创建过程;#以上三个查看表本身
        select 列名 from 表名;#查看表中数据
        例: select * from t1;
    删除:drop table 表名;
        drop table t1;(删除数据表所有数据,实际生产用不到该命令)
    修改:alter table 表名 change 原列名 新列名 新列类型
          例: alter table t1 change name  username varchar(16)
        alter table 表名 add 新列  新列类型
        例:alter table t1 name char(16);
        alter table 表名 drop 列名
        例:alter table t1 drop name;
    
    列类型:                    
    a. 数值型
            create table t4 (id  unsigned mediumint auto_increment primary key, name char(32)  not null  default '',pwd  char(32)  not null  default '')engine=Innodb charset=utf8;
        tinyint : 范围: 有符号: -128到127无符号: 0 到 255  unsigned
        smallint范围: 有符号: -32768到32767无符号: 0 到 65535  unsigned 
        mediumint范围:有符号: -8388608到8388607无符号: 0 到 16777215  unsigned int
        bigint区别: a. 取值范围不一样, 根据自己公司的业务来去选择
                   b. 无符号和有符号的意思
         float(M,D) 浮点型
        decimal(M,D) 定点型 比float更加的精准
        例如: 3.1415151519868789789
        float: 3.141515000000000000
        decimal : 3.1415151519868789789
        126.35:M:小数总共多少位 decimal(5, )
               D:小数点后面几位 decimal(5, 2)
        使用场景:比如 说存 salary 工资 : 6000.23 decimal(,2)
        b. 字符串类型
        char : 定长 char(32)  这一列的值就是32  优点: 速度快  缺点: 浪费
        archar : 变长 varchar(32) 优点: 不浪费, 节省空间  缺点: 速度慢
        根据自己公司的业务来去选择:
        create table userinfo (id  unsigned mediumint auto_increment primary key, name varchar(128)  not null  default '',pwd  char(32)  not null  default '',
        create_time  datetime not null default  '1970-01-01 00:00:00')engine=Innodb charset=utf8;
        一般情况下, 如果没有100%的把握, 都是用varchar()
        text: 文本  范围比较大, 如果存储大量字符的话, 可以使用这个字段
        c. 时间类型
        date 2019-6-12
        推荐使用datetime
      
    ```
    
    ## 数据行的操作:
    
    ```python
    增:
        insert into 表名 (列名1,列名2) values (id,name);
        上面已介绍;
    查询:
        select 列名 from 表名;将表中所有数据列出
    删:
        delete from 表名;将表中的所有的 数据删除掉, 再次添加的时     候, 继续会延续上一个 ID
        truncate 表名(t3);    将表中的所有的 数据删除掉, 再次添加         的时候, ID 会重新开始
    修改:
        update 表名 set username="...";
        例:update t3 set username='zekai';
           update t3 set username='xxxx'  where  id=3;
           update t3 set username='xxxx', pwd='xxxxx'  where           id=3;
    ```
    
    ## 外键:
    
    ```python
    问题:
        1. 数据重复
        2. 如果 部门过长的话, 太占用空间
    解决方法:重新设计一张表, 这张表 中存放部门的相关信息
    部门表案例:
        create table department(id int auto_increment primary key,department_name varchar(16) not null default "")engine=Innodb charset=utf8;
        insert into department (depart_name) values ("公关部"),("销售部"),("财务部");
        create table userinfo(id int auto_increment primary key,name varchar(16) not null default "",depart_id int not null default "",constraint userinfo_depart foreign key (depart_id) references department(id))engine=Innodb charset=utf8;
        insert into userinfo(name,depart_id) values ("owen",1)
        '注意:depart_id的值,必须是表department中列depart_name有的值!'
        '创建多个外键的时候,名称不能一样
        以上是 一对多 外键情况
    ```
    
    
    
    ​    
  • 相关阅读:
    省市联动js
    二级联动angularjs
    imageloader图片基本加载
    Gson解析json数组
    简单的异步处理AsyncTask
    网络请求HttpURLConnection
    图片加载框架ImageLoader
    Xlistview
    Image-Universal-Loader
    cropper.js裁剪图片的使用
  • 原文地址:https://www.cnblogs.com/huhongpeng/p/11042331.html
Copyright © 2020-2023  润新知