1. 程式人生 > 實用技巧 >超大揹包問題(二進位制列舉 + 二分)

超大揹包問題(二進位制列舉 + 二分)

目錄:

  • 資料庫概念
  • Sql語句
  • 函式

一、資料庫概念

1.1資料庫能做什麼?

  ①儲存大量資料,方便檢索(保證效能)和訪問

  ②保持資料資訊一致、完整

  ③共享和安全

  ④通過組合分析,產生有用資訊

1.2基本概念

  • 資料完整性 : 資料的正確和準確
    • 實體完整性:主鍵
    • 域完整性:資料型別、檢查約束、非空
    • 引用完整性:外來鍵
    • 自定義完整性:規則
  • 主鍵
    • 用來區分實體,必須唯一、不允許為空
    • 選擇主鍵的原則:最少性、穩定
  • 外來鍵
    • 用來表示和其他表關係的列,可以設定為允許空
    • 要求:資料型別要和主表的主鍵型別一致
    • 建立外來鍵後對錶資料的操作影響:
      • 有外來鍵的表是子表
      • 新增:先主後子
      • 刪除:先子後主
      • 修改:不能使資料孤立
  • 標識列
    • 自動編號(只增不減)
    • 標識種子、標識增量
    • 資料型別必須是整數,我門們通常用作主鍵
  • 問題
    • 允許更改主鍵的值嗎?能

二、SQL語句

//增  值需要引號的資料型別: 字串、時間日期
//方式一
insert into(表名)[列表值]
values('',) 
//方式二
insert into 表名(姓名,地址)
Select Name,Address(舊錶名的內容)
from student
//方式三
select 表名.列名
into 新表名(自動建立)
form 表名 
//方式四
insert 表名(name,sex,address)
select 是,男,翱翔 union select 是,男,翱翔 union select 是,男,翱翔 union select 是,男,翱翔 //update 表名 set 列 多個條件逗號隔開 where 列 多個條件and隔開 //delete from 列表 where 列名 //select <列名> 多個用逗號 from <表名> where <查詢條件表示式> 多個用and order by <排序的列名>(ase(正排序)或desc(倒排序)) //所有的資料行和列 select * from
表名 //(三種別名的方式 as、空格、寫在前面) select Scord as 學生 ,Sname 空格 姓名 ,地址=Saddress form Student where Saddress<>'河南新鄉' //拼接 (相加型別要統一) select Scord+','+LastName form Student //常量列 (增加一列) Select 姓名=Name , 地址=Saddress , '清華大學'as 學校名稱 from Student //返回限制的行數 select top 5 (percent) from Student where sex=0 //返回5行 括號裡的是百分 //升序降序 select course score from Student where score<80 order by sourse score desc(倒排序) (排序都是按照第一列,從第一個依次往後走,一個不對後面的都不對) //查詢為空 is null or =' ' //內聯外聯 內聯 inner join(用來連線兩個表)on(設定條件)號必須相同,where要明確 外聯 left join (用來連線兩個表 顯示空的學生)on(設定條件) //聚合函式 sum()(和) avg()(平均分) max()(最大值) min()(最小值) count()(求數量) //聚合程式碼 select sum(studentresult) as 總分,min(StudentResult) as 最低分 from result //分組 通常和聚合函式一塊使用,只有出現在分組中列,才允許出現在select 中 group by //分組程式碼 select gradeid, sex, count(*) from student group by gradeid,sex //篩選 having //篩選程式碼 Select GradeId,count(*) from Student group by GradeId having count(*)>20 //模糊查詢 like% _ [] [^]betweenin //模糊程式碼 where Address like '%山東%'where StudentName like '張_' SubjectId in(1,2,3) || SubjectId like '[1-3]' between : select * from student where borndate between '2000-1-1' and '2019-1-1' in : select * from student where address in('北京', '上海') //完整Sql語句 selectfromwhere 條件 group byhaving 條件 order by
SQL程式碼

三、函式

1.字串函式
charindex(尋找一個只定的一個字串在另一個字串起始的位置)    select charindex('jbns','Myjbns cours',1)
len(長度)   Select len>6
upper(轉換大小寫)
ltrim(清除左邊的空格) rtrim(清除右邊的空格)
right(從右邊返回指定的字串) leight(從左邊返回制定的字串)
replace (替換一個字串中的字元)
stuff (刪除指定長度的字元,並在該位置插入一個新字元)

2.日期函式
getdate (當前系統日期)
dateadd(將指定的數值新增到指定的日期部分後的日期)
datediff(兩個日期之間的指定日期部分的間隔)
datename(指定的日期部分字串形式)   clect datename(dw,'01-02-2009' )返回:星期六
datepart(整數形式)   clect datepart(dw,'01-02-2009' )返回:7     datepart(month,getdate()=8)  (8月份)

4.數字函式
rand(返回0到1之間的隨機數float值) select rand( ) 返回:0.79288062146374           right( rand(), 4)產生後四位隨機數
abs (去數值表示式的絕對值) select abs(-43) 返回43
ceiling (取大於或等於指定數值、表示式的最小整數) ceiling(43.5) 返回:44
power(取小) power(43.5) 返回43
power(取數值表示式的冪值) power(5,2) 返回:25
round(將數值表示式四捨五入為指定精度) round(43.543,1) 返回:43.500
sign(對於正數+1,對於負數返回-1,對於0則返回0)
sqrt(取浮點表示式的平方根) sqrt(9) 返回:3

5.系統函式
convert(用來轉變資料型別)  在sql中,不會發生自動型別轉換,需要CONVERT進行轉換 可以限定日期轉換格式
current_user(返回當前使用者的名字)
datalength(返回用於指定表示式的位元組數)
system_user(返回當前所登陸的計算機名字)
user_name(從給定的使用者ID返回使用者名稱)
函式