zoukankan      html  css  js  c++  java
  • 库表的增删改查

    操作文件夹(库)

    增删改查

    增
    create database 文件夹名;
    实列
    create database db1;   
    删除
    drop database 库名;
    实列
    drop database db1; 
    
    改
    #官方没有直接修改数据库名称的命令
    
    查
    use 库名
    show databases;  #查看所有文件夹名
    select user();  #查看当前用户名
    select database() 查看当前库
    show tables; #查看当前库中有多少张表 先切换
    

    操作表

    创建表

    创建表 更改表字段

    在学习表的创建时 必须先学习 表的数据类型 表约束

    #先创建一个库
    create database day01;
    # 先切换到文件夹下:use day01;
    show tables; #查看当前库中有多少张表 先切换
    # 创建表 要先切到库
    create table 表名(
    字段名1 类型[(宽度) 约束条件],
    字段名2 类型[(宽度) 约束条件],
    字段名3 类型[(宽度) 约束条件]
    );
    实列
    create table staff_info (
    id int,name varchar(50),
    age int(3),
    sex enum('male','female'),
    phone bigint(11),
    job char(5)
    );
    

    新增字段

    已经键表在添加新字段 默认最后
    alter table 表名 add (字段名称) (数据类型) (约束条件);
    实例
    alter table day01 add id int primary key auto_increment;
    添加name字段之后
    alter table 表名 add 要添加的字段名 数据类型 约束 after 某字段后面;
    实列
    alter table student10 add stu_num varchar(10) not null after name;     
    添加到最前面
    alter table 表名 add 要添加的字段名 数据类型 约束 first; 
    实列
    alter table student10 add sex enum('male','female') default 'male'  first; 
    

    删除表 或表某字段

    删
    drop table 表名;
    实列
    drop table userinfo;
    删除字段
    alter table 表名 drop 字段名称;
    实列
    alter table day01 drop id;
    

    添加与删除外键关系

    创建表完成之后,后添加外键关系
    alter table 表名 add foreign key(字段) references 另一个表名(字段);
    实列
    alter table book add foreign key(pid) references publish(id);
        
    删除外键关系
    先查看在删除
    alter table 表名 drop foreign key (外键名称);
    实列 外键名称 用show create table 表名; 查看
    alter table book drop foreign key book_ibfk_1;
    

    删除或修改被关联字段

    因为默认被关联的字段是严格模式,所以不可以删除,除非一开始就给他授权级联更新或删除 在表已经键好的情况下 我们必须先删除外键关系 在删除

    第一种情况表已经键好了

    我们必须先吧表关系解除
    场景:book表和publish表为多对一关系,book表的pid字段外键关联到了publish表的id字段
    1 查看外键关系名称: 就是book_ibfk_1
        show create table book; 
            | book  | CREATE TABLE `book` (
              `id` int(11) NOT NULL AUTO_INCREMENT,
              `name` char(10) DEFAULT NULL,
              `pid` int(11) DEFAULT NULL,
              PRIMARY KEY (`id`),
              KEY `pid` (`pid`),
              CONSTRAINT `book_ibfk_1` FOREIGN KEY (`pid`) REFERENCES `publish` (`id`)
            ) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 |
    
    
    2 删除外键关系
        alter table book drop foreign key book_ibfk_1(外键名称);
    3 删除字段
        alter table publish drop id(字段名称);
    4 添加字段
        alter table publish add id(字段名称) int(数据类型) primary key auto_increment(约束条件);
    
    5 创建表完成之后,后添加外键关系
        alter table book add foreign key(pid) references publish(id);
    

    外键名称

    指定的外键名称  可以随意更改  fk_t1_publish
    创建表时:
    create table t1(
        id int,
        pid int,
        constraint fk_t1_publish foreign key(pid) references publish(id);
    )
    创建表完成之后,后添加外键关系
        alter table book add constraint fk_t1_publish foreign key(pid) references publish(id);
    

    级联的几个模式

    严格模式(默认的)

    删除:从表记录不存在时,主表才可以删除。删除从表,主表不变
    更新:从表记录不存在时,主表才可以更新。更新从表,主表不变
    严格模式(默认的),外键有强制约束效果,被关联字段不能随意删除和修改
    

    cascade模式:

    删除:删除主表时自动删除从表。删除从表,主表不变
    更新:更新主表时自动更新从表。更新从表,主表不变
    外键有强制约束效果,**被关联字段删除或者修改,关联他的那么字段数据会随之删除或者修改
    

    实例

    foreign key(pid) references publish(id) on delete cascade on update cascade;
    

    set null模式:

    删除:删除主表时自动更新从表值为NULL。删除从表,主表不变
    更新:更新主表时自动更新从表值为NULL。更新从表,主表不变
    被关联字段删除时,关联他的字段数据会置成null
    

    实例

    foreign key(pid) references tt2(id) on delete set null
    补充:级联set null的用法和示例
    mysql> create table tt2(id int primary key auto_increment,name char(10));
    
    mysql> create table tt3(id int,pid int,foreign key(pid) references tt2(id) on delete set null);
    

    查询表结构 修改表名

    改表名
    alter table 旧表名 rename 新名字;
    实列
    alter table jbiao rename xbiao;
    
    
    查
    show tables;#查看当前库中有多少张表
    desc 表名;#查看表的结构,
    show create table 表名;#查看建表语句 更详细
    

  • 相关阅读:
    如果男人是计算机,女人是软件(在开发过程中的偶然随想)
    C/C++ 可变参数函数的原理和应用
    Python学习记录Hello Word
    Unity 把数字,英文图片变成字体
    unity+Android+PC加载本地图片
    Python学习记录安装
    Android学习 问题与答案
    Android 第三方 APK 包的静默安装
    Android学习 问题与答案 (2)
    JNI 之 HelloWorld
  • 原文地址:https://www.cnblogs.com/saoqiang/p/12388378.html
Copyright © 2011-2022 走看看