精华内容
下载资源
问答
  • 常用统计求和SQL语句示例
    千次阅读
    2021-03-16 04:01:08

    推荐:两种mysql对自增id重新从1排序的方法本文介绍了两种mysql对自增id重新从1排序的方法,简少了对于某个项目初始化数据的工作量,感兴趣的朋友可以参考下 最近老是要为现在这个项目初始化数据,搞的很头疼,而且数据库的Id自增越来越大,要让自增重新从1开始:那么就用下面的方法吧: 方法一:如果曾经的数据

    SQL语句例一:求某一字段在某一时间段内数量的总和

    表名 销售 字段有:编号 金额 统计这个表在某一时间段内金额的总和

    select sum(金额) from 表 where 条件

    SQL语句例二:SQL读出记录并统计出某一字段的总和

    select * ,SUM(字段) from 表名 where 条件 group by 字段

    SQL语句例三:SQL语句按每天、每月、每年统计出销售总额

    表名: 订单 字段有Ordertime(订单时间),money(金额)

    根据订单时间统计每天、每月、每年的销售总额

    1、每年

    select year(ordertime) 年,

    sum(money) 销售合计

    from 订单

    group by year(ordertime)

    2、每月

    select year(ordertime) 年,

    month(ordertime) 月,

    sum(money) 销售合计

    from 订单

    group by year(ordertime),

    month(ordertime)

    3、每日

    select year(ordertime) 年,

    month(ordertime) 月,

    day(ordertime) 日,

    sum(Total) 销售合计

    from 订单

    group by year(ordertime),

    month(ordertime),

    day(ordertime)

    SQL语句例四:统计某月销售量前10

    表名: 销售

    字段: 编号, 商品名称 价格 日期

    统计某月商品销量最大的商品前10个商品及销量。

    SELECT DISTINCT TOP 10 商品名称, SUM(价格) AS 产品总价, COUNT(*) AS 销量 FROM 销售 GROUP BY title

    加上月份:

    SELECT DISTINCT TOP 10 商品名称, SUM(价格) AS 产品总价, COUNT(*) AS 销量 FROM 销售 WHERE (MONTH(sdate) = '你要查的月份数字') GROUP BY 商品名称

    统计某月商品销量最大的商品前10个商品及销量并按销量排序

    SELECT DISTINCT TOP 10 商品名称, SUM(价格) AS 产品总价, COUNT(*) AS 销量 FROM 销售 WHERE (MONTH(日期) = '你要查的月份数字') GROUP BY 商品名称 ORDER BY 销量 DESC

    分享:MySQL分页技术、6种分页方法总结这篇文章主要介绍了MySQL分页技术、6种分页方法总结,本文总结了6种分页的方法并分别一一讲解它们的特点,需要的朋友可以参考下 概述 有朋友问: MySQL的分页似乎一直是个问题,有什么优化方法吗? 网上看到赶集网XX推荐了一些分页方法,但似乎不太可行,你能点评一下吗? 方

    更多相关内容
  • sql 语句就是对数据库进行操作的一种语言。 常见语句 更新:update table1 set field1=value1 where 范围 查找:select * from table1 where field1 like ’%value1%’ (所有包含‘value1’这个模式的字符串) ...
  • MYSQL数据库SQL语句集锦

    千次阅读 2021-01-19 16:26:32
    *特别说明:FILED代表数据表字段,CONDITIONS代表where之后的条件,...创建数据库create database DATABASE;删除数据库drop databaseDATABASE创建数据表create table TABLENAME(`id` int unsigned auto_incre...

    *特别说明:FILED代表数据表字段,CONDITIONS代表where之后的条件,TABLENAME代表数据表名   []中括号内的内容代表 可有可无。

    创建数据库

    create  database  DATABASE;

    删除数据库

    drop database  DATABASE

    创建数据表

    create   table TABLENAME(

    `id`   int   unsigned  auto_increment  primary key,     //把id设置为主键,数据类型是无符号int型,自动递增

    //注:unsigned 只能紧跟在数据类型 后,顺序不能乱  unsigned相当于去掉数字负数部分   例:tinyint  默认取值范围 -128到127  unsigned 后  取值范围变 0到 255

    `userid`   int   unsigned references  FOREIGNTABLE(FOREIGNFILED),  //把userid设置为无符号整型,并设置成外键。关联主键表(FOREIGNTABLE)中的主键(FOREIGNFILED)

    `imgid`   int  unsigned  not null default 1  comment '图片ID',   //把imgid  设置成无符号整数  且不为空  默认值为1  注释说明为  “图片ID”

    foreign key(imgid)  references FOREIGNTABLE(FOREIGNFILED)    //设置  imgid 为外键。 关联主键表(FOREIGN_TABLE)中的主键(FOREIGN_FILED)   (下同)

    )engine=MYISAM  default charset=utf8  collate=utf8_general_ci    //设置数据表引擎为MYISAM  ,默认字符集为utf8  且字符集排序规则为   utf8_general_ci

    删除数据表

    drop table if  exists TABLENAME;

    添加字段

    alter table TABLENAME   add  colum  FIELD   DATATYPE   ATTRIBUTES    //DATATYPE   :字段数据类型     ATTRIBUTES字段属性

    eg: alter table test  ADD COLUMN  ceshi varchar(50)  not null default ''  comment  '测试字段'

    删除字段

    alter table TABLENAME   drop colum  FIELD ;

    eg:alter table test  DROP COLUMN  ceshi;

    修改字段属性

    alter table  TABENAME modify FIELD char(10) default 0 COMMENT "这是整数";

    修改字段名称

    alter table TABENAME  change FIELD mytest int unsigned not null default 1;

    添加默认值

    eg:   alter table test alter column user_id set default 1;

    删除默认值

    alter tableTABENAME alter column FIELD drop default;

    设置主键

    alter table TABENAME add primary key(FIELD1  [ ,FIELD2,.. ] );

    删除主键

    alter table TABLENAME drop primary key;   //注意:如果表里的主键是具有自增长属性的;那么直接删除是会报错的

    添加唯一索引

    alter tableTABLENAME    add  constraint   KEY_NAME  unique(FIELD);   //KEY_NAME  :索引名称  (下同)

    添加外键索引

    alter tableTABLENAME    add  constraint   KEY_NAME  foreign key(FIELD)  references  FOREIGN_TABLE(FOREIGN_FIELD) ;

    删除索引(外键、唯一)

    alter  table  TABLENAME    drop  indexKEY_NAME

    alter  table  TABLENAME    drop  key  KEY_NAME

    检查约束 :注意,MYSQL 目前并不支持check检查约束。可以用以下方法,设置字段为枚举值

    eg:   alter table TABENAME modify sex ENUM("男","女");

    修改表的存储引擎

    alter table TABENAME engine=INNODB

    修改数据表的自增长值

    alter table TABENAME AUTO_INCREMENT=100;

    添加数据

    insert [ into ]  TABLENAME (FIELD1,FELD2,...)  values(值1,值2,值3,...) ,(值1,值2,值3,...),...

    修改数据

    update TABLENAME   set FILED1=值1,FEILD2=值2,....  where   CONDITISONS

    删除数据

    delete  from  TABLENAME    [  where  CONDITIONS ];

    清空数据

    truncate   table  TABLENAME;   自增ID会重置。

    查询数据表所有

    select * from   TABLENAME

    统计查询(查询结果集中的数据条数)

    select count(FIELD)  from  TABLENAME  [ where  CONDITIONS]

    查询某个字段的最大、最小、平均、求和的值

    select max(FIELD)  from TABLENAME  [where  CONDITIONS];

    select min(FIELD)  from  TABLENAME  [where  CONDITIONS];

    select  avg(FIELD)  from  TABLENAME  [where  CONDITIONS];

    select  sum(FIELD)  from  TABLENAME  [where  CONDITIONS];

    排序查询

    select  *  from   TABLENAME  [ where CONDITIONS]   order by FIELD ;  从小到大排

    select  *  from   TABLENAME  [ where CONDITIONS]   order by FIELD  desc;  从大到小排

    限制查询

    select * from TABLENAME   [ where CONDITIONS]   [ order by FIELD ]  limit START,NUM      //START代表数据集的开始位置,0为第一条数据的位置,依次往后为数据的位置。NUM代表限制数据集的数据条数。至少1条。

    去重查询

    select distinct FILED1,FIELD2,...  from  TABLENAME    [ where CONDITIONS]   [ order by FIELD ]  [ limit START,NUM ]   //代表FIELD1,FIELD2,....所有字段都重复时,才去除重复的数据条。

    分组查询  (  group  by  FIELD)

    示例::select name, first_letter,sum(parent_id) as cid  from mm_city where `parent_id` = 18group byfirst_letter  havingcid>50   limit 0,1   //顺序不能乱。当有统计字段别名做条件时,不能用where,只能用 having。

    模糊查询

    select *  from  TABLENAME  where FIELD like  '%值%';      //  %  代表任意多个任意字符

    内连接查询

    select  TABLENAME1.FIELD1,TABLENAME2.FIELD2,TABLENAME3.FIELD3,...  from  TABLENAME1

    join TBALENAME2 on TABLENAME1.FIELD = TABLENAME2.FIELD

    ( join  TBALENAME3 on TABLENAME1.FIELD  = TABLENAME3.FIELD )

    ( join  TBALENAME3 on TABLENAME2.FIELD  = TABLENAME3.FIELD  )

    [  where   TABLENAME1.FIELD = 值 ...  ]        //查询或作为条件的字段中,若所有表中任意两张表都有该字段,则必须要指明数据表。即在字段前用 表名连上点(.)

    外连接

    左联接:left join   ;查询出来的数据,若有空值,则以在left join前面的表中的数据条数为准

    select  TABLENAME1.FIELD1,TABLENAME2.FIELD2,TABLENAME3.FIELD3,...  from  TABLENAME1

    left join TBALENAME2 on TABLENAME1.FIELD = TABLENAME2.FIELD

    (left join  TBALENAME3 on TABLENAME1.FIELD  = TABLENAME3.FIELD )

    (left join  TBALENAME3 on TABLENAME2.FIELD  = TABLENAME3.FIELD  )

    [  where   TABLENAME1.FIELD = 值 ...  ]        //查询或作为条件的字段中,若所有表中任意两张表都有该字段,则必须要指明数据表。即在字段前用 表名连上点(.)

    右联接:rightjoin   ;查询出来的数据,若有空值,则以在left join后面的表中的数据条数为准

    select  TABLENAME1.FIELD1,TABLENAME2.FIELD2,TABLENAME3.FIELD3,...  from  TABLENAME1

    right join TBALENAME2 on TABLENAME1.FIELD = TABLENAME2.FIELD

    (rightjoin  TBALENAME3 on TABLENAME1.FIELD  = TABLENAME3.FIELD )

    (rightjoin  TBALENAME3 on TABLENAME2.FIELD  = TABLENAME3.FIELD  )

    [  where   TABLENAME1.FIELD = 值 ...  ]        //查询或作为条件的字段中,若所有表中任意两张表都有该字段,则必须要指明数据表。即在字段前用 表名连上点(.)

    常用数据库函数

    LENGTH  :返回字符串或列的数据的长度

    eg: select length(city)  as citylen  from  Demo

    lower/upper:返回字符串的小写/大写

    eg:select UPPER(account)  from admininfo;

    REPLACE :替换字符串

    eg: select REPLACE('SQL SERVER','SQL','sql') 结果是'sql SERVER'

    POWER()取数值的幂值

    eg:select POWER(5,3) 结果是125

    ABS返回绝对值

    eg:select ABS(-99) 结果是99

    ROUND根据指定精度返回数值的四舍五入

    eg: select ROUND(3.1415926,3) 结果是3.142

    数据库对象

    存储过程

    drop procedure if exists pr_multi;   //如果存在名为pr_multi的存储过程,则删掉

    create procedure pr_multi( out c int,a int, b int )      //创建名为pr_multi的存储过程(函数),第一个为数据类型int的输出参数,第二、三个分别为数据类型int的输入参数

    begin              //过程体开始标记

    if a is null THEN         //判断  a 参数是否为空,若果为空,

    set a=10;      //给  a赋值10

    end if;

    if b is null THEN     //判断  b 参数是否为空,若果为空,

    set b=20;     //给  b 赋值20

    end if;

    set c=a*b;      //将参数c设置为  a  和  b  的乘积

    end              //过程体结束标记

    call pr_multi(@name,5,3);   //调用存储过程pr_multi     用变量  name  接收输出参数  c  ,给参数  a  传值  5,b传值  3

    select @name     //查询变量name的值。。  上述结果为  15

    详情请看  https://www.cnblogs.com/bobi-PHP-blog/p/7501392.html

    视图

    create view  VIEWNAME    //VIEWNAME    视图名称 (下同)

    as

    SELECTBLOCK   //查询语句

    eg:

    create  view myview  asselect   name,age,sex from users  where  id   > 10;

    查询视图:  select   FIELDS  from VIEWNAME

    触发器:

    create trigger  自定义名称

    after | before       insert | update | delete     on  表名  for each row

    begin

    SQL语句集

    end

    eg:

    create trigger mytrigger AFTER  insert on users for each row

    BEGIN

    insert into depts(`deptname`,`create_at`) VALUES('测试','2018-06-19 20:20:20');

    update depts set create_at = CURRENT_TIMESTAMP where id=1827;

    END

    事件:

    请参考:https://www.cnblogs.com/bobi-PHP-blog/p/7506306.html

    展开全文
  • 过滤字段 HAVING 过滤字段 = ‘过滤值’ SELECT t.field1 as field1,t.field2 as field2, sum(1) as len FROM tableName t GROUP BY t.field1,t.field2 HAVING t.field2 = '过滤值' 效果图如下: 4、 备份语句 pg_...

    1、数据分页(limit)

    select * from 表名 limit 取长度 offset 偏移量(0开始)

    select * from tableName limit 10 offset 0
    

    效果图如下:
    在这里插入图片描述

    2、单一字段分组统计(group by)

    SELECT 分组值列, 统计数列 FROM 表名 t GROUP BY 字段一

    SELECT  t.field1 as field1, sum(1) as len FROM tableName t GROUP BY t.field1
    

    效果图如下:
    在这里插入图片描述

    3、 组合字段分组统计(group by 和 having组合)

    SELECT 分组值列,过滤字段, 统计数列 FROM table t GROUP BY 字段一,过滤字段 HAVING 过滤字段 = ‘过滤值’

    SELECT t.field1 as field1,t.field2 as field2, sum(1) as len FROM tableName t GROUP BY t.field1,t.field2 HAVING t.field2 = '过滤值' 
    

    效果图如下:
    在这里插入图片描述

    4、 备份语句

    pg_dump -h 127.0.0.1 --port 5432 --username "postgres" --role "postgres" --dbname "em"  --format custom --blobs -W --encoding UTF8 --verbose --file "/var/lib/pgsql/11/backups/em_edata.backup" --schema "edata"
    

    4、 表及字段说明

    SELECT T
    	.TABLE_NAME 表名,
    	T.table_schema 表说明,
    	C.COLUMN_NAME 字段名,
    	C.table_schema 字段说明 
    FROM
    	information_schema.tables T,
    	INFORMATION_SCHEMA.COLUMNS C 
    WHERE
    	C.TABLE_NAME = T.TABLE_NAME 
    	AND T.table_schema = 'edss_fangxun';
    	
    SELECT
    	relname AS tabname,
    	A.attname AS NAME,
    	col_description ( A.attrelid, A.attnum ) AS COMMENT,
    	format_type ( A.atttypid, A.atttypmod ) AS TYPE,
    	A.attnotnull AS NOTNULL 
    FROM
    	pg_class AS C,
    	pg_attribute AS A 
    WHERE
    	C.relname LIKE'bas%' 
    	AND A.attrelid = C.oid 
    	AND A.attnum > 0
    
    展开全文
  • 经典SQL语句大全(1)

    千次阅读 2021-02-02 14:04:29
    一、基础1、说明:创建数据库CREATE DATABASE database-name2、说明:删除数据库drop database dbname3、说明:备份sql server--- 创建 备份数据的 deviceUSE masterEXEC sp_addumpdevice 'disk', 'testBack', 'c:\...

    一、基础

    1、说明:创建数据库

    CREATE DATABASE database-name

    2、说明:删除数据库

    drop database dbname

    3、说明:备份sql server

    --- 创建 备份数据的 device

    USE master

    EXEC sp_addumpdevice 'disk', 'testBack', 'c:\mssql7backup\MyNwind_1.dat'

    --- 开始 备份

    BACKUP DATABASE pubs TO testBack

    4、说明:创建新表

    create table tabname(col1 type1 [not null] [primary key],col2 type2 [not null],..)

    根据已有的表创建新表:

    A:create table tab_new like tab_old (使用旧表创建新表)

    B:create table tab_new as select col1,col2… from tab_old definition only

    5、说明:删除新表

    drop table tabname

    6、说明:增加一个列

    Alter table tabname add column col type

    注:列增加后将不能删除。DB2中列加上后数据类型也不能改变,唯一能改变的是增加varchar类型的长度。

    7、说明:添加主键: Alter table tabname add primary key(col)

    说明:删除主键: Alter table tabname drop primary key(col)

    8、说明:创建索引:create [unique] index idxname on tabname(col….)

    删除索引:drop index idxname

    注:索引是不可更改的,想更改必须删除重新建。

    9、说明:创建视图:create view viewname as select statement

    删除视图:drop view viewname

    10、说明:几个简单的基本的sql语句

    选择:select * from table1 where 范围

    插入:insert into table1(field1,field2) values(value1,value2)

    删除:delete from table1 where 范围

    更新:update table1 set field1=value1 where 范围

    查找:select * from table1 where field1 like ’%value1%’ ---like的语法很精妙,查资料!

    排序:select * from table1 order by field1,field2 [desc]

    总数:select count as totalcount from table1

    求和:select sum(field1) as sumvalue from table1

    平均:select avg(field1) as avgvalue from table1

    最大:select max(field1) as maxvalue from table1

    最小:select min(field1) as minvalue from table1

    11、说明:几个高级查询运算词

    A: UNION 运算符

    UNION 运算符通过组合其他两个结果表(例如 TABLE1 和 TABLE2)并消去表中任何重复行而派生出一个结果表。当 ALL 随 UNION 一起使用时(即 UNION ALL),不消除重复行。两种情况下,派生表的每一行不是来自 TABLE1 就是来自 TABLE2。

    B: EXCEPT 运算符

    EXCEPT 运算符通过包括所有在 TABLE1 中但不在 TABLE2 中的行并消除所有重复行而派生出一个结果表。当 ALL 随 EXCEPT 一起使用时 (EXCEPT ALL),不消除重复行。

    C: INTERSECT 运算符

    INTERSECT 运算符通过只包括 TABLE1 和 TABLE2 中都有的行并消除所有重复行而派生出一个结果表。当 ALL 随 INTERSECT 一起使用时 (INTERSECT ALL),不消除重复行。

    注:使用运算词的几个查询结果行必须是一致的。

    12、说明:使用外连接

    A、left (outer) join:

    左外连接(左连接):结果集几包括连接表的匹配行,也包括左连接表的所有行。

    SQL: select a.a, a.b, a.c, b.c, b.d, b.f from a LEFT OUT JOIN b ON a.a = b.c

    B:right (outer) join:

    右外连接(右连接):结果集既包括连接表的匹配连接行,也包括右连接表的所有行。

    C:full/cross (outer) join:

    全外连接:不仅包括符号连接表的匹配行,还包括两个连接表中的所有记录。

    12、分组:Group by:

    一张表,一旦分组 完成后,查询后只能得到组相关的信息。

    组相关的信息:(统计信息) count,sum,max,min,avg 分组的标准)

    在SQLServer中分组时:不能以text,ntext,image类型的字段作为分组依据

    在selecte统计函数中的字段,不能和普通的字段放在一起;

    13、对数据库进行操作:

    分离数据库: sp_detach_db; 附加数据库:sp_attach_db 后接表明,附加需要完整的路径名

    14.如何修改数据库的名称:

    sp_renamedb 'old_name', 'new_name'

    二、提升

    1、说明:复制表(只复制结构,源表名:a 新表名:b) (Access可用)

    法一:select * into b from a where 1<>1(仅用于SQlServer)

    法二:select top 0 * into b from a

    2、说明:拷贝表(拷贝数据,源表名:a 目标表名:b) (Access可用)

    insert into b(a, b, c) select d,e,f from b;

    3、说明:跨数据库之间表的拷贝(具体数据使用绝对路径) (Access可用)

    insert into b(a, b, c) select d,e,f from b in ‘具体数据库’ where 条件

    例子:..from b in '"&Server.MapPath(".")&"\data.mdb" &"' where..

    4、说明:子查询(表名1:a 表名2:b)

    select a,b,c from a where a IN (select d from b ) 或者: select a,b,c from a where a IN (1,2,3)

    5、说明:显示文章、提交人和最后回复时间

    select a.title,a.username,b.adddate from table a,(select max(adddate) adddate from table where table.title=a.title) b

    6、说明:外连接查询(表名1:a 表名2:b)

    select a.a, a.b, a.c, b.c, b.d, b.f from a LEFT OUT JOIN b ON a.a = b.c

    7、说明:在线视图查询(表名1:a )

    select * from (SELECT a,b,c FROM a) T where t.a > 1;

    8、说明:between的用法,between限制查询数据范围时包括了边界值,not between不包括

    select * from table1 where time between time1 and time2

    select a,b,c, from table1 where a not between 数值1 and 数值2

    9、说明:in 的使用方法

    select * from table1 where a [not] in (‘值1’,’值2’,’值4’,’值6’)

    10、说明:两张关联表,删除主表中已经在副表中没有的信息

    delete from table1 where not exists ( select * from table2 where table1.field1=table2.field1 )

    11、说明:四表联查问题:

    select * from a left inner join b on a.a=b.b right inner join c on a.a=c.c inner join d on a.a=d.d where .....

    12、说明:日程安排提前五分钟提醒

    SQL: select * from 日程安排 where datediff('minute',f开始时间,getdate())>5

    13、说明:一条sql 语句搞定数据库分页

    select top 10 b.* from (select top 20 主键字段,排序字段 from 表名 order by 排序字段 desc) a,表名 b where b.主键字段 = a.主键字段 order by a.排序字段

    具体实现:

    关于数据库分页:

    declare @start int,@end int

    @sql nvarchar(600)

    set @sql=’select top’+str(@end-@start+1)+’+from T where rid not in(select top’+str(@str-1)+’Rid from T where Rid>-1)’

    exec sp_executesql @sql

    注意:在top后不能直接跟一个变量,所以在实际应用中只有这样的进行特殊的处理。Rid为一个标识列,如果top后还有具体的字段,这样做是非常有好处的。因为这样可以避免 top的字段如果是逻辑索引的,查询的结果后实际表中的不一致(逻辑索引中的数据有可能和数据表中的不一致,而查询时如果处在索引则首先查询索引)

    14、说明:前10条记录

    select top 10 * form table1 where 范围

    15、说明:选择在每一组b值相同的数据中对应的a最大的记录的所有信息(类似这样的用法可以用于论坛每月排行榜,每月热销产品分析,按科目成绩排名,等等.)

    select a,b,c from tablename ta where a=(select max(a) from tablename tb where tb.b=ta.b)

    16、说明:包括所有在 TableA 中但不在 TableB和TableC 中的行并消除所有重复行而派生出一个结果表

    (select a from tableA ) except (select a from tableB) except (select a from tableC)

    17、说明:随机取出10条数据

    select top 10 * from tablename order by newid()

    18、说明:随机选择记录

    select newid()

    19、说明:删除重复记录

    1),delete from tablename where id not in (select max(id) from tablename group by col1,col2,...)

    2),select distinct * into temp from tablename

    delete from tablename

    insert into tablename select * from temp

    评价: 这种操作牵连大量的数据的移动,这种做法不适合大容量但数据操作

    3),例如:在一个外部表中导入数据,由于某些原因第一次只导入了一部分,但很难判断具体位置,这样只有在下一次全部导入,这样也就产生好多重复的字段,怎样删除重复字段

    alter table tablename

    --添加一个自增列

    add column_b int identity(1,1)

    delete from tablename where column_b not in(

    select max(column_b) from tablename group by column1,column2,...)

    alter table tablename drop column column_b

    20、说明:列出数据库里所有的表名

    select name from sysobjects where type='U' // U代表用户

    21、说明:列出表里的所有的列名

    select name from syscolumns where id=object_id('TableName')

    22、说明:列示type、vender、pcs字段,以type字段排列,case可以方便地实现多重选择,类似select 中的case。

    select type,sum(case vender when 'A' then pcs else 0 end),sum(case vender when 'C' then pcs else 0 end),sum(case vender when 'B' then pcs else 0 end) FROM tablename group by type

    显示结果:

    type vender pcs

    电脑 A 1

    电脑 A 1

    光盘 B 2

    光盘 A 2

    手机 B 3

    手机 C 3

    23、说明:初始化表table1

    TRUNCATE TABLE table1

    24、说明:选择从10到15的记录

    select top 5 * from (select top 15 * from table order by id asc) table_别名 order by id desc

    三、技巧

    1、1=1,1=2的使用,在SQL语句组合时用的较多

    “where 1=1” 是表示选择全部 “where 1=2”全部不选,

    如:

    if @strWhere !=''

    begin

    set @strSQL = 'select count(*) as Total from [' + @tblName + '] where ' + @strWhere

    end

    else

    begin

    set @strSQL = 'select count(*) as Total from [' + @tblName + ']'

    end

    我们可以直接写成

    错误!未找到目录项。

    set @strSQL = 'select count(*) as Total from [' + @tblName + '] where 1=1 安定 '+ @strWhere 2、收缩数据库

    --重建索引

    DBCC REINDEX

    DBCC INDEXDEFRAG

    --收缩数据和日志

    DBCC SHRINKDB

    DBCC SHRINKFILE

    3、压缩数据库

    dbcc shrinkdatabase(dbname)

    4、转移数据库给新用户以已存在用户权限

    exec sp_change_users_login 'update_one','newname','oldname'

    go

    5、检查备份集

    RESTORE VERIFYONLY from disk='E:\dvbbs.bak'

    6、修复数据库

    ALTER DATABASE [dvbbs] SET SINGLE_USER

    GO

    DBCC CHECKDB('dvbbs',repair_allow_data_loss) WITH TABLOCK

    GO

    ALTER DATABASE [dvbbs] SET MULTI_USER

    GO

    7、日志清除

    SET NOCOUNT ON

    DECLARE @LogicalFileName sysname,

    @MaxMinutes INT,

    @NewSize INT

    USE tablename -- 要操作的数据库名

    SELECT @LogicalFileName = 'tablename_log', -- 日志文件名

    @MaxMinutes = 10, -- Limit on time allowed to wrap log.

    @NewSize = 1 -- 你想设定的日志文件的大小(M)

    Setup / initialize

    DECLARE @OriginalSize int

    SELECT @OriginalSize = size

    FROM sysfiles

    WHERE name = @LogicalFileName

    SELECT 'Original Size of ' + db_name() + ' LOG is ' +

    CONVERT(VARCHAR(30),@OriginalSize) + ' 8K pages or ' +

    CONVERT(VARCHAR(30),(@OriginalSize*8/1024)) + 'MB'

    FROM sysfiles

    WHERE name = @LogicalFileName

    CREATE TABLE DummyTrans

    (DummyColumn char (8000) not null)

    DECLARE @Counter INT,

    @StartTime DATETIME,

    @TruncLog VARCHAR(255)

    SELECT @StartTime = GETDATE(),

    @TruncLog = 'BACKUP LOG ' + db_name() + ' WITH TRUNCATE_ONLY'

    DBCC SHRINKFILE (@LogicalFileName, @NewSize)

    EXEC (@TruncLog)

    -- Wrap the log if necessary.

    WHILE @MaxMinutes > DATEDIFF (mi, @StartTime, GETDATE()) -- time has not expired

    AND @OriginalSize = (SELECT size FROM sysfiles WHERE name = @LogicalFileName)

    AND (@OriginalSize * 8 /1024) > @NewSize

    BEGIN -- Outer loop.

    SELECT @Counter = 0

    WHILE ((@Counter < @OriginalSize / 16) AND (@Counter < 50000))

    BEGIN -- update

    INSERT DummyTrans VALUES ('Fill Log') DELETE DummyTrans

    SELECT @Counter = @Counter + 1

    END

    EXEC (@TruncLog)

    END

    SELECT 'Final Size of ' + db_name() + ' LOG is ' +

    CONVERT(VARCHAR(30),size) + ' 8K pages or ' +

    CONVERT(VARCHAR(30),(size*8/1024)) + 'MB'

    FROM sysfiles

    WHERE name = @LogicalFileName

    DROP TABLE DummyTrans

    SET NOCOUNT OFF

    8、说明:更改某个表

    exec sp_changeobjectowner 'tablename','dbo'

    9、存储更改全部表

    CREATE PROCEDURE dbo.User_ChangeObjectOwnerBatch

    @OldOwner as NVARCHAR(128),

    @NewOwner as NVARCHAR(128)

    AS

    DECLARE @Name as NVARCHAR(128)

    DECLARE @Owner as NVARCHAR(128)

    DECLARE @OwnerName as NVARCHAR(128)

    DECLARE curObject CURSOR FOR

    select 'Name' = name,

    'Owner' = user_name(uid)

    from sysobjects

    where user_name(uid)=@OldOwner

    order by name

    OPEN curObject

    FETCH NEXT FROM curObject INTO @Name, @Owner

    WHILE(@@FETCH_STATUS=0)

    BEGIN

    if @Owner=@OldOwner

    begin

    set @OwnerName = @OldOwner + '.' + rtrim(@Name)

    exec sp_changeobjectowner @OwnerName, @NewOwner

    end

    -- select @name,@NewOwner,@OldOwner

    FETCH NEXT FROM curObject INTO @Name, @Owner

    END

    close curObject

    deallocate curObject

    GO

    10、SQL SERVER中直接循环写入数据

    declare @i int

    set @i=1

    while @i<30

    begin

    insert into test (userid) values(@i)

    set @i=@i+1

    end

    案例:

    有如下表,要求就裱中所有沒有及格的成績,在每次增長0.1的基礎上,使他們剛好及格:

    Name score

    Zhangshan80

    Lishi 59

    Wangwu 50

    Songquan69

    while((select min(score) from tb_table)<60)

    begin

    update tb_table set score =score*1.01

    where score<60

    if (select min(score) from tb_table)>60

    break

    else

    continue

    end

    分享到:

    18e900b8666ce6f233d25ec02f95ee59.png

    72dd548719f0ace4d5f9bca64e1d7715.png

    2011-07-13 11:07

    浏览 797

    评论

    展开全文
  • 假设数据列为:duA、zhiB、C、D、E、F、G纵向汇总dao语句:select sum(A),sum(B),sum(C),sum(D),sum(E),sum(F),sum(G) from 表名横向汇总的SQL语句是:select A,B,C,D,E,F,G,A+B+C+D+E+F+G from 表名求所有数据总和...
  • SQL (structured query language)结构...SQL语句 注释快捷键: ctrl + / 取消注释快捷键: ctrl + shift + / 1.对表的操作 创建表: create table 表名( 字段名 类型 约束(不是必填选项), 字段名 类型 约.
  • 1、创建数据库 create database 库名; 2、选中库 use 库名; 3、查看当前数据库信息 show create database 库名; 4、查看所有数据库 show database; 5、修改数据库编码 alter database 库名 ...
  • 利用SQL语句创建数据库

    千次阅读 2022-04-08 15:07:14
    创建数据库(Database) create database 数据库名; 创建Table create table 表名(列名 数据类型 【Primary key| Unique】【Not null】 【,列名 数据类型 【Not null】,...】); "【】"表示其括起的内容...
  • SQL语句数据库的灵魂,下面要给大家介绍的是SQL语句求和的各种方法,希望对你们有所帮助吧。一、SQL语句是什么?了解求和方法之前,我们得先了解SQL语句是什么。SQL是什么?1.SQL全名Structured Query Language:...
  • 2.2 配置三.SQL3.1 什么是SQL3.2 SQL通用的语法3.3 SQL分类四.DDL:操作数据库、表4.1 C(Create):创建 一.数据库的基本概念 1.1 数据库的英文单词 答:DataBase 简称:DB 1.2 什么是数据库? 答:用于存储和管理...
  • 数据库SQL语句期末总复习

    千次阅读 2021-12-13 10:10:26
    SQL语句的分类 DDL(数据定义语言):create、drop、alter对表结构进行增删改 DQL(数据查询语言):select查询语句 DML(数据操作语言):insert、delete、update对表中数据进行增删改 DCL(数据控制语言):grant、revoke...
  • SQL数据库常用语句大全

    千次阅读 2020-02-13 14:49:55
    数据库常用语句 以管理员身份运行命令提示符环境,启动数据库服务(其中MySQL57为数据库服务名,查找方法:右键我的电脑->管理->服务,):net start MySQL57 关闭数据库服务:net stop MySQL57 启动MySQL...
  • MySQL5.5数据库&SQL语句

    2022-04-26 19:41:39
    关系型:关系型数据库的表之间一般是有关系的,db2、MySQL、SQL server、Oracle。比如班级表和学生表,学生表中的班级ID对应着班级表的ID,这种对应关系称外键。 非关系型数据库:表与表之间不存在关系,比如开发...
  • SqlServer数据库SQL语句(超详细)

    千次阅读 2018-10-29 11:36:00
    一、基础 1、说明:创建数据库 CREATE DATABASE database-name ...3、说明:备份sql server --- 创建 备份数据的 device USE master EXEC sp_addumpdevice 'disk', 'testBack', 'c:\mssql7backup\MyNwind...
  • MySql数据库介绍及常用SQL语句(整理)【数据库介绍】1、关系型数据库2、非关系型数据库【MySQL数据库基本应用】【SQL】语言介绍【数据库定义语言】【库操作】【表操作】DML【数据库操作语言】DQL【数据库查询语言】...
  • SQLSERVER数据库、表的创建及SQL语句命令 备份,还原,创建,删除,查询,修改 ** 数据库定义及操作命令:** 按照数据结构来组织、存储和管理数据的仓库。由表、关系以及操作对象组成,把数据存放在数据表中。 修改数据库...
  • SQL从入门到精通分析系列文章】为实际开发中的点点滴滴的总结,从...select 查询单表数据语句1 从单表中查询所有的行和列查询表中所有的数据select 在 SQL 中,字符 "*" 具有特殊的含义,使用用它,将从指定的表中...
  • 一、SQL语言 DQL-------数据查询语言 select...from...where DML-------数据操纵语言 insert、update、delete DDL--------数据定义语言 create、alter、drop DCL--------数据控制语言 commit、rollback、...
  • 登录数据库 mysql -h服务器地址 -u用户名 -p回车+密码 也可直接-p密码 C:\Users\11371>mysql -hlocalhost -uroot -p Enter password: ********** C:\Users\11371>mysql -hlocalhost -uroot -...
  • 2.1、SQL数据类型 1).字符型数据: 3).整数型数据 4).精确小数型数据 5).近似数值类型 6).货币型数据 7).位类型数据 2.2 实例创建表 3、向表中插入 4、主键primary key 5、查询字段 5.1、使用...
  • MySQL数据库SQL语句

    千次阅读 多人点赞 2016-10-27 15:01:47
    MySQL数据库SQL语句 MySQL数据库:完整性约束 MySQL数据库备份与还原 MySQL数据库:编码 1、SQL概述1.1 什么是SQLSQL(Structured Query Language)是“结构化查询语言”,它是对关系型数据库的操作语言。它可以...
  • 假如你的数据列名为:a,b,c,d,e,f,g。那么你横向SQLselecta,b,c...那么你纵向汇总的32313133353236313431303231363533e59b9ee7ad9431333365633837SQL语句是:selesum(a),sum(b),sum(c),sum(d),sum(e),sum(f),sum(g) f...
  • 基础篇:数据库 SQL 入门教程

    万次阅读 多人点赞 2021-09-02 21:13:58
    超全SQL教程,收藏就完事了!
  • 数据库面试题:常见面试SQL语句

    千次阅读 2021-04-17 16:37:39
    常见面试SQL语句 1. 创建一个表: 创建语法为 CREATE TABLE table_name (column_name column_type); 实例如下: create TABLE student ( s_id INT NOT NULL, s_name VARCHAR(20) ); 2. 有一张shop表,有三个字段...
  • sql 语句大全

    2021-01-28 10:09:09
    查看数据库的版本select @@version2. 查看数据库所在机器e68a84e8a2ad3231313335323631343130323136353331333337383337操作系统参数exec master..xp_msver3. 查看数据库启动的参数sp_configure4. 查看数据库启动...
  • Oracle常用SQL语句大全

    千次阅读 2020-06-02 11:10:11
    ORACLE常用SQL语句大全 一、基础1、说明:创建数据库 CREATE DATABASE database-name 2、说明:删除数据库 drop database dbname 3、说明:备份sql server--- 创建 备份数据的 device USE master EXEC sp_...
  • 数据库执行DQL语句不会对数据进行改变,而是让数据库发送结果集给客户端。 一些简单语法: select 列名-------->要查询的列名称 from 表名--------->要查询的表名称 where 条件-------->行条件(要查询的...
  • SQL基本语句(整理)

    2022-03-04 08:32:36
    数据定义语言,用来定义数据库对象(数据库,表,字段) ①查询 查询所有数据库 show databases; 查询当前数据库 select database(); ②创建 create database [if not exists] 数据库名 [default ...
  • 经典SQL语句大全(绝对的经典) 一、基础篇 1、创建数据库 语法: create database database-namek 2、说明:删除数据库 drop database dbname 3、备份sql server —创建 备份数据的 device USE master EXEC sp_...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 30,172
精华内容 12,068
关键字:

数据库求和sql语句