数据库之单表查询,多表查询-32

本文深入探讨了SQL查询语句的构建与优化,包括单表查询、多表查询及子查询的使用方法,同时介绍了数据库表的拷贝技巧与记录操作的详细步骤,适合初学者及有一定经验的开发者提升SQL技能。
内容
查询语句
    1.完整查询语句
    2.一堆关键字
        关键字的执行顺序
    3.单表查询
         [where 条件      ******
        group by 字段名   ***
        having 条件       ***
        order by 字段名   *****
        limit 显示的条数] *******
    4.多表查询  *******

    5.子查询
1.一对一关系的补充
一对一 ******
生活中的一对一
    客户表, 学员表
    通过分析
    一个客户只对应一个学员
    一个学员只对应一个客户
    所以确定关系为一对一

    mysql中通过外键来建立一对一

    create table customer(id int primary key auto_increment,name char(10),phone char(11),sex char(1));
    create table student(id int primary key auto_increment,name char(10),class char(11),sex char(1),c_id int,
    foreign key(c_id) references  customer(id) on update cascade on delete cascade
    );
2.拷贝表
拷贝表 ***

1.create table copy_table select *from customer ;
    拷贝结构 与数据
    mysql> select * from copy_table;
+----+------+-------+------+
| id | name | phone | sex  |
+----+------+-------+------+
|  1 | lmz  | 110   |    |
+----+------+-------+------+

    mysql> desc copy_table;
+-------+----------+------+-----+---------+-------+
| Field | Type     | Null | Key | Default | Extra |
+-------+----------+------+-----+---------+-------+
| id    | int(11)  | NO   |     | 0       |       |
| name  | char(10) | YES  |     | NULL    |       |
| phone | char(11) | YES  |     | NULL    |       |
| sex   | char(1)  | YES  |     | NULL    |       |
+-------+----------+------+-----+---------+-------+

2.create table copy_table select *from customer where 0 > 1;
        仅拷贝结构

共同点: 索引 不能拷贝   描述不能拷贝(自增)
3.记录详细操作
以下语法中
[] 表示可选的
{}表示必选的

    insert [into] 表名[字段名] value|values(字段值....);
    into 可省略
    [字段名] 可选
        如果写了 你后面的值 必须与 写的字段匹配
        不写  后面的值 必须和表的结构完全匹配
    value 插入一条记录
    values 插入多条记录


    update 表名 set 字段名 = 新的值[,字段= 新值n]  [where 条件]
    可以同时修改多个字段 用逗号隔开   注意最后一个字段不能加逗号
    where 可选
        有就 修改满足条件的记录
        没有就全部修改

    delete from 表名 [where 条件]
    where 可选
        有就 删除满足条件的记录
        没有就全部删除
        如果你需要全部删除 请使用truncate table 表名
        delete 是逐行比对  删除 效率低
        delete删除的行号会保留

查询
    完整的查询语句
    select  [distinct] {* | 字段名 | 聚合函数 | 表达式} from 表名
        [where 条件
        group by 字段名
        having 条件
        order by 字段名
        limit 显示的条数]

    注意: 关键字的顺序必须与上述语法一致


    简单查询 ******

    1.* 表示所有列 都显示
    2.也可以手动指定要显示的列  可以是多个
    3.distinct 用于去除重复的记录
        只取出完全相同的记录
        当然 你也可以手动指定要显示的列 从而来去重
        select distinct name from student;#去除项名字相同的数据
   4.表达式  支持四则运算


    执行顺序
     def select()
        from() 打开文件
        where() 读取每一行并判断是否满足条件
        group() 对数据进行分组
        having() 再分组之后进行过滤     having不单独出现 仅用于分组之后进行过滤
        distinct() 去重
        order() 用于对筛选后的数据 进行排序
        limit

转载于:https://www.cnblogs.com/jokezl/articles/10183199.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值