暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

SQL常用的增、删、改、查语句汇总!

SQL数据库运维 2023-04-06
348

点击蓝色字关注“SQL数据库运维”,回复“SQL”获取2TB学习资源!

日常利用数据库软件处理数据,不外乎增、删、改、查操作,现整理部分常用的操作,记得收藏备用!

准备构建测试表,测试环境SQL Server 2014

    --新建表测试表
    --测试表Students
    CREATE TABLE Students (
    CXM VARCHAR (20),
    CXB VARCHAR (20),
    DCSNY DATETIME
    )
    --测试表Students
    CREATE TABLE Students_01 (
    CXM VARCHAR (20),
    CXB VARCHAR (20),
    DCSNY DATETIME
    )
    --添加一列武力值
    ALTER TABLE Students ADD CWLZ INT
    --添加一列地址
    ALTER TABLE Students ADD ADDRESS VARCHAR(100)
    --添加一列ID号
    ALTER TABLE Students ADD ID INT
    --更新新添加列的数据
    UPDATE Students SET CWLZ=100 WHERE CXM='路飞'
    UPDATE Students SET CWLZ=90 WHERE CXM='索隆'
    UPDATE Students SET CWLZ=88 WHERE CXM='山治'
    UPDATE Students SET CWLZ=20 WHERE CXM='乔巴'
    UPDATE Students SET ADDRESS='北京' WHERE CXM='乔巴'
    UPDATE Students SET ADDRESS='上海' WHERE CXM='路飞'
    UPDATE Students SET ADDRESS='广州' WHERE CXM='索隆'
    UPDATE Students SET ADDRESS='深圳' WHERE CXM='山治'
    UPDATE Students SET ID=1 WHERE CXM='乔巴'
    UPDATE Students SET ID=2 WHERE CXM='路飞'
    UPDATE Students SET ID=3 WHERE CXM='索隆'
    UPDATE Students SET ID=4 WHERE CXM='山治'
    insert into Students (CXM,CXB,DCSNY,CWLZ,ADDRESS,ID) values ('娜美','女','2001/6/15',60,'郑州',5)


    01

    增加

    1.1【插入单行】

      --插入单行语法
      insert [into] <表名> (列名) values (列值)
      --举例
      insert into Students (CXM,CXB,DCSNY) values ('张三','男','2000/6/15')

      1.2【将现有表数据添加到一个已有表】

        --语法
        insert into <已有的新表> (列名) select <原表列名> from <原表名>
        --举例
        insert into Students_01(CXM,CXB,DCSNY)
        select CXM,CXB,DCSNY from Students

        1.3【直接拿现有表数据创建一个新表并填充】

          --语法
          select <新建表列名> into <新建表名> from <源表名>
          --举例
          select CXM,CXB,DCSNY into Students_xb from Students

          1.4【使用union关键字合并数据进行插入多行】

            --语法
            insert <表名> <列名> select <列值> union select <列值>
            --举例
            insert Students (CXM,CXB,DCSNY)
            select '路飞','男','1980/6/15'
            union --(union表示下一行)
            select '索隆','男','1995/05/29'


            02

            删除


            2.1【删除<满足条件的>行】

              --语法
              delete from <表名> [where <删除条件>]
              --举例:(删除表Students中列值为张三的行)
              --注意:删除某行数据时,千万不要忘记加where条件
              delete from Students where CXM='张三'

              2.2【删除整个表】

                --语法
                truncate table <表名>
                --举例
                truncate table Students_01

                注意:truncate用于删除数据表的所有行,但表的结构、列、约束、索引等不会被删除;不能用于有外建约束引用的表。



                03

                更新

                3.1【更改某行某列的某个值】

                  --语法
                  update <表名> set <列名=更新值> [where <更新条件>]
                  --举例
                  update Students set CXB='女' where CXM='路飞'






                  04


                  查询

                  4.1 精确(条件)查询

                    --语法
                    select <列名> from <表名> [where <查询条件表达试>] [order by <排序的列名>[ascdesc]]

                    4.1.1【查询所有数据行和列】

                      --举例:查询Students表中所有行和列
                      select * from Students

                      4.1.2【查询部分行列--条件查询】

                        --举例:查询表Students中 cxm='索隆'的所有行,并显示cxb,dcsny 2
                        select cxb,dcsny from Students where cxm='索隆'

                        4.1.3【在查询中使用AS更改列名】 

                          --举例:查询Students表中性别为男的所有行,显示cxm列,并将name列改名为(姓名)显示
                          select cxm as 姓名 from Students where cxb='男'

                          4.1.4【查询空行】

                            --举例:查询表Students中cxb为空的所有行,并显示cxm列;SQL语句中用is null或者is not null来判断是否为空行
                            select cxm from Students where cxb is null

                            4.1.5【在查询中使用常量】

                              --举例:查询表Students,显示cxm列,并添加动漫剧名,其列值都为'海贼王'
                              select cxm, '海贼王' as 动漫剧名 from Students

                              4.1.6【查询返回限制行数(关键字:top percent)】

                                --举例1:查询表Students,显示列cxm的前3行,top为关键字
                                select top 3 cxm from Students
                                --举例2:查询表Students,显示列name的50%,percent为关键字
                                select top 50 percent cxm from Students

                                4.1.7【查询排序(关键字:order by , asc , desc)】

                                  --举例:查询Students表中CWLZ大于等于60的所有行,并按CWLZ降序显示CXM,CWLZ列;默认为asc升序
                                  select CXM,CWLZ from Students where CWLZ>=60 order by CWLZ desc


                                  4.2 模糊查询

                                  4.2.1【使用like进行模糊查询】

                                    --举例:查询显示表Students中,cxm字段第一个字为山的记录
                                    select * from Students where cxm like '山%'

                                    注意:like运算符只用于字符串,所以仅与char和varchar数据类型联合使用

                                    4.2.2【使用between在某个范围内进行查询】

                                      --举例:查询显示表Students中CWLZ在60到100之间的记录
                                      select * from Students where CWLZ between 60 and 100

                                      注意:between...and查询结果是包含边界值的

                                      4.2.3【使用in在列举值内进行查询】

                                        --举例:查询表Students中address值为北京或者上海或者唐山的记录,显示cxm字段
                                        select cxm from Students where address in ('北京','上海','广州')


                                        4.3 分组查询

                                        4.3.1【使用group by进行分组查询】

                                          --举例:在表Students中查询,按ID字段分组,显示ID字段和CWLZ字段的平均值;select语句中只允许被分组的列和为每个分组返回的一个值的表达式,例如用一个列名作为参数的聚合函数
                                          select ID as 学号,AVG(CWLZ) as 平均武力值
                                          from Students
                                          group by ID

                                          4.3.2【使用having子句进行分组筛选】

                                            --举例:接上面例子,显示分组后count(CWLZ)>0的行,由于where只能在没有分组时使用,分组后只能使用having来限制条件。
                                            select ID as 学号,AVG(CWLZ) as 平均武力值
                                            from Students
                                            group by ID
                                            having count(CWLZ)>0


                                            4.4 多表联接查询

                                            4.4.1内联接

                                            4.4.1.1【在where子句中指定联接条件】

                                              --举例:查询表Students和表Students_01中cxm字段相等的记录,并显示表Students中的CXM字段和表Students_01中的cxb字段
                                              select Students.CXM,Students_01.cxb
                                              from Students,Students_01
                                              where Students.CXM=Students_01.CXM

                                              4.4.1.2【在from子句中使用join…on】

                                                --举例:同上
                                                select Students.CXM,Students_01.cxb
                                                from Students inner join Students_01
                                                on (Students.CXM=Students_01.CXM)

                                                4.4.2外联接

                                                4.4.2.1【左外联接查询】

                                                  --举例:在Students表和Students_01表中查询满足on条件的行,条件为Students_01表的CXM与strdents表中的CXM相同
                                                  select s.CXM,c.DCSNY,c.CXB
                                                  from Students as s
                                                  left outer join Students_01 as c
                                                  on s.CXM=c.CXM

                                                  4.4.2.2【右外联接查询】

                                                    --举例:在Students表和Students_01表中查询满足on条件的行,条件为Students_01表的CXM与strdents表中的CXM相同
                                                    select s.CXM,c.DCSNY,c.CXB
                                                    from Students as s
                                                    right outer join Students_01 as c
                                                    on s.CXM=c.CXM
                                                    分享收藏点赞在看

                                                    点击关注“SQL数据库运维”,后台或浏览至公众号文章底部点击“发消息”回复关键字:进群,带你进入高手如云的技术交流群。后台回复关键字:SQL,获取学习资料。


                                                    动动小手点击加关注呦☟☟☟

                                                    文章转载自SQL数据库运维,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

                                                    评论