『壹』 sql如何寫
創建之前判斷該資料庫是否存在
if exists (select * from sysdatabases where name='databaseName')
drop database databaseName
go
Create DATABASE databasename
on primary-- 默認就屬於primary文件組,可省略
(
/*--數據文件的具體描述--*/
name=『databasename_data』,-- 主數據文件的邏輯名稱
filename=『'所存位置:\databasename_data.mdf』, -- 主數據文件的物理名稱
size=數值mb, --主數據文件的初始大小
maxsize=數值mb, -- 主數據文件增長的最大值
filegrowth=數值%--主數據文件的增長率
)
log on
(
/*--日誌文件的具體描述,各參數含義同上--*/
name='databasename_log', -- 日誌文件的邏輯名稱
filename='所存目錄:\databasename_log.ldf', -- 日誌文件的物理名稱
size=數值mb, --日誌文件的初始大小
filegrowth=數值mb--日誌文件的增長值
)
刪除資料庫
drop database databasename
備份sql server
--- 創建備份數據的 device
USE master
EXEC sp_admpdevice 'disk', 'testBack', 'c:\mssql7backup\MyNwind_1.dat'
--- 開始備份
BACKUP DATABASE pubs TO testBack
創建新表
create table tabname(col1 type1 [not null] [primary key] identity(起始值,遞增量)
,col2 type2 [not null],..)--primary key為主鍵 identity表示遞增數量
根據已有的表創建新表:
A:go
use 原資料庫名
go
select * into 目的資料庫名.dbo.目的表名 from 原表名(使用舊表創建新表)
B:create table tab_new as select col1,col2… from tab_old definition only
創建序列
create sequence SIMON_SEQUENCE
minvalue 1 -- 最小值
maxvalue 999999999999999999999999999 -- 最大值
start with 1 -- 開始值
increment by 1 -- 每次加幾
cache 20;
刪除表
drop table tabname--這是將表連同表中信息一起刪除但是日誌文件中會有記錄
刪除表中信息
delete from tabname-這是將表中信息刪除但是會保留這個表
增加一個列
Alter table tabname add colname coltype
刪除一個列
Alter table tabname drop column colname
添加主鍵
Alter table tabname add primary key(col)
說明:刪除主鍵:Alter table tabname drop primary key(col)
創建索引
create [unique] index idxname on tabname(col…。)
刪除索引:drop index idxname on tabname
註:索引是不可更改的,想更改必須刪除重新建。
創建視圖
create view viewname as select statement
刪除視圖:drop view viewname
基本的sql語句
(1) 數據記錄篩選:
sql="select * from 數據表 where欄位名=欄位值 order by欄位名[desc]"
sql="select * from 數據表 where欄位名like '%欄位值%' order by 欄位名 [desc]"
sql="select top 10 * from 數據表 where欄位名=欄位值 order by 欄位名 [desc]"
sql="select top 10 * from 數據表 order by 欄位名 [desc]"
sql="select * from 數據表 where欄位名in ('值1','值2','值3')"
sql="select * from 數據表 where欄位名between 值1 and 值2"
(2) 更新數據記錄:
sql="update 數據表 set欄位名=欄位值 where 條件表達式"
sql="update 數據表 set 欄位1=值1,欄位2=值2 …… 欄位n=值n where 條件表達式"
(3) 刪除數據記錄:
sql="delete from 數據表 where 條件表達式"
sql="delete from 數據表" (將數據表所有記錄刪除)
(4) 添加數據記錄:
sql="insert into 數據表 (欄位1,欄位2,欄位3 …) values (值1,值2,值3 …)"
sql="insert into 目標數據表 select * from 源數據表" (把源數據表的記錄添加到目標數據表)
(5) 數據記錄統計函數:
AVG(欄位名) 得出一個表格欄平均值
COUNT(*;欄位名) 對數據行數的統計或對某一欄有值的數據行數統計
MAX(欄位名) 取得一個表格欄最大的值
MIN(欄位名) 取得一個表格欄最小的值
SUM(欄位名) 把數據欄的值相加
引用以上函數的方法:
sql="select sum(欄位名) as 別名 from 數據表 where 條件表達式"
set rs=conn.excute(sql)
用 rs("別名") 獲取統計的值,其它函數運用同上。
查詢去除重復值:select distinct * from table1
(5) 數據表的建立和刪除:
CREATE TABLE 數據表名稱(欄位1 類型1(長度),欄位2 類型2(長度) …… )
(6) 單列求和:
SELECT SUM(欄位名) FROM 數據表
編輯本段
最新語句
查詢資料庫中含有同一這欄位的表:
select name from sysobjects where xtype = 'u' and id in(select id from syscolumns where name = 's3')
根據出生日期可以算出年齡:
select datediff(year,scrq,'2013') as 年齡 from page_shsjgrgl
根據當前年份自動算出年齡
select datediff(year,csny,cast(YEAR(GETDATE()) as char))
年
select year(djsj) from page_shsjgrgl
月
select month(djsj) from page_shsjgrgl
日
select day(djsj) from page_shsjgrgl
在同一資料庫中復製表結構:
select * into a from b where 1<>1
當 IDENTITY_INSERT 設置為 OFF 時,不能為表 'aa' 中的標識列插入顯式值。
set identity_insert aa ON----設置打開,
批量插入:
insert into aa(Customer_ID, ID_Type, ID_Number) select Customer_ID, ID_Type, ID_Number from TCustomer;
set identity_insert aa OFF---關閉
不同資料庫之間的復制:
復制結構:
select * into test.dbo.b from GCRT.dbo.page_shsjgrgl where 1<>1
復制內容:
insert into test.dbo.b(xm,ssdq) select xm,ssdq from GCRT.dbo.page_shsjgrgl
查看資料庫中所有的數據表表名:
select name from SysObjects where type='u'
查看資料庫中所有表含有同一欄位的表:
select name from sysobjects where xtype = 'u' and id in(select id from syscolumns where name = '同一欄位')
查看數據表中的所有欄位:
select name from Syscolumns where id=object_id('表名')
查詢資料庫時隨機10條記錄:
select top 10 * from td_areacode order by newid()
修改欄位類型:
ALTER TABLE 表名 ALTER COLUMN 欄位名 varchar(30) NOT NULL
use ZHJIANGJGYL
declare @temp nvarchar(30)
set @temp = 'ZWI4'
select hllx from page_yljg_zyry where hllx not in(
select
case @temp when ''
then ''
else b1 end
from (
select * from TD_Code where page_en='page_yljg_zyry' and B2='ZWI'
) s where s.b1 !=
case @temp when '' then '' else @temp end
)
更改資料庫表欄位類型:
alter table page_shsjgrgl alter column s1 int
高級查詢
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),不消除重復行。
註:使用運算詞的幾個查詢結果行必須是一致的。
外連接
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 outer join:
全外連接:不僅包括符號連接表的匹配行,還包括兩個連接表中的所有記錄。
編輯本段
判斷對象
判斷資料庫是否存在
if exists (select * from sysdatabases where name= '資料庫名')
dropdatabase[資料庫名]
判斷表是否存在
if not exists (select * from sysobjects where [name] = '表名' and xtype='U')
begin
--這里創建表
end
判斷存儲過程是否存在
if exists (select * from sysobjects whereid = object_id(N'[存儲過程名]') and OBJECTPROPERTY(id, N'IsProcere') = 1)
dropprocere[存儲過程名]
判斷臨時表是否存在
if object_id('tempdb..#臨時表名') isnot null
droptable#臨時表名
判斷視圖是否存在
--SQL Server 2000
IF EXISTS (SELECT * FROM sysviews WHEREobject_id = '[dbo].[視圖名]'
--SQL Server 2005
IF EXISTS (SELECT * FROM sys.views WHERE object_id = '[dbo].[視圖名]'
判斷函數是否存在
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[函數名]') and xtype in (N'FN', N'IF', N'TF'))
dropfunction[dbo].[函數名]
獲取創建信息
SELECT[name],[id],crdate FROM sysobjects where xtype='U'
/*
xtype 的表示參數類型,通常包括如下這些 C = CHECK約束 D = 默認值或DEFAULT約束 F = FOREIGNKEY約束 L = 日誌 FN = 標量函數 IF = 內嵌表函數 P = 存儲過程 PK = PRIMARYKEY約束(類型是K) RF = 復制篩選存儲過程 S = 系統表 TF = 表函數 TR = 觸發器U = 用戶表 UQ = UNIQUE約束(類型是K) V = 視圖 X = 擴展存儲過程 */
判斷列是否存在
if exists(select * from syscolumns whereid=object_id('表名') and name='列名')
altertable表名dropcolumn列名
判斷列是否自增列
if columnproperty(object_id('table'),'col','IsIdentity')=1
print '自增列'
else
print '不是自增列'
SELECT * FROM sys.columns WHEREobject_id=OBJECT_ID('表名')
AND is_identity=1
判斷表中是否存在索引
if exists(select * from sysindexes whereid=object_id('表名') and name='索引名')
print '存在'
else
print '不存在
查看資料庫中對象
SELECT * FROM sysobjects WHEREname='對象名'
select * from table(所要查詢的表名) where coloum(條件)
編輯本段
提升
復製表
(只復制結構,源表名:a 新表名:b) (Access可用)
法一:select * into b from a where 1<>1
法二:select top 0 * into b from a
拷貝表
(拷貝數據,源表名:a 目標表名:b) (Access可用)
insert into b(x, y, z) select d,e,f from a;
跨資料庫之間表的拷貝
(具體數據使用絕對路徑) (Access可用)
insert into b(x, y, z) select d,e,f from a in 『具體資料庫』 where 條件
例子:。.from b in '"&Server.MapPath("."&"\data.mdb" &"' where..
子查詢
(表名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)
顯示文章最後時間
select a.title,a.username,b.adddate from table a,(select max(adddate) adddate from table where table.title=a.title) b
外連接查詢
(表名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
在線視圖查詢
(表名1:a
select * from (Select a,b,c FROM a) T where t.a > 1;
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
in 的使用方法
select * from table1 where a [not] in (『值1』,』值2』,』值4』,』值6』)
刪除主表沒有的信息
兩張關聯表delete from table1 where not exists ( select * from table2 where table1.field1=table2.field1
四表聯查問題
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 .....
日程安排提前五分鍾
SQL: select * from 日程安排 where datediff('minute',f開始時間,getdate())>5
一條sql 搞定資料庫頁
select top 10 b.* from (select top 20 主鍵欄位,排序欄位 from 表名 order by 排序欄位 desc) a,表名 b where b.主鍵欄位= a.主鍵欄位 order by a.排序欄位
前10條記錄
select top 10 * from table1 where 范圍
選擇排名
選擇在每一組b值相同的數據中對應的a最大的記錄的所有信息(類似這樣的用法可以用於論壇每月排行榜,每月熱銷產品分析,按科目成績排名,等等。)
select a,b,c from tablename ta where a=(select max(a) from tablename tb where tb.b=ta.b)
派生結果表
包括所有在TableA 中但不在TableB和TableC 中的行並消除所有重復行而派生出一個結果表
(select a from tableA except (select a from tableB) except (select a from tableC)
隨機取出10條數據
select top 10 * from tablename order by newid()
隨機選擇記錄
select newid()
刪除重復記錄
Delete from tablename where id not in (select max(id) from tablename group by col1,col2,...)
列出資料庫里的表名
select name from sysobjects where type='U'
列出表裡的所有的
select name from syscolumns where id=object_id('TableName')
列示排列
列示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
初始化表table1
TRUNCATE TABLE table1
選擇從10到15的記錄
select top 5 * from (select top10 * from (select top 15 * from table order by id asc) table_別名 order by id desc) table_2 order by id
數據類型轉換
declare @numid int
declare @id varchar(50)
set @numid=2005
set @id=convert(varchar,@numid)
通過上述語句完成數據類型Int轉換成varchar,其他轉換類似,可參看convert函數
『貳』 怎麼寫sql語句; 條件; 一個學生信息表,欄位 裡面有school_id,class_id ,學生姓名
select school_id,class_id,count(姓名) from school_id,class_id
group by school_id,class_id
『叄』 sql查詢三個表中的信息,我應該怎麼寫sql
SELECTcuid,cuname,[type],AA.objectno,businesssumAS'sum(a.businesssum)',replacementsumAS'sum(c.replacementsum)'
FROM(
selecta.cuid,a.cuname,a.[type],a.objectno,sum(a.businesssum)asbusinesssum
from表1a
groupbya.cuid,a.cuname,a.[type],a.objectno
)ASAA
leftjoin
(
selectb.objectno,sum(c.replacementsum)asreplacementsum
from表2b,表3c
whereb.serialno=c.serialno
groupbyb.objectno
)asBB
ONAA.objectno=BB.objectno
『肆』 怎麼用sql資料庫建一個學生信息表
也不算復雜吧,如果是SQL SERVER,我告訴你步驟吧。
1.安裝SQL SERVER,目前版本是2008,注意版本對應的操作系統。
2.安裝完成後,在開始菜單打開SQL Server Management Studio,伺服器名稱默認,如果是空的,就輸入一個. ,身份驗證選擇windows身份驗證。
3.登錄後左側菜單的菜單里找「資料庫」,點開此節點後,在「資料庫」菜單上點右鍵,選擇「新建資料庫」,點擊後在彈出的窗口信息里填寫信息,填完後點確定,資料庫就創建成功了,不過裡面還沒有表。
4.新建表,點開你剛才建立的資料庫後,找到「表」菜單,雙擊,然後在「表」菜單上點右鍵,選擇「新建表」,輸入你要填寫的欄位名,選擇好類型,長度後,點擊確定,就建好表了,這時再右鍵選中「表」菜單,選擇「刷新」,剛才建立的表就可以顯示出來了。
你應該總結出學生成績查詢需要幾張表,我大概告訴你一下吧,最基本的3張,
1.學生基本信息表
2.學生考試科目表
3學生成績表,這三張之間的關系你要是搞明白了,那學生成績查詢就不會有問題了。
『伍』 mysql多表查詢sql語句怎麼寫
一使用SELECT子句進行多表查詢
SELECT 欄位名 FROM 表1,表2 … WHERE 表1.欄位 = 表2.欄位 AND 其它查詢條件
SELECT a.id,a.name,a.address,a.date,b.math,b.english,b.chinese FROM tb_demo065_tel AS b,tb_demo065 AS a WHERE a.id=b.id
注:在上面的的代碼中,以兩張表的id欄位信息相同作為條件建立兩表關聯,但在實際開發中不應該這樣使用,最好用主外鍵約束來實現
二使用表的別名進行多表查詢
如:SELECT a.id,a.name,a.address,b.math,b.english,b.chinese FROM tb_demo065 a,tb_demo065_tel b WHERE a.id=b.id AND b.id='$_POST[textid]'
SQL語言中,可以通過兩種方式為表指定別名
第一種是通過關鍵字AS指定,如
SELECT a.id,a.name,a.address,b.math,b.english,b.chinese FROM tb_demo065 AS a,tb_demo065_tel AS b WHERE a.id=b.id
第二種是在表名後直接加表的別名實現
SELECT a.id,a.name,a.address,b.math,b.english,b.chinese FROM tb_demo065 a,tb_demo065_tel b WHERE a.id=b.id
使用表的別名應注意幾下幾點
(1)別名通常是一個縮短了的表名,用於在連接中引用表中的特定列,如果連接中的多個表中有相同的名稱列存在,必須用表名或表的別名限定列名
(2)如果定義了表的別名就不能再使用表名
三合並多個結果集
SQL語言中,可以通過UNION 或 ALL將多個SELECT語句的查詢結果合並輸出,這兩個關鍵字的使用說明如下:
UNION:利用該關鍵字可以將多個SELECT 語句的查詢結果合並輸出,並刪除重復行
ALL:利用該關鍵字可以將多個SELECT 語句的查詢結果合並輸出,但不會刪除重復行
在使用UNION或ALL關鍵字將多個表合並輸出時,查詢結果必須具有相同的結構並且數據類型必須兼容,另外使用UNION時兩張表的欄位數量也必須相同,否則會提示SQL語句有錯誤。
e.x:SELECT id,name,pwd FROM tb_demo067 UNION SELECT uid,price,date FROM tb_demo067_tel
四簡單嵌套查詢
子查詢:子查詢是一個SELECT查詢,返回單個值且嵌套在SELECT、INSERT、UPDATE和DELETE語句或其它查詢語句中,任何可以使用表達式的地方都可以使用子查詢.
SELECT id,name,sex,date FROM tb_demo068 WHERE id in(SELECT id FROM tb_demo068 WHERE id='$_POST[test]')
內連接:把查詢結果作為WHERE子句的查詢條件即稱為內連接
五復雜的嵌套查詢
多表之間的嵌套查詢可以通過謂詞IN實現,語法格式如下:
test_expression[NOT] IN{
subquery
}
參數說明:test_expression指SQL表達式,subquery包含某結果集的子查詢
多表嵌套查詢的原理:無論是多少張表進行嵌套,表與表之間一定存在某種關聯,通過WHERE子句建立此種關聯實現查詢
六嵌套查詢在查詢統計中的應用
實現多表查詢時,可以同時使用謂詞ANY、SOME、ALL,這些謂詞被稱為定量比較謂詞,可以和比較運算符聯合使用,判斷是否全部返回值都滿足搜索條件.SOME和ANY謂詞是存在量的,只注重是否有返回值滿足搜索條件,這兩個謂詞的含義相同,可以替換使用;ALL謂詞稱為通用謂詞,它只關心是否有謂詞滿足搜索要求.
SELECT * FROM tb_demo069_people WHERE uid IN(SELECT deptID FROM tb_demo069_dept WHERE deptName='$_POST[select]')
SELECT a.id,a.name FROM tb_demo067 AS a WHERE id<3)
>ANY 大於子查詢中的某個值
>=ANY 大於等於子查詢中的某個值
<=ANY 小於等於子查詢中的某個值
=ANY 等於子查詢中的某個值
!=ANY或<>ANY 不等於子查詢中的某個值
>ALL 大於子查詢中的所有值
>=ALL 大於等於子查詢中的所有值
<=ALL 小於等於子查詢中的所有值
=ALL 等於子查詢中的所有值
!=ALL或<>ALL 不等於子查詢中的所有值
七.使用子查詢作派生的表
在實際項目開發過程中經常用到從一個信息較為完善的表中派生出一個只含有幾個關鍵欄位的信息表,通過子查詢就可以來實現這一目標,如
SELECT people.name,people.chinese,people.math,people.english FROM (SELECT name,chinese,math,english FROM tb_demo071) AS people
注:子查詢應遵循以下規則:
(1)由比較運算符引入的內層子查詢只包含一個表達式或列名,在外層語句中的WHERE子句內命名的列必須與內層子查詢命名的列兼容
(2)由不可更改的比較運算符引入的子查詢(比較運算符後面不跟關鍵字ANY或ALL)不包括GROUP BY 或 HAVING子句,除非預先確定了成組或單個的值
(3)用EXISTS引入的SELECT列表一般都由*組成,不必指定列名
(4)子查詢不能在內部處理其結果
八使用子查詢作表達式
SELECT (SELECT AVG(chinese)FROM tb_demo071),(SELECT AVG(english)FROM tb_demo071),(SELECT AVG(math)FROM tb_demo071) FROM tb_demo071
註:在使用子查詢時最好為列表項取個別名,這樣可以方便用戶在使用mysql_fetch_array()函數時為表項賦值,如
SELECT (SELECT AVG(chinese) FROM tb_demo071) AS yuwen ,(SELECT AVG(english) FROM tb_demo071) AS yingyu,(SELECT AVG(math) FROM tb_demo071) AS shuxue FROM tb_demo071
九使用子查詢關聯數據
SELECT * FROM tb_demo072_student WHERE id=(SELECT id FROM tb_demo072_class WHERE className = '$_POST[text]')
十多表聯合查詢
利用SQL語句中的UNION,可以將不同表中符合條件的數據信息顯示在同一列中。
e.x:SELECT * FROM tb_demo074_student UNION SELECT * FROM tb_demo074_fasten
注:使用UNION時應注意以下兩點:
(1)在使用UNION運算符組合的語句中,所有選擇列表的表達式數目必須相同,如列名、算術表達式及聚合函數等
(2)在每個查詢表中,對應列的數據結構必須一樣。
十一對聯合後的結果進行排序
為了UNION的運算兼容,要求所有SELECT語句都不能有ORDER BY語句,但有一種情況例外,那就是在最後一個SELECT語句中放置ORDER BY 子句實現結果的最終排序輸出。
e.x:SELECT * FROM tb_demo074_student UNION SELECT * FROM tb_demo074_fasten ORDER BY id
使用UNION條件上相對比較苛刻,所以使用此語句時一定要注意兩個表項數目和欄位類型是否相同
十二條件聯合語句
SELECT * FROM tb_demo076_BEIJING GROUP BY name HAVING name='人民郵電出版社' OR name='機械工業出版社' UNION SELECT * FROM tb_demo076_BEIJING GROUP BY name HAVING name <>'人民郵電出版社' AND name <>'機械工業再版社' ORDER BY id
上面語句應用了GROUP BY分組語句和HAVING語句實現條件聯合查詢。其實現目的是先保證將'人民郵電出版社'和'機械工業出版社'始終位於名單最前列,然後再輸出其它的出版社
十三簡單內連接查詢
SELECT filedlist FROM table1 [INNER] JOIN table2 ON table1.column1 = table2.column1
其中,filedlist是要顯示的欄位,INNER表示表之間的連接方式為內連接,table1.column1=table2.column1用於指明兩表間的連接條件,如:
SELECT a.name,a.address,a.date,b.chinese,b.math,b.english FROM tb_demo065 AS a INNER JOIN tb_demo065_tel AS b on a.id=b.id
十四復雜內連接查詢
復雜的內連接查詢是在基本的內連接查詢的基礎上再附加一些查詢條件,如:
SELECT a.name,a.address,a.date,b.chinese,b.math,b.english FROM tb_demo065 AS a INNER JOIN tb_demo065_tel AS b on a.id=b.id WHERE b.id=(SELECT id FROM tb_demo065 WHERE tb_demo065.name='$_POST[text]')
總之,實現表與表之間的關聯的本質是兩表之間存在共同的數據項或者相同的數據項,通過WHERE 子句或內連接INNER JOIN … ON 語句將兩表連接起來,實現查詢
十五使用外連接實現多表聯合查詢
(1)LEFT OUTER JOIN表示表之間通過左連接方式相互連接,也可簡寫成LEFT JOIN,它是以左側的表為基準故稱左連接,左側表中所有信息將被全部輸出,而右側表信息則只會輸出符合條件的信息,對不符合條件的信息則返回NULL
e.x:SELECT a.name,a.address,b.math,b.english FROM tb_demo065 AS A LEFT OUTER JOIN tb_demo065_tel AS b ON a.id=b.id
(2)RIGHT OUTER JOIN表示表之間通過右連接方式相互連接,也可簡寫成RIGHT JOIN,它是以右側的表為基準故稱右連接,右側表中所有信息將被全部輸出,而左側表信息則只會輸出符合條件的信息,對不符合條件的信息則返回NULL
E.X:SELECT a.name,a.address,b.math,b.english FROM tb_demo065 AS A RIGHT OUTER JOIN tb_demo065_tel AS b ON a.id=b.id
十六利用IN或NOTIN關鍵字限定范圍
e.x:SELECT * FROM tb_demo083 WHERE code IN(SELECT code FROM tb_demo083 WHERE code BETWEEN '$_POST[text1]' AND '$_POST[text2]')
利用IN可指定在范圍內查詢,若要求在某范圍外查詢可以用NOT IN代替它
十七由IN引入的關聯子查詢
e.x:SELECT * FROM tb_demo083 WHERE code IN(SELECT code FROM tb_demo083 WHERE code = '$_POST[text]')
十八利用HAVING語句過濾分組數據
HAVING子句用於指定組或聚合的搜索條件,HAVING通常與GROUP BY 語句一起使用,如果SQL語句中不含GROUP BY子句,則HAVING的行為與WHERE子句一樣.
e.x:SELECT name,math FROM tb_demo083 GROUP BY id HAVING math > '95'
『陸』 sql創建表格是怎麼寫的。。最好有具體的示例!
DROP TABLE CELL_TCH;
DROP TABLE MS;
DROP TABLE MSC;
DROP TABLE BSC;
DROP TABLE BTS;
DROP TABLE CELL;
DROP TABLE ANTENNA;
DROP TABLE DATA;
DROP TABLE TEST;
DROP TABLE NEIGHBOR;
CREATE TABLE MSC (
MSCID INTEGER NOT NULL,
MSCNAME CHARACTER (10),
MSCCOMPANY CHARACTER (10),
MSCLONGITUDE DECIMAL (9,6),
MSCLATITUDE DECIMAL (8,6),
MSCALTITUDE INTEGER,
PRIMARY KEY ( MSCID) ) ;
CREATE TABLE BSC (
BSCID INTEGER NOT NULL,
BSCNAME CHARACTER (10),
BSCCOMPANY CHARACTER (10),
LONGITUDE DECIMAL (9,6),
LATITUDE DECIMAL (8,6),
MSCID INTEGER,
PRIMARY KEY (BSCID),
FOREIGN KEY (MSCID) REFERENCES MSC (MSCID)) ;
CREATE TABLE BTS (
BTSNAME CHARACTER (20) NOT NULL,
BSCID INTEGER NOT NULL,
LONGITUDE DECIMAL (9,6),
LATITUDE DECIMAL (8,6),
ALTITUDE INTEGER,
BTSCOMPANY CHARACTER (10),
BTSPOWER DECIMAL (2,1),
PRIMARY KEY (BTSNAME),
FOREIGN KEY (BSCID) REFERENCES BSC (BSCID)) ;
CREATE TABLE CELL (
CELLID INTEGER NOT NULL,
BTSNAME CHARACTER (20),
AREANAME CHARACTER (10),
LAC INTEGER,
LONGITUDE DECIMAL (9,6),
LATITUDE DECIMAL (8,6),
DIRECTION INTEGER,
RADIOUS INTEGER,
ANTNUM INTEGER,
BCCH INTEGER,
PRIMARY KEY ( CELLID),
FOREIGN KEY (BTSNAME) REFERENCES BTS (BTSNAME)) ;
CREATE TABLE MS (
IMEI BIGINT NOT NULL,
MSISDN BIGINT,
USERNAME VARCHAR(10),
MSCOMPANY VARCHAR (20),
GSMMSPSENSE INTEGER,
GSMMSHEIGHT DECIMAL (3,2),
GSMMSPFOUT DECIMAL (3,2),
MZONE CHARACTER (10),
CELLID INTEGER,
PRIMARY KEY ( IMEI),
FOREIGN KEY (CELLID) REFERENCES CELL (CELLID)) ;
CREATE TABLE ANTENNA (
CELLID INTEGER NOT NULL,
ANTENNAHIGH INTEGER,
HALFPANGLE INTEGER,
MAXATTENUATION INTEGER,
GAIN INTEGER,
ANTTILT INTEGER,
PT INTEGER,
MSPWR INTEGER,
PRIMARY KEY ( CELLID));
CREATE TABLE CELL_TCH (
CELLID INTEGER,
FREQ INTEGER,
FOREIGN KEY (CELLID) REFERENCES CELL (CELLID));
CREATE TABLE DATA (
DATE INTEGER NOT NULL,
TIME INTEGER NOT NULL,
CELLID INTEGER NOT NULL,
NTCH INTEGER,
TRAFF DECIMAL (9,7),
RATE DECIMAL (10,9),
THTRAFF DECIMAL (9,7),
CALLNUM INTEGER,
CONGSNUM INTEGER,
CALLCONGS DECIMAL (10,9),
PRIMARY KEY ( DATE,TIME,CELLID)) ;
CREATE TABLE TEST (
KEYNUM INTEGER NOT NULL,
CELLID INTEGER,
LATITUDE DECIMAL (9,6),
LONGITUDE DECIMAL (8,6),
RXLEV DECIMAL (9,6),
PRIMARY KEY ( KEYNUM),
FOREIGN KEY (CELLID) REFERENCES CELL (CELLID));
CREATE TABLE NEIGHBOR (
CELLID INTEGER,
ADJCELLID INTEGER,
CELLLAC INTEGER,
ADJCELLLAC INTEGER,
FOREIGN KEY (CELLID) REFERENCES CELL (CELLID));
IMPORT FROM "C:\msc.csv" OF DEL METHOD P (1, 2, 3, 4, 5, 6) MESSAGES "1" INSERT INTO DB2ADMIN.MSC (MSCID, MSCNAME, MSCCOMPANY, MSCLONGITUDE, MSCLATITUDE, MSCALTITUDE);
IMPORT FROM "C:\bsc.csv" OF DEL METHOD P (1, 2, 3, 4, 5, 6) MESSAGES "1" INSERT INTO DB2ADMIN.BSC (BSCID, BSCNAME, BSCCOMPANY, LONGITUDE, LATITUDE, MSCID);
IMPORT FROM "C:\bts.csv" OF DEL METHOD P (1, 2, 3, 4, 5, 6, 7) MESSAGES "1" INSERT INTO DB2ADMIN.BTS (BTSNAME, BSCID, LONGITUDE, LATITUDE, ALTITUDE, BTSCOMPANY, BTSPOWER);
IMPORT FROM "C:\cell.csv" OF DEL METHOD P (1, 2, 3, 4, 5, 6, 7, 8, 9, 10) MESSAGES "1" INSERT INTO DB2ADMIN.CELL (CELLID, BTSNAME, AREANAME, LAC, LONGITUDE, LATITUDE, DIRECTION, RADIOUS, ANTNUM, BCCH);
IMPORT FROM "C:\data.csv" OF DEL METHOD P (1, 2, 3, 4, 5, 6, 7, 8, 9, 10) MESSAGES "1" INSERT INTO "DATA" (DATE, TIME, CELLID, NTCH, TRAFF, RATE, THTRAFF, CALLNUM, CONGSNUM, CALLCONGS);
IMPORT FROM "C:\ms.csv" OF DEL METHOD P (1, 2, 3, 4, 5, 6, 7, 8, 9) MESSAGES "1" INSERT INTO DB2ADMIN.MS (IMEI, MSISDN, USERNAME, MSCOMPANY, GSMMSPSENSE, GSMMSHEIGHT, GSMMSPFOUT, MZONE, CELLID);
IMPORT FROM "C:\Cell_TCH.csv" OF DEL METHOD P (1, 2) MESSAGES "1" INSERT INTO DB2ADMIN.CELL_TCH (CELLID, FREQ);
IMPORT FROM "C:\test.csv" OF DEL METHOD P (1, 2, 3, 4, 5) MESSAGES "1" INSERT INTO DB2ADMIN.TEST (KEYNUM, CELLID, LATITUDE, LONGITUDE, RXLEV);
IMPORT FROM "C:\antenna.csv" OF DEL METHOD P (1, 2, 3, 4, 5, 6, 7, 8) MESSAGES "1" INSERT INTO DB2ADMIN.ANTENNA (CELLID, ANTENNAHIGH, HALFPANGLE, MAXATTENUATION, GAIN, ANTTILT, PT, MSPWR);
IMPORT FROM "C:\neighbor.csv" OF DEL METHOD P (1, 2, 3, 4) MESSAGES "1" INSERT INTO DB2ADMIN.NEIGHBOR (CELLID, ADJCELLID, CELLLAC, ADJCELLLAC);
自己寫的SQL腳本,做資料庫試驗時寫的。
『柒』 sql語句 如何創建一個表啊
創建表的SQL語句根據不同的資料庫會有所不同,常見的幾種資料庫創建方式如下:
創建一個表。表名字Persons,第一列Id_P,整數類型;第二列LASTName,字元類型;第三列FirstName,字元類型。
微軟VS SQL 2008 資料庫
(7)sql信息表怎麼寫擴展閱讀:
結構化查詢語言(Structured Query Language)簡稱SQL,是用於訪問和處理資料庫的標準的計算機語言,同時也是資料庫腳本文件的擴展名。常用的操作:
刪除表-- drop table tabname--這是將表連同表中信息一起刪除但是日誌文件中會有記錄;
刪除資料庫 -- drop database databasename;
刪除數據記錄 -- "delete from 數據表 where 條件表達式"
『捌』 資料庫怎麼用sql語句創建學生基本信息表(studentinfo)
SQL語句:
CREATE
TABLE
表名稱
(
列名稱1
數據類型,
列名稱2
數據類型,
列名稱3
數據類型,
....
)
舉個例子:
學生基本信息表中有學生學號,學生姓名。假設這里學號為6位整數數字形式,姓名都是字元形式,且不超過4個漢字,那麼就可以這樣寫:
create
table studentinfo
(
學號
int(6),
姓名
char(8)
)
『玖』 簡單的SQL語言怎麼寫
1.select * from tablename;
2.selct 選修課程 from tablename;
3.select 姓名 from tablename where 年齡<21;
4.select 年齡 from tablename where 姓名 like "張%";
5.select * from tablename order by 年齡;