1. 程式人生 > >SQL常用查詢模板(個人在公司最常用的)

SQL常用查詢模板(個人在公司最常用的)

sql server t-sql高階查詢

新增欄位:
alter table [表名] add [欄位名] nvarchar (50) null
alter table [表名]
      alter column [欄位名]     varchar(100)  not null

--刪除欄位:
alter table [表名] drop column [欄位名]

--修改欄位:
alter table [表名] alter column [欄位名] nvarchar (50) null

--重命名錶:(access 重命名錶,請參考文章:在access資料庫中重命名錶)
sp_rename '表名', '新表名', 'object'

--新建約束:
alter table [表名] add constraint 約束名 check ([約束欄位] <= '2000-1-1')

--刪除約束:
alter table [表名] drop constraint 約束名

--新建預設值
alter table [表名] add constraint 預設值名 default '51windows.net' for [欄位名]

--刪除預設值
alter table [表名] drop constraint 預設值名


高階查詢在資料庫中用得是最頻繁的,也是應用最廣泛的。

? 基本常用查詢

--select
select * from student;
 
--all 查詢所有
select all sex from student;
 
--distinct 過濾重複
select distinct sex from student;
 
--count 統計
select count(*) from student;
select count(sex) from student;
select count(distinct sex) from student;
 
--top 取前n條記錄
select top 3 * from student;
 
--alias column name 列重新命名
select id as 編號, name '名稱', sex 性別 from student;
 
--alias table name 表重新命名
select id, name, s.id, s.name from student s;
 
--column 列運算
select (age + id) col from student;
select s.name + '-' + c.name from classes c, student s where s.cid = c.id;
 
--where 條件
select * from student where id = 2;
select * from student where id > 7;
select * from student where id < 3;
select * from student where id <> 3;
select * from student where id >= 3;
select * from student where id <= 5;
select * from student where id !> 3;
select * from student where id !< 5;
 
--and 並且
select * from student where id > 2 and sex = 1;
 
--or 或者
select * from student where id = 2 or sex = 1;
 
--between ... and ... 相當於並且
select * from student where id between 2 and 5;
select * from student where id not between 2 and 5;
 
--like 模糊查詢
select * from student where name like  '%a%';
select * from student where name like  '%[a][o]%';  --中間字元含a,o的
select * from student where name not like  '%a%';  
select * from student where name like 'ja%';        --開頭含ja的
select * from student where name not like '%[j,n]%';
select * from student where name like '%[j,n,a]%';  --中間字元含j,n,a中任意一
select * from student where name like '%[^ja,as,on]%';
select * from student where name like '%[ja_on]%';
 
--in 子查詢
select * from student where id in (1, 2);
 
--not in 不在其中
select * from student where id not in (1, 2);
 
--is null 是空
select * from student where age is null;
 
--is not null 不為空
select * from student where age is not null;
 
--order by 排序
select * from student order by name;
select * from student order by name desc;
select * from student order by name asc;
 
--group by 分組
按照年齡進行分組統計
select count(age), age from student group by age;
按照性別進行分組統計
select count(*), sex from student group by sex;
按照年齡和性別組合分組統計,並排序
select count(*), sex from student group by sex, age order by age;
按照性別分組,並且是id大於2的記錄最後按照性別排序
select count(*), sex from student where id > 2 group by sex order by sex;
查詢id大於2的資料,並完成運算後的結果進行分組和排序
select count(*), (sex * id) new from student where id > 2 group by sex * id order by sex * id;
 
--group by all 所有分組
按照年齡分組,是所有的年齡
select count(*), age from student group by all age;
 
--having 分組過濾條件
按照年齡分組,過濾年齡為空的資料,並且統計分組的條數和現實年齡資訊
select count(*), age from student group by age having age is not null;
 
按照年齡和cid組合分組,過濾條件是cid大於1的記錄
select count(*), cid, sex from student group by cid, sex having cid > 1;
 
按照年齡分組,過濾條件是分組後的記錄條數大於等於2
select count(*), age from student group by age having count(age) >= 2;
 
按照cid和性別組合分組,過濾條件是cid大於1,cid的最大值大於2
select count(*), cid, sex from student group by cid, sex having cid > 1 and max(cid) > 2;
? 巢狀子查詢

    子查詢是一個巢狀在select、insert、update或delete語句或其他子查詢中的查詢。
	任何允許使用表示式的地方都可以使用子查詢。子查詢也稱為內部查詢或內部選擇,
	而包含子查詢的語句也成為外部查詢或外部選擇。

 

# from (select … table)示例

將一個table的查詢結果當做一個新表進行查詢
select * from (
    select id, name from student where sex = 1
) t where t.id > 2;
上面括號中的語句,就是子查詢語句(內部查詢)。在外面的是外部查詢,其中外部查詢可以包含以下語句:

     1、 包含常規選擇列表元件的常規select查詢

     2、 包含一個或多個表或檢視名稱的常規from語句

     3、 可選的where子句

     4、 可選的group by子句

     5、 可選的having子句

 

# 示例

查詢班級資訊,統計班級學生人生
select *, (select count(*) from student where cid = classes.id) as num 
from classes order by num;
 

# in, not in子句查詢示例

查詢班級id大於小於的這些班級的學生資訊
select * from student where cid in (
    select id from classes where id > 2 and id < 4
);
 
查詢不是班的學生資訊
select * from student where cid not in (
    select id from classes where name = '2班'
)
in、not in 後面的子句返回的結果必須是一列,這一列的結果將會作為查詢條件對應前面的條件。如cid對應子句的id;

 

# exists和not exists子句查詢示例

查詢存在班級id為的學生資訊
select * from student where exists (
    select * from classes where id = student.cid and id = 3
);
 
查詢沒有分配班級的學生資訊
select * from student where not exists (
    select * from classes where id = student.cid
);
exists和not exists查詢需要內部查詢和外部查詢進行一個關聯的條件,
如果沒有這個條件將是查詢到的所有資訊。如:id等於student.id;

 

# some、any、all子句查詢示例

查詢班級的學生年齡大於班級的學生的年齡的資訊
select * from student where cid = 5 and age > all (
    select age from student where cid = 3
);
 
select * from student where cid = 5 and age > any (
    select age from student where cid = 3
);
 
select * from student where cid = 5 and age > some (
    select age from student where cid = 3
);
 

? 聚合查詢

1、 distinct去掉重複資料

select distinct sex from student;
select count(sex), count(distinct sex) from student;
 

2、 compute和compute by彙總查詢

對年齡大於的進行彙總
select age from student 
where age > 20 order by age compute sum(age) by age;
 
對年齡大於的按照性別進行分組彙總年齡資訊
select id, sex, age from student 
where age > 20 order by sex, age compute sum(age) by sex;
 
按照年齡分組彙總
select age from student 
where age > 20 order by age, id compute sum(age);
 
按照年齡分組,年齡彙總,id找最大值
select id, age from student 
where age > 20 order by age compute sum(age), max(id);
compute進行彙總前面是查詢的結果,後面一條結果集就是彙總的資訊。
compute子句中可以新增多個彙總表示式,可以新增的資訊如下:

     a、 可選by關鍵字。它是每一列計算指定的行聚合

     b、 行聚合函式名稱。包括sum、avg、min、max、count等

     c、 要對其執行聚合函式的列

     compute by適合做先分組後彙總的業務。compute by後面的列一定要是order by中出現的列。

 

3、 cube彙總

cube彙總和compute效果類似,但語法較簡潔,而且返回的是一個結果集。

select count(*), sex from student group by sex with cube;
select count(*), age, sum(age) from student where age is not null group by age with cube;
cube要結合group by語句完成分組彙總


4.動態查詢
 where panelid<>-1  
    and ((@itemid=-1) or (
[email protected]
)) and ((@prodorderid=-1) or ([email protected])) and ((@lineid=-1) or (resid in(select resid from #tmpres))) and ((@opid=-1) or ([email protected])) ? 排序函式 排序在很多地方需要用到,需要對查詢結果進行排序並且給出序號。比如: 1、 對某張表進行排序,序號需要遞增不重複的 2、 對學生的成績進行排序,得出名次,名次可以並列,但名次的序號是連續遞增的 3、 在某些排序的情況下,需要跳空序號,雖然是並列 基本語法 排序函式 over([分組語句] 排序子句[desc][asc]) 排序子句 order by 列名, 列名 分組子句 partition by 分組列, 分組列 # row_number函式 根據排序子句給出遞增連續序號 按照名稱排序的順序遞增 select s.id, s.name, cid, c.name, row_number() over(order by c.name) as number from student s, classes c where cid = c.id; # rank函式函式 根據排序子句給出遞增的序號,但是存在並列並且跳空 順序遞增 select id, name, rank() over(order by cid) as rank from student; 跳過相同遞增 select s.id, s.name, cid, c.name, rank() over(order by c.name) as rank from student s, classes c where cid = c.id; # dense_rank函式 根據排序子句給出遞增的序號,但是存在並列不跳空 不跳過,直接遞增 select s.id, s.name, cid, c.name, dense_rank() over(order by c.name) as dense from student s, classes c where cid = c.id; # partition by分組子句 可以完成對分組的資料進行增加排序,partition by可以與以上三個函式聯合使用。 利用partition by按照班級名稱分組,學生id排序 select s.id, s.name, cid, c.name, row_number() over(partition by c.name order by s.id) as rank from student s, classes c where cid = c.id; select s.id, s.name, cid, c.name, rank() over(partition by c.name order by s.id) as rank from student s, classes c where cid = c.id; select s.id, s.name, cid, c.name, dense_rank() over(partition by c.name order by s.id) as rank from student s, classes c where cid = c.id; # ntile平均排序函式 將要排序的資料進行平分,然後按照等分排序。ntile中的引數代表分成多少等分。 select s.id, s.name, cid, c.name, ntile(5) over(order by c.name) as ntile from student s, classes c where cid = c.id; ? 集合運算 操作兩組查詢結果,進行交集、並集、減集運算 1、 union和union all進行並集運算 --union 並集、不重複 select id, name from student where name like 'ja%' union select id, name from student where id = 4; --並集、重複 select * from student where name like 'ja%' union all select * from student; 2、 intersect進行交集運算 --交集(相同部分) select * from student where name like 'ja%' intersect select * from student; 3、 except進行減集運算 --減集(除相同部分) select * from student where name like 'ja%' except select * from student where name like 'jas%'; ? 公式表表達式 查詢表的時候,有時候中間表需要重複使用,這些子查詢被重複查詢呼叫,不但效率低, 而且可讀性低,不利於理解。那麼公式表表達式可以解決這個問題。 我們可以將公式表表達式(cet)視為臨時結果集, 在select、insert、update、delete或是create view語句的執行範圍內進行定義。 --表示式 with statnum(id, num) as ( select cid, count(*) from student where id > 0 group by cid ) select id, num from statnum order by id; with statnum(id, num) as ( select cid, count(*) from student where id > 0 group by cid ) select max(id), avg(num) from statnum; ? 連線查詢 1、 簡化連線查詢 --簡化聯接查詢 select s.id, s.name, c.id, c.name from student s, classes c where s.cid = c.id; 2、 left join左連線 --左連線 select s.id, s.name, c.id, c.name from student s left join classes c on s.cid = c.id; 3、 right join右連線 --右連線 select s.id, s.name, c.id, c.name from student s right join classes c on s.cid = c.id; 4、 inner join內連線 --內連線 select s.id, s.name, c.id, c.name from student s inner join classes c on s.cid = c.id; --inner可以省略 select s.id, s.name, c.id, c.name from student s join classes c on s.cid = c.id; 5、 cross join交叉連線 --交叉聯接查詢,結果是一個笛卡兒乘積 select s.id, s.name, c.id, c.name from student s cross join classes c --where s.cid = c.id; 6、 自連線(同一張表進行連線查詢) --自連線 select distinct s.* from student s, student s1 where s.id <> s1.id and s.sex = s1.sex; ? 函式 1、 聚合函式 max最大值、min最小值、count統計、avg平均值、sum求和、var求方差 select max(age) max_age, min(age) min_age, count(age) count_age, avg(age) avg_age, sum(age) sum_age, var(age) var_age from student; 2、 日期時間函式 select dateadd(day, 3, getdate());--加天 select dateadd(year, 3, getdate());--加年 select dateadd(hour, 3, getdate());--加小時 --返回跨兩個指定日期的日期邊界數和時間邊界數 select datediff(day, '2011-06-20', getdate()); --相差秒數 select datediff(second, '2011-06-22 11:00:00', getdate()); --相差小時數 select datediff(hour, '2011-06-22 10:00:00', getdate()); select datename(month, getdate());--當前月份 select datename(minute, getdate());--當前分鐘 select datename(weekday, getdate());--當前星期 select datepart(month, getdate());--當前月份 select datepart(weekday, getdate());--當前星期 select datepart(second, getdate());--當前秒數 select day(getdate());--返回當前日期天數 select day('2011-06-30');--返回當前日期天數 select month(getdate());--返回當前日期月份 select month('2011-11-10'); select year(getdate());--返回當前日期年份 select year('2010-11-10'); select getdate();--當前系統日期 select getutcdate();--utc日期 3、 數學函式 select pi();--pi函式 select rand(100), rand(50), rand(), rand();--隨機數 select round(rand(), 3), round(rand(100), 5);--精確小數位 --精確位數,負數表示小數點前 select round(123.456, 2), round(254.124, -2); select round(123.4567, 1, 2); 4、 元資料 select col_name(object_id('student'), 1);--返回列名 select col_name(object_id('student'), 2); --該列資料型別長度 select col_length('student', col_name(object_id('student'), 2)); --該列資料型別長度 select col_length('student', col_name(object_id('student'), 1)); --返回型別名稱、型別id select type_name(type_id('varchar')), type_id('varchar'); --返回列型別長度 select columnproperty(object_id('student'), 'name', 'precision'); --返回列所在索引位置 select columnproperty(object_id('student'), 'sex', 'columnid'); 5、 字串函式 select ascii('a');--字元轉換ascii值 select ascii('a'); select char(97);--ascii值轉換字元 select char(65); select nchar(65); select nchar(45231); select nchar(32993);--unicode轉換字元 select unicode('a'), unicode('中');--返回unicode編碼值 select soundex('hello'), soundex('world'), soundex('word'); select patindex('%a', 'ta'), patindex('%ac%', 'jack'), patindex('dex%', 'dexjack');--匹配字元索引 select 'a' + space(2) + 'b', 'c' + space(5) + 'd';--輸出空格 select charindex('o', 'hello world');--查詢索引 select charindex('o', 'hello world', 6);--查詢索引 select quotename('abc[]def'), quotename('123]45'); --精確數字 select str(123.456, 2), str(123.456, 3), str(123.456, 4); select str(123.456, 9, 2), str(123.456, 9, 3), str(123.456, 6, 1), str(123.456, 9, 6); select difference('hello', 'helloworld');--比較字串相同 select difference('hello', 'world'); select difference('hello', 'llo'); select difference('hello', 'hel'); select difference('hello', 'hello'); select replace('abcedef', 'e', 'e');--替換字串 select stuff('hello world', 3, 4, 'abc');--指定位置替換字串 select replicate('abc#', 3);--重複字串 select substring('abc', 1, 1), substring('abc', 1, 2), substring('hello wrold', 7, 5);--擷取字串 select len('abc');--返回長度 select reverse('sqlserver');--反轉字串 select left('leftstring', 4);--取左邊字串 select left('leftstring', 7); select right('leftstring', 6);--取右邊字串 select right('leftstring', 3); select lower('abc'), lower('abc');--小寫 select upper('abc'), upper('abc');--大寫 --去掉左邊空格 select ltrim(' abc'), ltrim('# abc#'), ltrim(' abc'); --去掉右邊空格 select rtrim(' abc '), rtrim('# abc# '), rtrim('abc'); 6、 安全函式 select current_user; select user; select user_id(), user_id('dbo'), user_id('public'), user_id('guest'); select user_name(), user_name(1), user_name(0), user_name(2); select session_user; select suser_id('sa'); select suser_sid(), suser_sid('sa'), suser_sid('sysadmin'), suser_sid('serveradmin'); select is_member('dbo'), is_member('public'); select suser_name(), suser_name(1), suser_name(2), suser_name(3); select suser_sname(), suser_sname(0x01), suser_sname(0x02), suser_sname(0x03); select is_srvrolemember('sysadmin'), is_srvrolemember('serveradmin'); select permissions(object_id('student')); select system_user; select schema_id(), schema_id('dbo'), schema_id('guest'); select schema_name(), schema_name(1), schema_name(2), schema_name(3); 7、 系統函式 select app_name();--當前會話的應用程式名稱 select cast(2011 as datetime), cast('10' as money), cast('0' as varbinary);--型別轉換 select convert(datetime, '2011');--型別轉換 select coalesce(null, 'a'), coalesce('123', 'a');--返回其引數中第一個非空表示式 select collationproperty('traditional_spanish_cs_as_ks_ws', 'codepage'); select current_timestamp;--當前時間戳 select current_user; select isdate(getdate()), isdate('abc'), isnumeric(1), isnumeric('a'); select datalength('abc'); select host_id(); select host_name(); select db_name(); select ident_current('student'), ident_current('classes');--返回主鍵id的最大值 select ident_incr('student'), ident_incr('classes');--id的增量值 select ident_seed('student'), ident_seed('classes'); select @@identity;--最後一次自增的值 select identity(int, 1, 1) as id into tab from student;--將studeng表的烈屬,以/1自增形式建立一個tab select * from tab; select @@rowcount;--影響行數 select @@cursor_rows;--返回連線上開啟的遊標的當前限定行的數目 select @@error;--t-sql的錯誤號 select @@procid; 8、 配置函式 set datefirst 7;--設定每週的第一天,表示週日 select @@datefirst as '星期的第一天', datepart(dw, getdate()) as '今天是星期'; select @@dbts;--返回當前資料庫唯一時間戳 set language 'italian'; select @@langid as 'language id';--返回語言id select @@language as 'language name';--返回當前語言名稱 select @@lock_timeout;--返回當前會話的當前鎖定超時設定(毫秒) select @@max_connections;--返回sql server 例項允許同時進行的最大使用者連線數 select @@max_precision as 'max precision';--返回decimal 和numeric 資料型別所用的精度級別 select @@servername;--sql server 的本地伺服器的名稱 select @@servicename;--服務名 select @@spid;--當前會話程序id select @@textsize; select @@version;--當前資料庫版本資訊 9、 系統統計函式 select @@connections;--連線數 select @@pack_received; select @@cpu_busy; select @@pack_sent; select @@timeticks; select @@idle; select @@total_errors; select @@io_busy; select @@total_read;--讀取磁碟次數 select @@packet_errors;--發生的網路資料包錯誤數 select @@total_write;--sqlserver執行的磁碟寫入次數 select patindex('%soft%', 'microsoft sqlserver'); select patindex('soft%', 'software sqlserver'); select patindex('%soft', 'sqlserver microsoft'); select patindex('%so_gr%', 'jsonisprogram'); 10、 使用者自定義函式 # 檢視當前資料庫所有函式 --查詢所有已建立函式 select definition,* from sys.sql_modules m join sys.objects o on m.object_id = o.object_id and type in('fn', 'if', 'tf'); # 建立函式 if (object_id('fun_add', 'fn') is not null) drop function fun_add go create function fun_add(@num1 int, @num2 int) returns int with execute as caller as begin declare @result int; if (@num1 is null) set @num1 = 0; if (@num2 is null) set @num2 = 0; set @result = @num1 + @num2; return @result; end go 呼叫函式 select dbo.fun_add(id, age) from student; --自定義函式,字串連線 if (object_id('fun_append', 'fn') is not null) drop function fun_append go create function fun_append(@args nvarchar(1024), @args2 nvarchar(1024)) returns nvarchar(2048) as begin return @args + @args2; end go select dbo.fun_append(name, 'abc') from student; # 修改函式 alter function fun_append(@args nvarchar(1024), @args2 nvarchar(1024)) returns nvarchar(1024) as begin declare @result varchar(1024); --coalesce返回第一個不為null的值 set @args = coalesce(@args, ''); set @args2 = coalesce(@args2, '');; set @result = @args + @args2; return @result; end go select dbo.fun_append(name, '#abc') from student; # 返回table型別函式 --返回table物件函式 select name, object_id, type from sys.objects where type in ('fn', 'if', 'tf') or type like '%f%'; if (exists (select * from sys.objects where type in ('fn', 'if', 'tf') and name = 'fun_find_sturecord')) drop function fun_find_sturecord go create function fun_find_sturecord(@id int) returns table as return (select * from student where id = @id); go select * from dbo.fun_find_sturecord(2); #執行帶返回值的過程。 declare @p4 int set @p4=-1 declare @p5 varchar(255) set @p5='''''' exec proc '',1,'',@p4 output,@p5 output select @p4, @p5 # 查詢帶%的 case when perdd_standard <> 0 then ltrim(str(perdd_actual/perdd_standard*100,10,2)) + '%' else '0.0%' end as perdd_efff from perdd_det # 開啟遠端伺服器 select a.* opendatasource('SQLOLEDB','Data Source=192.168.1.XX;User ID=user;Password=pwd').DB_Name.dbo.table_name # 檢視系統有沒有死鎖 use master select * from sysprocesses where blocked<>0 --找到spid exec sp_lock --根據spid找到objid select object_name(85575343) --根據objid找到表名 多表join做update update t1 set col1=t2.col1 from table1 t1 inner join table2 t2 on t1.col2=t2.col2 sqlite中可轉換為 如下語法 update table1 set col1=(select col1 from table2 where col2=table1.col2) # with (nolock) 用法 1:使用with(nolock)時查詢不受其它排他鎖阻塞 begin tran update si_mstr set si_company = '1000' where si_site = '1000' --rollback tran 另開查詢視窗,會發現查不出來 select * from si_mstr 此時要用with (nolock) ,能查,但會出現髒讀,如果事務回滾會出現查詢和實際資料不一致 select * from si_mstr with (nolock) 2.寫法 select * from test nolock --表別名的寫法 select * from test (nolock); --sql 2008以下寫法 select * from test with(nolock); --完全寫法 #儲存過程引數賦預設值 create procedure dbo.my_proc @first int = null, -- null default value @second int = 2, -- default value of 2 @third int = 3 -- default value of 3 as set nocount on; select @first, @second, @third; go #分頁查詢 --分頁1 select top 3 * from student where [sId] not in (select top (3*(4-1)) [sid] from student)--4表示頁數 select *, row_number() over(order by [sage] desc ) from student-- row_number() over (order by..)獲取行號 --分頁2 select * from (select *, row_number() over(order by [sid] desc ) as num from student)as t where num between (Y-1)*T+1 and Y*T order by [sid] desc --分頁3 select * from (select ROW_NUMBER() over( order by [UnitPrice] asc) as num,* from [Books] where [publisherid]=1 )as t where t.num between 1 and 20 --要查詢的開始條數和結束條數

相關推薦

SQL常用查詢模板個人公司常用

sql server t-sql高階查詢 新增欄位: alter table [表名] add [欄位名] nvarchar (50) null alter table [表名] alter column [欄位名] varchar(100) not

利用Mybaties註解動態Sql實現查詢功能表名不固定

最近開發過程中,資料庫的表名是日表,每次查詢需要動態傳入表名,所以需要動態拼接sql 一.mapper介面,呼叫provider類,該類返回sql(RecordProvider需要自己新建一個class) 二.Provider.class,利用StringBuid

ACM模板個人程式碼集整理持續更新

所有程式碼已經搬家到了github中。 目錄: SAM(*) SA(*) PAM(*) 樹鏈剖分(*) 01Trie(*) ACAM(*) KMP(*) LCA(*) 主席樹(*) 點分治(*) kd-Tree(*) 斜率優化DP 最大流Dicni

關於《一個SQL語句查詢問題查詢小值》回覆裡面沒有正確理想的答案!

兄弟,關於《一個SQL語句查詢問題(查詢最小值)(急)》在那些回覆裡面,我沒有看到正確的答案,作者的要求應該是找出A表中的每一種產品的最低價格,而不是所有的A表中產品的最低價格吧!後來還加入最低價有幾種的話,只顯示一個元組,上面一個兄弟給出的回覆也是錯的(對,只是因為巧合)

Makefile常用萬能模板包括靜態鏈接庫、動態鏈接庫、可執行文件

lib post targe class 到你 param 圖片 spa log 本文把makefile 分成了三份:生成可執行文件的makefile,生成靜態鏈接庫的makefile,生成動態鏈接庫的makefile。   這些makefile都很簡單,一般都是一看就會用

常用博弈模板模板 利於記憶

turn break scan ons strong return ring ash ostream 1、巴什博奕(Bash Game):只有一堆n個物品,兩個人輪流從這堆物品中取物,規定每次至少取一個,最多取m個。最後取光者得勝。 #include<iostr

小表示法模板洛谷P1368 工藝小表示法

洛谷題目傳送門 最小表示是指一個字串通過迴圈位移變換(第一個移到最後一個)所能得到的字典序最小的字串。 因為是環狀的,所以肯定要先轉化為序列,把原串倍長。 設決策點為一個表示法的開頭。比較兩個決策點\(i,j\),找到它們的LCP(假設長度為\(k\))。 假設\(s_{i+k}>s_{j+k}

Til the Cows Come Home單源短路Dijstra模板

Til the Cows Come Home Bessie is out in the field and wants to get back to the barn to get as much sleep as possible before Farmer John wakes he

MySQL - 如何提高SQL查詢效率where條件優化

目錄 說在前面 35條優化規則 總結 說在前面 整天說SQL優化,SQL優化,到底怎麼才算是SQL優化呢,下面從百度總結了一些關於Oracle裡常用的一些有效的優化方法。僅供參考,文章內容來源於網路。 35條優化規則 (1)優先考慮建立索引 對查詢進行優化,應

Oracle - 如何提高SQL查詢效率where條件優化

目錄 說在前面 34條優化規則 總結 說在前面 整天說SQL優化,SQL優化,到底怎麼才算是SQL優化呢,下面從百度總結了一些關於Oracle裡常用的一些有效的優化方法。僅供參考,文章內容來源於網路。 34條優化規則 (1)選擇最有效率的表名順序(只在基於規則的優

MySQL常用查詢命令

– 資料的準備 – 建立一個數據庫 create database python_test charset=utf8; -- 使用一個數據庫 use python_test; --顯示使用的當前資料庫是哪個? select databas

資料庫常用查詢語句多表查詢,面試必問

支付寶程式設計師隱藏福利,使用支付寶搜尋下方數字可領取現金,每天都可以使用下方號碼領取,已經領了二百多: 568076896 –1.學生表 Student(S#,Sname,Sage,Ssex) – –2.課程表 Course(C#,Cname,T#) –

Java常用資料結構個人筆記

寫在前面: 樓主剛打完ACM徐州現場賽,也算是退役了,現在準備重新補一遍Java,之前一直用的是C++,所以我會結合C++來整理Java的資料結構,同時也便於理解。 那麼我將按照以下順序進行講解,感覺難度也是逐步提升 ArrayList、Vector和Lin

SQL SERVER 查詢作業Job基本資訊及執行情況的sql

SELECT [job].[job_id] AS '作業唯一識別符號' ,[job].[name] AS '作業名稱' ,[jobstep].[step_uid] AS '步驟唯一識別符號' ,[jobstep].[step_id] AS '步驟編號' ,[jobstep].[

KM演算法詳解+模板二分圖大權值匹配

KM演算法用來求二分圖最大權完美匹配。 本文沒有給出KM演算法的原理,只是模擬了一遍演算法的過程。另,博主水平較差,發現問題歡迎指出,謝謝!!!! 現在有N男N女,有些男生和女生之間互相有好感,我們將其好感程度定義為好感度,我們希望把他們兩兩配對,並且最後希

生日快樂網站模板個人製作HTML5+CSS3+JS

.ly-box01 { width:50px; height:50px; background-color:#FFF; border-radius: 25px; position: absolute; left: 48%; bottom: 50%; margin-bottom:50%; ov

servlet建立之繼承HttpServlet此方法常用

package test;import java.io.IOException;import java.io.PrintWriter;import javax.servlet.ServletRequest;import javax.servlet.ServletRespons

MYSQL常用查詢語句單表

本文主要介紹MYSQL常用的簡單查詢語句: 1.欄位名起別名查詢,關鍵字AS後為所起的別名。如: SELECT   id   AS userID, username   AS    uname   FROM   users; 2.WHERE語句進行條件查詢。如: SE

SQL連線查詢語句內、外、交叉和合並查詢

      接觸Sql語句時間挺長時間了,聽他人說過sql語句的連線查詢,但一直沒有認真研究和使用過!!最近在公司實習,需要用到一些連線的語句,我也從中體會到連線查詢帶來的方便。 下面總結一下SQ

簡單二分查詢模板查詢

1 # include <stdio.h> 2 3 int search(int a[], int n, int v) //這個好像是效率最高的 4 { 5 int left = -1, right = n, middle; 6 while(left+1 !=