zoukankan      html  css  js  c++  java
  • sql语句的一些基本用法

    create database zouxiou
    use zouxiou
    --1仓库(WareHouse)
    create table WareHouse
    (
    cwcode varchar(20) not null primary key, --仓库编码
    cwname varchar(100) , --仓库名称
    cwadd varchar(100) , --地址
    cwtel varchar(50) , --电话
    cwadmin varchar(50) --管理员
    )
    --2.采购单主表
    create table Stock
    (
    ccode varchar(20) not null primary key , --编号
    dDate datetime , --采购日期
    cbuyer varchar(50) , --采购人
    cwcode varchar(20) foreign key references WareHouse(cwcode) , --仓库编码
    cmaker varchar(50) , --制单人
    cassessor varchar(50) , --审核人
    cremark varchar(200) --备注
    )
    --3.采购单子表(Stocks)
    create table Stocks
    (
    ccode varchar(20) foreign key references Stock(ccode), --主表编号
    cpcode varchar(20) not null primary key , --产品编码
    cpname varchar(50) , --产品名称
    cspec varchar(50) , --规格型号
    cvendor varchar(100) , --供应商
    cunit varchar(20) , --计量单位
    nprice real , --单价
    iamount int --数量
    )
    insert WareHouse(cwcode,cwname,cwadd) values('01','1号仓库' , '济南市文化东路')
    insert WareHouse(cwcode,cwname,cwadd) values('02','2号仓库' , '济南市山大路' )
    insert Stock(ccode,dDate,cbuyer,cwcode) values('jn-0001','2009-3-6' , '张三丰','01')
    insert Stock(ccode,dDate,cbuyer,cwcode) values('jn-0002','2009-3-16', '张学友','02')
    insert Stock(ccode,dDate,cbuyer,cwcode) values('jn-0003','2009-11-6', '张信哲','01')
    insert Stocks(ccode,cpname,cpcode,nprice,iamount) values('jn-0001','计算机','pc0001',2000,30)
    insert Stocks(ccode,cpname,cpcode,nprice,iamount) values('jn-0002','计算机','pc0002',3000,20)
    insert Stocks(ccode,cpname,cpcode,nprice,iamount) values('jn-0003','计算机','pc0003',2050,10)
    insert Stocks(ccode,cpname,cpcode,nprice,iamount) values('jn-0001','计算机','pc0004',2560,20)
    insert Stocks(ccode,cpname,cpcode,nprice,iamount) values('jn-0002','打印机','pr0001',2430,50)
    select * from warehouse
    select * from stock
    select * from stocks
    --声明变量
    declare @a varchar(20) , @b int
    --变量赋值
    set @a='abc'
    set @b=123
    --输出显示
    select @a as 产品名称 ,@b as 数量
    --仓库
    declare @code varchar(20) ,@name varchar (5)
    select @code= cwcode,@name =cwname from warehouse where cwcode='01'
    select @code ,@name
    --练习
    declare @name varchar(20),@buy float,@much int ,@查询条件 varchar(10)
    --set @查询条件='jn-0001' //set 和select都可用于与变量赋值
    select @查询条件='jn-0001'
    select @name=cpname, @buy=nprice, @much=iamount,@查询条件='"jn-0001"'from stocks where ccode=@查询条件
    select @name, @buy,@much
    --print @查询条件//显示@后面的数值
    declare @xh char(10) ,@xm char (6)
    set @xh='200610028'
    select @xh='2007051382',@xm='黎明'
    --print @xh
    select @xh,@xm
    -- 全局变量
    select @@SERVERNAME as 服务器名, @@ROWCOUNT 行列数目, @@error 显示最后执行的错误代码0无错误非零的数值错误号,
    @@TRANCOUNT 当前事务的数目,@@CPU_BUSY 最近启用CPU的工作时间,@@VERSION 安装版本信息,@@OPTIONS 当前set选项信息
    select @@error
    --数学函数
    --平方2的10次方
    select power(2,10)
    --开根
    select sqrt(10)
    --四舍五入
    select round(10/3.0,2)
    select round(3.123,2)
    --ceiling获取大于或等于传递参数的最小值
    select ceiling (10)
    --floor 获取小于或等于传递的最大的整数
    select floor(10)
    --练习
    --查询stocks表,输出价格的平方根,输出价格的平方根四舍五入保留两位有效数字的值,输出数量的平方,大于价格的平方根的最小的整数,
    --小于价格平方根的最大的整数,查询条件是数量的平方大于1000
    select sqrt(nprice) as 价格的平方根,round(sqrt(nprice),2) 价格的平方根四舍五入保留两位有效数字的值,power(iamount,2) 数量的平方,
    ceiling(sqrt(nprice)) 大于价格的平方根的最小的整数,floor(sqrt(nprice)) 小于价格平方根的最大的整数 from stocks where power(iamount,2)>1000

    --字符串函数
    --ascii 返回ascii码值
    select ascii('abc')
    --char 返回ascii码值
    select char('97')
    --lower,upper转换英文字符的大小写形式
    select lower('ASDFG')
    select upper('asdfg')
    --left,right 截取左侧右侧的字符
    select left('法兰西共和国',3)
    select right('法兰西共和国',5)
    --substring 截取指定位置制定长度的字符串
    select substring('法兰西共和国',4,3)
    --charindex查找字符串的索引位置
    select charindex('wee','qwweetyy')
    select substring('法兰西共和国', charindex('共和国','法兰西共和国'),3)
    --len获取字符串长度
    select len('法兰西共和国')
    --replace 替换
    select replace ('法兰西共和国','法兰西','中华人民')
    --space 生成空格
    select space(10)+'asd'
    --replicate 重复指定的字符串
    select replicate('abc',10)
    --reverse 反转字符串
    select reverse('abcd')
    --练习
    select *from warehouse
    select len(cwadd)from warehouse
    select left(cwadd,2),right(cwadd,3)from warehouse
    select reverse (substring (cwadd,charindex('市',cwadd),4)) from warehouse
    update warehouse set cwadmin=space(2)+replicate('a',10)+space(3)from warehouse
    declare @cpwhere varchar(20)
    select @cpwhere='pc0001'
    select nprice =case
    when nprice <2500 then '物美价廉'
    when (nprice <2900 )and (nprice>2500)then '价格适中'
    when nprice >2900 then '有点贵'
    END
    FROM stocks where cpcode=@cpwhere
    select nprice=case
    when nprice <2500 then '物美价廉'
    when (nprice <2900 )and (nprice>2500)then '价格适中'
    when nprice >2900 then '有点贵'
    else ''
    end
    from stocks
    --while 循环
    --格式
    /* while 条件表达式
    begin
    语句块
    continue
    break
    end
    */
    --从1到100之间的偶数和
    declare @num int ,@i int
    select @num=0,@i=1
    while (@i<=100)
    begin
    if(@i%2=0)
    begin
    select @num = @i+@num
    end
    set @i=@i+1
    end
    print @num
    --输出从1到100之间的所有的素数(只能被1和本身整除的数)
    --wait for 延迟语句

    --格式 waitfor(delay|time)时间 SQL语句
    --作用:等待一段时间或到某个时间开始执行SQL语句
    waitfor delay '12:00:05'
    select *from stocks
    waitfor time '15:33:05'
    select *from stocks
    set nocount on --关闭影响行提醒
    select *from stocks
    --esec函数
    --获取数据库服务器上的所有数据
    exec sp_helpdb
    --获取数据库服务器上的所有数据
    exec sp_helpdb
    --修改数据库名
    exec sp_rename 源表名,视图名,存储过程名,函数名, 目的表名,视图名,存储过程名,函数名
    exec sp_tables-- 获取当前数据库下的表名
    exec sp_columns v2 --获取 指定的表名或视图的列
    --定义存储过程格式
    CREATE PROC[EDURE] 存储过程名
    @参数1 数据类型 = 默认值 OUTPUT,
    …… ,
    @参数n 数据类型 = 默认值 OUTPUT
    AS
    SQL语句
    /*
    格式
    creat proc[edure] 存储过程名
    [参数列表]
    as
    <sql语句>
    */
    create proc sp_p2
    as
    select *from stocks
    --创建带参数的存储过程
    create proc sp_p5
    @swhere varchar(20)
    as
    select *from stocks where cpcode=@swhere
    --执行存储过程,查询的条件为cpcode=pc0004
    create proc sp_p6
    @swhere varchar(20)
    as
    select *from stocks where cpcode='pc0004'
    --练习
    create proc sp_p9
    @swhere varchar(50) ,@where varchar(20)
    as
    select*from stocks where ccode in (select ccode from stock where cwcode=
    (select cwcode from warehouse where cwname=@swhere) )and ccode=@where
    1.select cwcode from warehouse where cwname=@swhere
    2.select ccode from stock where cwcode=1
    3.select * from stocks where ccode in 2 and ccode=@where
    alter proc sp_p1
    as
    select *from stock
    --修改存储过程
    /*alter proc[edure]存储过程名称
    [参数列表]
    as
    <SQL语句>
    */
    /*
    drop proc[endure]存储过程名
    */

    <PIXTEL_MMI_EBOOK_2005>2 </PIXTEL_MMI_EBOOK_2005>

    --------rank()排序

    --rank方法:当所按排序的字段有相同值时,序号相同,而下一条不同的数据行会根据当前记录数生成序号
    --:序号不连续(1,1,1,4,5,5,7)
    select * from Score
    select RANK() over(order by score desc) id,* from Score
    select RANK() over(order by Coid desc) id,* from Score

    order by 是排序,rank()可自动生成序号


    order by ID 如果ID相同则序号相同
    序号不连续(1,1,1,4,5,5,7)
    表示前三条记录的ID相同

  • 相关阅读:
    my read travel
    OS + CentOS 7 / centos 7 / config / configuration / rescue / rc.local / yum
    my soft / win soft
    如何撰写发明专利申请文件
    专利局审查员如何审专利
    国际专利分类表(2016版)
    手把手教你写专利申请书/如何申请专利
    Packets switched through Linux bridge have very high packet delay variation and latency?
    当心僵尸:过时Linux内核的安全风险
    飞漫魏永明:从MiniGUI看嵌入式十年得与失
  • 原文地址:https://www.cnblogs.com/lff255356/p/2741270.html
Copyright © 2011-2022 走看看