• 库 表 表内容 增删改查


    操作文件夹(库)***

    增删改查

    增
    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 旧表名 rename 新名字;
    实列
    alter table jbiao rename xbiao;
    
    
    查
    show tables;#查看当前库中有多少张表
    desc 表名;#查看表的结构,
    show create table 表名;#查看表结构 另一种形式
    

    新增字段

    已经键表在添加新字段 默认最后
    	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);
    
    

    操作表内容***

    注册一个表

    create table d1(id int ,name varchar(12));
    insert into d1(id,name) values
    (1,'小珊珊'),
    (2,'小白白'),
    (3,'小嘿嘿');
    

    增删改

    增加
    普通版    
    insert into 表名 values (内容1,内容2),(内容1,内容2);
    实列
    insert into user values(2,'wusir'),(3,'太亮');
    推荐版
    insert into 表名 (字段1,字段2) values 
    (内容1,内容2);
    实列
    insert into staff_info (id,name,age,sex,phone,job) values (1,'Alex',83,'female',13651054608,'IT');
    
    删除
    delete from d1;  # 清空表 不用  删除所有的数据,但是不会重置自增字段的数据号
    delete from 表名 where 条件;
    truncate 表名;  自增字段会重置
    举例
    delete from d1 where id = 3;
    
    修改 #注意语法,可以同时来修改多个值,用逗号分隔
    update 表名 set 修改内容;  # 不用 修改所有
    update 表名 set 修改内容 where 查找条件;
    举例
    update d1 set name = 'alex',id = 2 where id = 1;
    
    
    自定义显示格式 concat用法
    相当拼接
    select concat('姓名: ',name,'  年薪: ', salary*12)  AS Annual_salary from employee;
    

    查看表中内容

    显示模式

    四则运算:
    	SELECT salary*12 FROM employee;
    
    自定义显示格式 concat用法
    	SELECT CONCAT('姓名: ',name,'  年薪: ', salary*12)  AS Annual_salary FROM employee;
    

    查表顺序

    查看
    select * from 表名; 
    举例
    select * from d1;
    # 查询全部表内容
    # select * from d1;
    # 进阶版查询
    # 1.找到表:
    # 实列
    #select * from d1;
    # 2.拿着 where 指定的约束条件,去文件/表中取出一条条记录
    # 实列
    #     select * from d1 where hoppy='玩';
    # 3.将取出的一条条记录进行分组group by,如果没有group by,则整体作为一组
    # # 实列 找到爱好是玩的 将年龄分组
    #     select * from d1 where hoppy='玩' group by age ;
    # 5.将分组的结果进行having过滤
    # 实列 找到爱好是玩的 将年龄分组 且id>3
    #     select * from d1 where hoppy='玩' group by age having count(id)>3;
    # 6将结果排序asc(升序从小到大)desc(降序 从大到小)
    # 实列
    #     select * from d1 where hoppy='玩' group by age having count(id)>3 order by price;
    # 7限制结果的显示条数
    # 实列 去前6个
    #     select * from d1 where hoppy='玩' group by age having count(id)>3 order by price limit 6;
    
    
    
    
    
    # having 对组过滤 必须先分组 在组的后面
    # 就是一个对组进行筛选的条件
    # 要部门人数大于3个人的部门 count(id)>3
    # select post from employee group by post having count(id)>3;
    #
    # order by 排序
    #     order by 字段 (默认升序)
    #     order by 字段 asc(升序从小到大)
    #     order by 字段 desc(降序  从大到小)
    #
    #     order by 字段1,字段2
    #     order by 字段 asc,字段2 desc
    #     order by 字段 desc,字段2 asc
    #     order by 字段 desc,字段2 desc
    
    # limit 取一个区间
    # 1.显示分页
    # limit m,n(耗内存)
    #       表示从m+1开始,取n条
    #       limit 0,6 表示从1开始取6条
    #       limit 6,6 表示从7开始取6条
    #       limit 12,6 表示从13开始取6条
    #       limit 18,6 表示从19开始取6条
    # 2.取前n名
    #     limit n   m默认为0
    #     跟order by一起用
    # limit n offset m :从m+1开始,取n条
    
    
    

    where 初级筛选

    # where:
            # 范围
                # > < = <= >= !=/<>
                # between and
                # in (a,b,c) not in
            # 模糊查询
                        # like
                            # %任意长度任意内容   _一个长度任意内容
                        # regexp  正则
                            # 放正则
                    # 身份运算符 -->null
                        # is , is not
                    # 逻辑运算符
                        # and or not
    
    

    分组 与聚合

    # 分组 group by 与聚合函数
    # select * from 表 group by 字段名
    #     分组 group by(生成一个新表)
    #     根据某个重复率比较高的字段进行的
    #     这个字段有多少种可能就分成多少个组
    #         根据性别分组 : 男的一组 女的一组
    #         根据部门分组 : 销售一组 教学一组 ...
    #     去重
    #     一旦分组了就不能对具体某一条数据进行操作了
    #         永远都是考虑 这组 xxx
    #     group_concat : 只用来做最终的显示,不能结果操作其他数据(属于这个组的所有人)
    # 与聚合 联系 聚合函数
    #     99.99%的情况都是和分组一起用的
    #     如果没有和分组一起用,默认一整张表是一组
    #     count(id)  / count(*) 计数 :每个组对应几条数据
    #     max 求最大值: 这个组中某字段的最大值
    #     min 求最大值: 这个组中某字段的最小值
    #     avg 求平均值
    #     sum 求和值
    
    

    having对组过滤

    # having 对组过滤 必须先分组 在组的后面
    # 就是一个对组进行筛选的条件
    # 要部门人数大于3个人的部门 count(id)>3
    # select post from employee group by post having count(id)>3;
    #
    # order by 排序
    #     order by 字段 (默认升序)
    #     order by 字段 asc(升序从小到大)
    #     order by 字段 desc(降序  从大到小)
    #
    #     order by 字段1,字段2
    #     order by 字段 asc,字段2 desc
    #     order by 字段 desc,字段2 asc
    #     order by 字段 desc,字段2 desc
    
    
    

    limit 取一个区间

    # limit 取一个区间
    # 1.显示分页
    # limit m,n(耗内存)
    #       表示从m+1开始,取n条
    #       limit 0,6 表示从1开始取6条
    #       limit 6,6 表示从7开始取6条
    #       limit 12,6 表示从13开始取6条
    #       limit 18,6 表示从19开始取6条
    # 2.取前n名
    #     limit n   m默认为0
    #     跟order by一起用
    # limit n offset m :从m+1开始,取n条
    
    
  • 相关阅读:
    win7(windows 7)系统下安装SQL2005(SQL Server 2005)图文教程
    Jenkins 不同角色不同视图及不同权限设置
    dig挖出DNS的秘密
    Linux Shell高级技巧
    《Linux内核设计与实现》读书笔记
    github开发
    NodeJs-- 新建项目实例
    Linux makefile 教程 非常详细,且易懂
    cms完整视频教程+源码 孔浩老师 全131讲
    Redis实现简单消息队列
  • 原文地址:https://www.cnblogs.com/saoqiang/p/11448560.html
Copyright © 2020-2023  润新知