• 关于数据库增删改查的应用 20140903


    一、SQL语句的分类--Transact-sql语句

    1.DCL--数据控制语言(管理人员使用,多用于备份)

    2.DML--数据操纵语言(编程人员使用,CRUD)

    3.DDL--数据定义语言(使用鼠标在界面操作,非代码操作)

    CRUD--增删改查
    C--create (增加) R--retrieve(检索,查询)  U--update(更新,更改)  D--delete(删除)

    二、数据库的分类

    1.关系型数据库--用表存数据,易于检索,冗余度小.

    2.层次型数据库--硬盘文件夹,不常见.

    3.网络型数据库--互联网超链接,不常见.

    冗余度:如员工信息表中包含工号、姓名、单位、部门、薪资等信息,那么单位和部门两列即冗余了,相当于一直重复利用;那我们可以新建表将单位和部门这两列以代号代替,那么原表中仅需填入代号即可方便检索.
    三、CRUD操作

    1.添加
    INSERT INTO语句使用的前提是,要添加的列不是自增长列

    1).insert into 表名 values(' ',' ')--into可以省略不写,括号中是要添加的值.
    例:insert into Fruit values('1','红富士','5','苹果','栖霞')

    2).insert into 表名 (列名,列名,列名,列名)values(' ',' ',' ')--如列Ids是自增长列,后面的()内即不需要赋值.

    例:innsert into Fruit(Ids,Name,Price,[Type]) values('2','巨峰','6','葡萄')

    3).insert into 表名 (列名,列名,列名)values(' ',' ',' ')--如果不按照表格列名顺序输入值,即按照列名输入的顺序赋值.
    insert into Fruit(Ids,Name,[Type],Price,[Source]) values('3','冬枣','枣类','20','沾化')

    2.删除
    1)delete from Fruit --删除Fruit表格中的数据,日志记录,重新在表格内输入值自增长列不复位.
    PS:如原表格中数据自增长列是1-11行,删除所有数据后再输入值即从12行起自增长.
    2)  truncate table fruit -- 截断fruit表格中的数据,日志中无记录,重新再表格内输入值自增长复位.

    PS:如原表格中数据自增长列是1-11行,截断所有数据后再输入值即从1行起自增长.

    3)delete from fruit where 列名  关系运算符 值
    例:delete from Fruit where Source = '莱阳'--将出产地为莱阳的值删除.
         delete from Fruit where Type='葡萄'--将类别为葡萄的值删除.
         delete from Fruit where Source='深圳' and Price < 18--将出产地为深圳的值并且价格小于18的值删除.
         delete from Fruit where Source='深圳' or Price < 18--将出产地为深圳的值或者价格小于18的值删除.

    3、更新

    1)update Fruit set 列名=值,列名=值,... where  列名  关系运算符 值

    例:update fruit set Price=18 where name='荔枝'-- 将名字为荔枝的值的价格改为18(where  后面的"列名  关系运算符 值" 也可更换行中其他唯一标识).

    PS:更新过的信息是撤销不了的,如怕更新错误可以有机会撤销可如下操作

    2)begin tran(transaction的简写)--运算开始

         update Fruit Type='苹果',Source='栖霞'--将种类更新为苹果,产地更新为栖霞.

         roll back--回滚(回到更新信息之前的信息,相当于撤销更新.)在使用begin tran的前提先才可执行.

    4.查询

    投影:对列的筛选  列--字段--属性

    筛选:对行的筛选  行--记录--元组

    查询操作并不会改变数据库中的内容,只是将查询内容显示出来.

    1)select * from Fruit -- 显示Fruit表中所有列的信息(  "*"  是指显示所有的列)

    2)select Name,Type,Price,…………from Fruit --从Fruit表中显示Name列,Type列,Price列,…………列.(投影)

    3)等值及不等值查询

    select * from Fruit where 列名 关系运算符 值

    例:select *from fruit where price>=10 and source='新疆' --显示价格>=10并且产地为信息的记录.

    4)范围查询

    select *from fruit where price between 10 and 20 --查询价格在10到20之间的记录.

    select *from fruit where price in(3,5,16) --查询价格为3,5,16的记录.

    5)列去重复
    select distinct source from fruit --删除source列中的重复值.

    PS:select distinct后的列名只能写一个,写多了列名的话只执行第一个列名,仅显示执行列.
    6)模糊查询
    通配符:% 是指任意多个任意字符; _ 是指一个任意字符.

    select * from car where Name like '%5%' --查询car表Name列中包含5的记录.

    select * from car where Name like '%型' --查询car表Name列中最后一个字是型的记录.

    select * from car where Name like '宝%' --查询car表Name列中第一个字是宝的记录.

    select * from car where Name like '_马%' --查询car表Name列中第二个字是马的记录.

    select * from car where Name like '_ _3%' or Name like '_ _5%' --查询car表Name列中第三个字是3或5的记录,也可以用另一种方法操作,如下.

    select * from car where Name like '_ _[3,5]%' --查询car表Name列中第三个字是3或5的记录,[]表示选其一.

    5.排序
     ascending(升序简写为asc)  descending(降序简写为desc)

    select * from car order by price asc  --将car表中的price列按照升序排列,asc可省略.

    select *from car order by oil asc, exhanst desc,price asc  --将car表中的oil列按照升序排列,oil列中相同值的再按照exhanst降序排列,最后exhanst列中相同值的再按照price升序排列.这样就找出耗油最少,排量最大,价格最优惠的车了.

    6.统计--聚合函数(统计函数)

    1)COUNT(*)--总数

    select COUNT(*) from chinastates where areacode like '_ _ _ _'--统计chinastates表内地级市的总数( areacode like'_ _ _ _'代表地级市).

    PS:COUNT 后为列名的话,以列计数,那么查询列中为NULL值的则被忽略不予计数.

    2)AVG --平均值  
    select AVG(price) from car where brand in('b001','b002','b003','b004')--求car表中系列代码为'b001','b002','b003','b004'的平均值.

    3)SUM --总和

    select SUM (price)from car --统计car表中所有价格的总和,()内可以写多列,如:price/ids.
    select *,(price *0.9) as 价格 from car --统计价格九折后的价格显示在表最后,列名为价格.

    select code 代号,name 名称,brand 系列,Time 上市时间,oil 油耗,powers 功率,Exhaust 排量,price 价格,pic 图片路径 from car--用汉字列名表示英文列名.

    4)MAX --最大值

    select MAX(price) from car -- 显示价格最大值.

    5)MIN --最小值

    select Min(price) from car -- 显示价格最小值.
    7.分组

    1)select oil,COUNT(*) from car group by oil order by COUNT(*) desc--按照oil进行分组,显示出oil列和每组的个数并降序排列.

    2)select oil,COUNT(*) from car where price >50 group by oil order by COUNT(*) desc--对价格大于50的按照oil进行分组并降序排列.

    3)select type,COUNT(*) from fruit group by type having COUNT(*)>1  --按照type进行分组,将组内个数大于1的type和个数显示出来.

    PS:having是针对统计好的结果进行筛选,所以使用having的前提必须使用group by.

  • 相关阅读:
    jsp中页面包含的方法(转载)
    comparator的用法
    Spring对Hibernate事务管理【转】
    jQuery笔记
    Spring事务配置的五种方式【转】
    Spring AOP 学习小结【转】
    DWR3.0 dwr 返回值(数组,集合,Map)
    关于tomcat startup.bat启动后一闪而过的问题(转)
    Spring 异常关键字 no matching editors or conversion strategy found 解决方法
    关于dhtmlxScheduler的使用说明(ADD EDIT DEL,自定义CelendarBox)【转】
  • 原文地址:https://www.cnblogs.com/DORCASQING/p/3957118.html
Copyright © 2020-2023  润新知