zoukankan      html  css  js  c++  java
  • SQL1-(增删改查、常用函数)

    USE flowershopdb
    
    --全球唯一标识符(GUID UUID)
    SELECT NEWID()
    
    --增删改查
    --INSERT  [INTO] <表名>  [列名] VALUES <值列表>
    INSERT tb_user VALUES('haha','123')
    INSERT INTO tb_user VALUES('gege','123')
    INSERT INTO tb_user(u_name,u_pass) VALUES('wawa','123')
    
    --DELETE [FROM] <表名> [WHERE <删除条件>]
    DELETE FROM tb_user    --[清除该表中的全部数据]
    DELETE tb_user
    DELETE tb_user WHERE u_id=1
    --Truncate Table <表名>  [删除表数据,还原标识]
    Truncate Table tb_user
    
    --UPDATE <表名> SET <列名 = 更新值> [WHERE <更新条件>]
    UPDATE tb_user SET u_name='admin'    --[修改该表中的全部数据]
    UPDATE tb_user SET u_name='admin' WHERE u_id=1
    
    --SELECT <列名> FROM <表名> [WHERE <检索条件>]
    SELECT * FROM tb_user
    SELECT u_id,u_name,u_pass FROM tb_user
    SELECT u_id,u_name,u_pass FROM tb_user WHERE u_id=1
    
    --检索不与任何表关联的数据
    SELECT 1+1
    SELECT GETDATE()
    SELECT 'haha'
    SELECT ASCII('a')
    
    --聚合函数
    SELECT * FROM tb_product
    SELECT COUNT(*),MAX(p_price),MIN(p_price),SUM(p_price),AVG(p_price) FROM tb_product
    
    --数据排序 ASC正序 DESC倒序
    SELECT * FROM tb_product
    ORDER BY p_id DESC
    
    --通配符过滤
    --一个字符 '_'
    SELECT * FROM tb_product 
    WHERE p_name LIKE '_玫瑰干花'
    --任意长度的字符串 '%'
    SELECT * FROM tb_product 
    WHERE p_name LIKE '%玫瑰%'
    --括号中所指定范围内的一个字符 '[]'
    SELECT * FROM tb_product 
    WHERE p_name LIKE '[玫瑰]%' --以 '玫'或'瑰'开头的花
    --C Like '9W0[1-2]' 搜索 '9w01'或'9w02'
    
    --不在括号中所指定范围内的一个字符 '[^]'
    SELECT * FROM tb_product 
    WHERE p_name LIKE '[^玫]%' --不以 '玫' 开头的花
    
    --空值处理 IS NULL或IS NOT NULL
    INSERT tb_user VALUES(null,null)
    SELECT * FROM tb_user WHERE u_name IS NULL
    SELECT * FROM tb_user WHERE u_name IS NOT NULL
    
    --多值匹配 IN或BETWEEN AND
    SELECT * FROM tb_product WHERE p_price IN(2.1,2.2,2.3,2.4)
    SELECT * FROM tb_product WHERE p_price=2.1 OR p_price=2.2 OR p_price=2.3 OR p_price=2.4
    
    SELECT * FROM tb_product WHERE p_price BETWEEN 2.1 AND 2.9
    SELECT * FROM tb_product WHERE p_price>=2.1 AND p_price<=2.9
    
    --数据分组 GROUP BY
    --WHERE子句从数据源中去掉不符合其搜索条件的数据
    --GROUP BY子句搜集数据行到各个组中,统计函数为各个组计算统计值
    
    --通过对d_id分组,然后计算分组后,各组数据和的平均值
    SELECT d_id,AVG(p_price) AS 平均值 FROM tb_product
    GROUP BY d_id 
    
    --分组后查询语句 HAVING[对分组后的信息过滤]
    SELECT d_id,AVG(p_price) AS 平均值 FROM tb_product
    GROUP BY d_id 
    HAVING d_id > 2004
    
    SELECT d_id,AVG(p_price) AS 平均值 FROM tb_product
    GROUP BY d_id 
    HAVING AVG(p_price)>3
    
    --限制结果集行数 TOP
    SELECT TOP 5 * FROM tb_product
    
    --排名函数
    --ROW_NUMBER() OVER(PARTITION BY COLUMN ORDER BY COLUMN)
    
    --对 d_id分组,对p_price升序 排名产生新列 RID
    SELECT ROW_NUMBER() OVER(PARTITION BY d_id ORDER BY p_price ASC) RID,d_id,p_price,p_name FROM tb_product
    -- 先对d_id分组,然后对每组d_id进行p_price升序
    
    --对 p_price升序 产生排名新列 RID
    SELECT ROW_NUMBER() OVER(ORDER BY p_price ASC) RID,p_price,p_name FROM tb_product
    
    --去掉重复数据
    SELECT DISTINCT * FROM tb_product
    
    --联合结果集 UNION
    --基本的原则:每个结果集必须有相同的列数;每个结果集的列必须类型相容。
    --tb_test     c_id{int} c_name{varchar}
    --tb_demo     d_id{int} d_name{nchar}  类型相容
    SELECT t_id,t_name FROM tb_test
    UNION 
    SELECT d_id,d_name FROM tb_demo
    
    --UNION ALL
    SELECT t_id,t_name FROM tb_test
    UNION ALL
    SELECT d_id,d_name FROM tb_demo
    
    --1.UNION合并两个查询结果集,并且将其中完全重复的数据行合并为一条
    --2.Union因为要进行重复值扫描,所以效率低,因此如果不是确定要合并重复行,那么就用UNION ALL
    
    --数字函数
    --ABS() :求绝对值。
    --CEILING():舍入到最大整数 。3.33将被舍入为4、2.89将被舍入为3、-3.61将被舍入为-3。 Ceiling→天花板
    --FLOOR():舍入到最小整数。3.33将被舍入为3、2.89将被舍入为2、-3.61将被舍入为-4。 Floor→地板。
    --ROUND():四舍五入。舍入到“离我半径最近的数” 。Round→“半径”。Round(3.1425,2)。
    
    SELECT ABS(-4.2)
    SELECT CEILING(4.12)
    SELECT FLOOR(6.89)
    SELECT ROUND(4.5,0) --不要小数位
    SELECT ROUND(4.5,1) --保留一位小数
    
    --字符串函数
    --LEN() :计算字符串长度
    --LOWER() 、UPPER () :转小写、大写
    --LTRIM():字符串左侧的空格去掉 
    --RTRIM () :字符串右侧的空格去掉 LTRIM(RTRIM('         bb        '))
    --SUBSTRING(string,start_position,length) 
    --参数string为主字符串,start_position为子字符串在主字符串中的起始位置,length为子字符串的最大长度。SELECT SUBSTRING('abcdef111',2,3)
    --LEFT(string,数字) 截取左边 --RIGHT(string,数字)截取右边 SELECT LEN('123456') --返回指定字符串表达式的字符数 SELECT DATALENGTH('123456') --返回用于表示任何表达式的字节数。 SELECT LOWER('AbCd'),UPPER('AbCd') SELECT LTRIM(' aa'),RTRIM('bb '),LTRIM(RTRIM(' cc ')) SELECT SUBSTRING('abcdefg',1,2) --start_position从1开始 SELECT LEFT('aabbcc',2) --从左边开始,截取两个字符串 SELECT RIGHT('aabbcc',2) --日期函数 --GETDATE() :取得当前日期时间 --DATEADD (datepart , number, date ),计算增加以后的日期。参数date为待计算的日期;参数number为增量;参数datepart为计量单位,可选值见备注。
    --DATEADD(DAY, 3,date)为计算日期date3天后的日期,而DATEADD(MONTH ,-8,date)为计算日期date8个月之前的日期
    --DATEDIFF ( datepart , startdate , enddate ) :计算两个日期之间的差额。 datepart 为计量单位,可取值参考DateAdd。 --DATEPART (datepart,date):返回一个日期的特定部分 SELECT GETDATE() SELECT DATEADD(YEAR,3,'2014/10/02') SELECT DATEADD(MONTH,3,'2014/10/02') SELECT DATEADD(DAY,3,GETDATE()) SELECT DATEDIFF(YEAR,'1995/01/17',GETDATE()) SELECT DATEPART(YEAR,GETDATE()) --类型转换函数 --CAST ( expression AS data_type) --CONVERT ( data_type, expression) SELECT CAST('2014/10/11' AS DATETIME) --字符串转化为日期 SELECT CAST('11' AS INT) --字符串转化为int SELECT CAST(GETDATE() AS VARCHAR) --日期转化为字符串 SELECT CONVERT(DATETIME,'1995/01/17') --字符串转化为日期 SELECT CAST(right('aa1232011-08-09',10) AS DATETIME) --空值处理函数 ISNULL() --ISNULL(expression,value) :如果expression不为空则返回expression,否则返回value SELECT u_id,ISNULL(u_name,'佚名') FROM tb_user

    SQL常用函数集锦:http://www.cnblogs.com/dreamof/archive/2009/02/02/1382487.html

  • 相关阅读:
    Elasticsearch Query DSL 整理总结(三)—— Match Phrase Query 和 Match Phrase Prefix Query
    Elasticsearch Query DSL 整理总结(二)—— 要搞懂 Match Query,看这篇就够了
    Elasticsearch Query DSL 整理总结(一)—— Query DSL 概要,MatchAllQuery,全文查询简述
    Elasticsearch Java Rest Client API 整理总结 (三)——Building Queries
    Elasticsearch date 类型详解
    python 历险记(五)— python 中的模块
    python 历险记(四)— python 中常用的 json 操作
    python 历险记(三)— python 的常用文件操作
    Elasticsearch Java Rest Client API 整理总结 (二) —— SearchAPI
    Elasticsearch Java Rest Client API 整理总结 (一)——Document API
  • 原文地址:https://www.cnblogs.com/wykLog/p/4280138.html
Copyright © 2011-2022 走看看