sql笔记整理

 

SQL 语句(增删改查)
一、增:有 4 种方法
   1. 使用 insert 插入单行数据:
                    语法: insert [into] < 表名 > [ 列名 ] values < 列值 >
       例: insert into Strdents ( 姓名 , 性别 , 出生日期 ) values (' 开心朋朋 ',' ','1980/6/15')
      注意: into 可以省略;列名列值用逗号分开;列值用单引号因上;如果省略表名,将依次插入所有列

   2. 使用 insert select 语句将现有表中的数据添加到已有的新表中
                    语法: insert into < 已有的新表 > < 列名 >
                        select < 原表列名 > from < 原表名 >
       例: insert into tongxunlu (' 姓名 ',' 地址 ',' 电子邮件 ')
                       select name,address,email
                       from Strdents
                    注意: into 不可省略;查询得到的数据个数、顺序、数据类型等,必须与插入的项保持一致

   3. 使用 select into 语句将现有表中的数据添加到新建表中
                    语法: select < 新建表列名 > into < 新建表名 > from < 源表名 >
      例: select name,address,email into tongxunlu from strdents
       注意:新表是在执行查询语句的时候创建的,不能够预先存在
       在新表中插入标识列(关键字 ‘identity’ ):
       语法: select identity ( 数据类型,标识种子,标识增长量 ) AS 列名
                        into 新表 from 原表名
       例: select identity(int,1,1) as 标识列 ,dengluid,password into tongxunlu from Struents
       注意:关键字 ‘identity’

   4. 使用 union 关键字合并数据进行插入多行
       语法: insert < 表名 > < 列名 > select < 列值 > tnion select < 列值 >
       例: insert Students ( 姓名 , 性别 , 出生日期 )
                       select ' 开心朋朋 ',' ','1980/6/15' union union 表示下一行)
                       select ' 蓝色小明 ',' ','19****'
                   注意:插入的列值必须和插入的列名个数、顺序、数据类型一致
二、删:有2中方法
   1. 使用 delete 删除数据某些数据
                   语法: delete from < 表名 > [where < 删除条件 >]
       例: delete from a where name=' 开心朋朋 ' (删除表 a 中列值为开心朋朋的行)
                  注意:删除整行不是删除单个字段,所以在 delete 后面不能出现字段名
   2. 使用 truncate table 删除整个表的数据
                   语法: truncate table < 表名 >
       例: truncate table tongxunlu
       注意:删除表的所有行,但表的结构、列、约束、索引等不会被删除;不能用语有外建约束引用的表
三、改
   使用 update 更新修改数据
                  语法: update < 表名 > set < 列名 = 更新值 > [where < 更新条件 >]
       例: update tongxunlu set 年龄 =18 where 姓名 =' 蓝色小名 '
       注意: set 后面可以紧随多个数据列的更新值; where 子句是可选的,用来限制条件,如果不选则整个表的所有行都被更新
) - SQL
四、查
   1. 普通查询
       语法: select < 列名 > from < 表名 > [where < 查询条件表达试 >] [order by < 排序的列名 >[asc desc]]
    1). 查询所有数据行和列
    例: select * from a
     说明:查询 a 表中所有行和列
    2). 查询部分行列 -- 条件查询
     例: select i,j,k             from             a             where f=5
     说明:查询表 a f=5 的所有行,并显示 i,j,k 3列
    3). 在查询中使用AS更改列名
     例: select name as 姓名  from a whrer xingbie=' '
    说明:查询 a 表中性别为男的所有行,显示 name 列,并将 name 列改名为(姓名)显示
    4). 查询空行
     例: select name from a where email is null
    说明:查询表 a email 为空的所有行,并显示 name 列; SQL 语句中用 is null 或者 is not null 来判断是否为空行
    5). 在查询中使用常量
     例: select name ' 唐山 ' as 地址 from   a
    说明:查询表 a ,显示 name 列,并添加地址列,其列值都为 ' 唐山 '
    6). 查询返回限制行数 ( 关键字: top           percent)
     例1: select top 6 name from a
    说明:查询表 a ,显示列 name 的前6行, top 为关键字
     例2: select top 60 percent name from a
    说明:查询表 a ,显示列 name 60% percent 为关键字
    7). 查询排序(关键字: order by , asc , desc
     例: select name
       from a
       where chengji>=60
       order by desc
    说明:查询表中 chengji 大于等于 60 的所有行,并按降序显示 name 列;默认为ASC升序

   . 模糊查询
    1). 使用 like 进行模糊查询
    注意: like 运算副只用语字符串,所以仅与 char varchar 数据类型联合使用
     例: select * from a where name like ' %'
    说明:查询显示表 a 中, name 字段第一个字为赵的记录

    2). 使用 between 在某个范围内进行查询
    例: select * from a where nianling between 18 and 20
     说明:查询显示表 a nianling 18 20 之间的记录
    3). 使用 in 在列举值内进行查询
     例: select name from a where address in (' 北京 ',' 上海 ',' 唐山 ')
    说明:查询表 a address 值为北京或者上海或者唐山的记录,显示 name 字段
   . 分组查询
    1). 使用 group by 进行分组查询
    例: select studentID as 学员编号 ,         AVG(score) as 平均成绩    ( 注释 : 这里的 score 是列名 )
       from score ( 注释 : 这里的 score 是表名 )
       group by studentID
     说明:在表 score 中查询,按 strdentID 字段分组,显示 strdentID 字段和 score 字段的平均值; select 语句中只允许被分组的列和为每个分组返回的一个值的表达试,例如用一个列名作为参数的聚合函数
    2). 使用 having 子句进行分组筛选
    例: select studentID as 学员编号 ,         AVG(score) as 平均成绩 ( 注释 : 这里的 score 是列名 )
       from score ( 注释 : 这里的 score 是表名 )
       group by studentID
       having count(score)>1
    说明:接上面例子,显示分组后 count(score)>1 的行,由于 where 只能在没有分组时使用,分组后只能使用 having 来限制条件,
   . 多表联接查询
    1). 内联接
     where 子句中指定联接条件
    例: select a.name,b.chengji
       from a,b
       where a.name=b.name
    说明:查询表 a 和表 b name 字段相等的记录,并显示表 a 中的 name 字段和表 b 中的 chengji 字段
     from 子句中使用 join…on
      例: select a.name,b.chengji
        from a inner join b
        on (a.name=b.name)
     说明:同上
    2). 外联接
     左外联接查询
      例: select s.name,c.courseID,c.score
        from strdents as s
        left outer join score as c
        on s.scode=c.strdentID
      说明:在 strdents 表和 score 表中查询满足 on 条件的行,条件为 score 表的 strdentID strdents 表中的 sconde 相同
     右外联接查询  
      例: select s.name,c.courseID,c.score
        from strdents as s
        right outer join score as c
        on s.scode=c.strdentID
      说明:在 strdents 表和 score 表中查询满足 on 条件的行,条件为 strdents 表中的 sconde score 表的 strdentID 相同
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值