第一篇:sql語言學習
SQL語言學習
--語 句功 能
--數據操作
SELECT--從數據庫表中檢索數據行和列 INSERT--向數據庫表添加新數據行
DELETE--從數據庫表中刪除數據行
UPDATE--更新數據庫表中的數據
--數據定義
CREATE TABLE--創建一個數據庫表
DROP TABLE--從數據庫中刪除表
ALTER TABLE--修改數據庫表結構
CREATE VIEW--創建一個視圖
DROP VIEW--從數據庫中刪除視圖
CREATE INDEX--為數據庫表創建一個索引 DROP INDEX--從數據庫中刪除索引
CREATE PROCEDURE--創建一個存儲過程
DROP PROCEDURE--從數據庫中刪除存儲過程 CREATE TRIGGER--創建一個觸發器
DROP TRIGGER--從數據庫中刪除觸發器
CREATE SCHEMA--向數據庫添加一個新模式 DROP SCHEMA--從數據庫中刪除一個模式 CREATE DOMAIN--創建一個數據值域 ALTER DOMAIN--改變域定義
DROP DOMAIN--從數據庫中刪除一個域--數據控制
GRANT--授予用戶訪問權限
DENY--拒絕用戶訪問
REVOKE--解除用戶訪問權限
--事務控制
COMMIT--結束當前事務
ROLLBACK--中止當前事務
SET TRANSACTION--定義當前事務數據訪問特征--程序化SQL
DECLARE--為查詢設定游標
EXPLAN--為查詢描述數據訪問計劃
OPEN--檢索查詢結果打開一個游標
FETCH--檢索一行查詢結果
CLOSE--關閉游標
PREPARE--為動態執行準備SQL 語句 EXECUTE--動態地執行SQL 語句
DESCRIBE--描述準備好的查詢
---局部變量
declare @id char(10)
--set @id = '10010001'
select @id = '10010001'
---全局變量
---必須以@@開頭
--IF ELSE
declare @x int @y int @z int
select @x = 1 @y = 2 @z=3
if @x > @y
print 'x > y'--打印字符串'x > y'
else if @y > @z
print 'y > z'
else print 'z > y'
--CASE
use pangu
update employee
set e_wage =
case
when job_level = ’1’ then e_wage*1.08
when job_level = ’2’ then e_wage*1.07
when job_level = ’3’ then e_wage*1.06
else e_wage*1.05
end
--WHILE CONTINUE BREAK
declare @x int @y int @c int
select @x = 1 @y=1
while @x < 3
begin
print @x--打印變量x 的值
while @y < 3
begin
select @c = 100*@x + @y
print @c--打印變量c 的值
select @y = @y + 1
end
select @x = @x + 1
select @y = 1
end
--WAITFOR
--例 等待1 小時2 分零3 秒后才執行SELECT 語句
waitfor delay ’01:02:03’
select * from employee
--例 等到晚上11 點零8 分后才執行SELECT 語句
waitfor time ’23:08:00’
select * from employee
***SELECT***
select *(列名)from table_name(表名)where column_name operator value
ex:(宿主)
select * from stock_information where stockid= str(nid)
stockname = 'str_name'
stockname like '% find this %'
stockname like '[a-zA-Z]%'---------([]指定值的范圍)
stockname like '[^F-M]%'---------(^排除指定范圍)
---------只能在使用like關鍵字的where子句中使用通配符)
or stockpath = 'stock_path'
or stocknumber < 1000
and stockindex = 24
not stocksex = 'man'
stocknumber between 20 and 100
stocknumber in(10,20,30)
order by stockid desc(asc)---------排序,desc-降序,asc-升序
order by 1,2---------by列號
stockname =(select stockname from stock_informationwhere stockid= 4)
---------子查詢
---------除非能確保內層select只返回一個行的值,---------否則應在外層where子句中用一個in限定符
select distinct column_name form table_name---------distinct指定檢索獨有的列值,不重復select stocknumber ,“stocknumber + 10” = stocknumber + 10 from table_name
select stockname , “stocknumber” = count(*)from table_name group by stockname
---------group by 將表按行分組,指定列中有相同的值
having count(*)= 2---------having選定指定的組
select *
from table1, table2
where table1.id *= table2.id--------左外部連接,table1中有的而table2中沒有得以null表示table1.id =* table2.id--------右外部連接
select stockname from table1
union [all]-----union合并查詢結果集,all-保留重復行
select stockname from table2
***insert***
insert into table_name(Stock_name,Stock_number)value(“xxx”,“xxxx”)
value(select Stockname , Stocknumber from Stock_table2)---value為select語句
***update***
update table_name set Stockname = “xxx” [where Stockid = 3]
Stockname = default
Stockname = null
Stocknumber = Stockname + 4
***delete***
delete from table_name where Stockid = 3
truncate table_name-----------刪除表中所有行,仍保持表的完整性
drop table table_name---------------完全刪除表
***alter table***---修改數據庫表結構
alter table database.owner.table_name add column_name char(2)null.....sp_help table_name----顯示表已有特征
create table table_name(name char(20), age smallint, lname varchar(30))
insert into table_name select.........-----實現刪除列的方法(創建新表)
alter table table_name drop constraint Stockname_default----刪除Stockname的default約束
***function(/*常用函數*/)***
----統計函數----
AVG--求平均值
COUNT--統計數目
MAX--求最大值
MIN--求最小值
SUM--求和
--AVG
use pangu
select avg(e_wage)as dept_avgWage
from employee
group by dept_id
--MAX
--求工資最高的員工姓名
use pangu
select e_name
from employee
where e_wage =
(select max(e_wage)
from employee)
--STDEV()
--STDEV()函數返回表達式中所有數據的標準差
--STDEVP()
--STDEVP()函數返回總體標準差
--VAR()
--VAR()函數返回表達式中所有值的統計變異數
--VARP()
--VARP()函數返回總體變異數
----算術函數----
/***三角函數***/
SIN(float_expression)--返回以弧度表示的角的正弦
COS(float_expression)--返回以弧度表示的角的余弦
TAN(float_expression)--返回以弧度表示的角的正切
COT(float_expression)--返回以弧度表示的角的余切
/***反三角函數***/
ASIN(float_expression)--返回正弦是FLOAT 值的以弧度表示的角
ACOS(float_expression)--返回余弦是FLOAT 值的以弧度表示的角
ATAN(float_expression)--返回正切是FLOAT 值的以弧度表示的角
ATAN2(float_expression1,float_expression2)
--返回正切是float_expression1 /float_expres-sion2的以弧度表示的角
DEGREES(numeric_expression)
--把弧度轉換為角度返回與表達式相同的數據類型可為
--INTEGER/MONEY/REAL/FLOAT 類型
RADIANS(numeric_expression)--把角度轉換為弧度返回與表達式相同的數據類型可為
--INTEGER/MONEY/REAL/FLOAT 類型
EXP(float_expression)--返回表達式的指數值
LOG(float_expression)--返回表達式的自然對數值
LOG10(float_expression)--返回表達式的以10 為底的對數值
SQRT(float_expression)--返回表達式的平方根
/***取近似值函數***/
CEILING(numeric_expression)--返回>=表達式的最小整數返回的數據類型與表達式相同可為--INTEGER/MONEY/REAL/FLOAT 類型
FLOOR(numeric_expression)--返回<=表達式的最小整數返回的數據類型與表達式相同可為--INTEGER/MONEY/REAL/FLOAT 類型
ROUND(numeric_expression)--返回以integer_expression 為精度的四舍五入值返回的數據--類型與表達式相同可為INTEGER/MONEY/REAL/FLOAT 類型
ABS(numeric_expression)--返回表達式的絕對值返回的數據類型與表達式相同可為
--INTEGER/MONEY/REAL/FLOAT 類型
SIGN(numeric_expression)--測試參數的正負號返回0 零值1 正數或-1 負數返回的數據類型--與表達式相同可為INTEGER/MONEY/REAL/FLOAT 類型
PI()--返回值為π 即3.14***936
RAND([integer_expression])--用任選的[integer_expression]做種子值得出0-1 間的隨機浮點數----字符串函數----
ASCII()--函數返回字符表達式最左端字符的ASCII 碼值
CHAR()--函數用于將ASCII 碼轉換為字符
--如果沒有輸入0 ~ 255 之間的ASCII 碼值CHAR 函數會返回一個NULL 值
LOWER()--函數把字符串全部轉換為小寫
UPPER()--函數把字符串全部轉換為大寫
STR()--函數把數值型數據轉換為字符型數據
LTRIM()--函數把字符串頭部的空格去掉
RTRIM()--函數把字符串尾部的空格去掉
LEFT(),RIGHT(),SUBSTRING()--函數返回部分字符串
CHARINDEX(),PATINDEX()--函數返回字符串中某個指定的子串出現的開始位置
SOUNDEX()--函數返回一個四位字符碼
--SOUNDEX函數可用來查找聲音相似的字符串但SOUNDEX函數對數字和漢字均只返回0 值DIFFERENCE()--函數返回由SOUNDEX 函數返回的兩個字符表達式的值的差異
--0 兩個SOUNDEX 函數返回值的第一個字符不同
--1 兩個SOUNDEX 函數返回值的第一個字符相同
--2 兩個SOUNDEX 函數返回值的第一二個字符相同
--3 兩個SOUNDEX 函數返回值的第一二三個字符相同
--4 兩個SOUNDEX 函數返回值完全相同
QUOTENAME()--函數返回被特定字符括起來的字符串
/*select quotename('abc', '{')quotename('abc')
運行結果如下
---{
{abc} [abc]*/
REPLICATE()--函數返回一個重復character_expression 指定次數的字符串 /*select replicate('abc', 3)replicate('abc',-2)
運行結果如下
----------------------
abcabcabc NULL*/
REVERSE()--函數將指定的字符串的字符排列順序顛倒
REPLACE()--函數返回被替換了指定子串的字符串
/*select replace('abc123g', '123', 'def')
運行結果如下
----------------------
abcdefg*/
SPACE()--函數返回一個有指定長度的空白字符串
STUFF()--函數用另一子串替換字符串指定位置長度的子串
第二篇:SQL語言學習工作總結
以下是作者在學習SQL過程中,以工作總結方式寫下點滴的感悟,敬請關注!
暑假過的真快總感覺昨天才剛放假,還想著這個暑假怎么過時,暑假就已經去了。
這個暑假一開始我們看了浙大的sql的視頻,老師給我們的要求是只要看一遍就行。剛開始看的時候還能聽懂一些,看到后面的時候基本就聽不懂了,幸好老師對我們的要求不高,于時只好硬著頭皮繼續。
sql的視頻其實總的說來無非講的是對數據庫、表、字段等的創建、修改和刪除。我們不懂的也就是怎樣使用代碼來實現這些操作。我們現在只要對這些有了解就夠了,以后還會有鍛煉機會的。
之后我們參照著原代碼做了《學生信息管理系統》,大概用了七天的時間。剛開始做的時候,覺得這個工程肯定會挺復雜的。但是做著做著感覺也就是那么回事。無非就是對幾張表的操作。做這個工程最大的收獲就是對剛學的sql知識有了一次熟練的機會,鞏固了剛學的知識。也可以說是趁熱打鐵吧。
然后米老師給了我們更大的考驗,讓我們做《機房收費系統》,而且這次和上一次的《學生信息管理系統》不同的是,這次我們除了只有一個程序和數據庫外,沒有一個字的原碼。
在得知我們可以把這次的工程做成任何樣子時,我打算做一個類似于網吧那樣的收費系統。也是一個cs系統。在網上查了一些主機如何與客戶端通信的資料后,就開工了。雖然遇到了一些困難,但是到最后都一一解決了這三次的學習困難程度可以說是一次比一次高,米老師也是用心良苦呀。
經過這個暑假,對sql已經有了深一步的了解,還有就是將米老師的學習方法又應用了一次。可謂是受益匪淺。
現在軟件工程的學習已經開始,我會繼續努力的。
第三篇:SQL語言匯總
1.UPDATE MARK
SET 總分=語文+數學+英語
SELECT 準考證號,姓名,總分
FROM MARK
WHERE 語文>=75 AND數學>=75 AND 英語>=75 AND 語文+數學+英語>=240
ORDER BY 總分 DESC
UPDATE MARK
SET 修正分數=高考分數*1.3
WHERE 籍貫='云南' OR 籍貫='福建'
SELECT AVG(高考分數)as平均分
FROM MARK
GROUP BY 性別
SELECT *
FROM cj
WHERE 期中成績>=80 OR 期末成績>=80 ORDER BY 課程號 ASC
UPDATE cj
SET平均成績=期中成績*0.2+期末成績*0.8
SELECT 書號,書名,作者
FROM gm
WHERE 書號 LIKE '理*' AND 單價>20 ORDER BY 單價 ASC
UPDATE gm
SET 金額=單價*數量
UPDATE Sale
SET 銷售金額=銷售數量*單價
UPDATE Wage
SET 實發工資=工資+獎金
SELECT 姓名,實發工資
FROM Wage
WHERE 姓名 LIKE '*輝'OR 姓名 LIKE ' *輝*' ORDER BY 年齡 DESC
SELECT 部門號, COUNT(*)as人數
FROM zhigong
GROUP BY 部門號
UPDATE kaoshi
SET平均成績=筆試成績*0.6+上機成績*0.4
SELECT 考號,姓名,平均成績
FROM kaoshi
WHERE 姓名 LIKE '黃*'
DELETE *
FROM mark
WHERE 學號='1003'
SELECT 學號,課程號,期末成績
FROM mark
WHERE 學號 LIKE '*1'
ORDER BY 期末成績 DESC
UPDATE fk
SET 超期罰款=單價*超期天數*0.005
SELECT *
FROM fk
WHERE 單價>=50 OR 超期天數>30 ORDER BY 超期罰款 DESC
UPDATE gp
SET 浮動盈虧=(市場現價-買入加個)*買入數量
SELECT 股票代碼,買入時間,浮動盈虧 FROM gp
WHERE 股票代碼 LIKE '6*' AND 浮動盈虧>0 ORDER BY 買入時間 ASC
UPDATE ah
SET 年齡=年齡+1
SELECT 寢室,COUNT(*)as 愛好球類人數 FROM ah
WHERE 愛好 LIKE '*球'
GROUP BY 寢室
UPDATE JHKC
SET 總價=單價*庫存量
SELECT 設備編號,設備名稱,單價
FROM JHKC
WHERE 庫存量<300 AND 單價<500 ORDER BY 單價 DESC
UPDATE HCSK
SET 票價=600
WHERE 航班號=F807
SELECT 航班號,起飛日期,票價
FROM HCSK
WHERE 出發地='福州' AND 目的地='巴黎' ORDER BY 票價 ASC
第四篇:SQL語言
1.輸出任意兩個字符串變量的值(參考代碼)
declare @v1 varchar(12),@V2 varchar(12)
set @v1='中國'
set @v2='你好!'
select @v1+@v2
2.為以下程序糾錯
declare @v1 varchar(12),@V2 varchar(10)
set @v1='中國'
set @v2='你好!'
set @s='嗎!'
select @v1+@v2+@s
3.運行以下代碼,觀察以下全局變量的功能
select 34@@connections 返回當前服務器的連接數目
select 1@@rowcount 返回上一條T-SQL語句影響的數據行數 select @@error返回上一條T-SQL語句執行后的錯誤號 select @@procid返回當前存儲過程的ID號
select @@remserver 返回登錄記錄中遠程服務器的名字 select @@spid返回當前服務器進程的ID標識
select @@version 返回當前SQL Server服務器的版本和處理器類型 select @@language 返回當前SQL Server服務器的語言
select @@connections
4.輸入以下代碼并理解其含意
bggin
if 3>5
select 'true'
else print 'false'
end
go
begin
if 'a'<'A'
select 'true'
else print 'false'
end
go
begin
if '張'>'李'
select 'true'
else print 'false'
end
go
begin
if getdate()>2008-10-10
print'true'
else print'false'
end
5.附加數據庫student,并進行以下操作
use student
select * from xsda
以XSDa表為例,如果平均成績高于75分,則顯示“不錯!”,否則,顯示“加油呀!”。
declare @av1 char(12), @av2 char(12)
set @av1='不錯!'
set @av2='加油!'
if(select avg(總學分)from xsda)>75
begin
select @av1
end
else
select @av2
編寫一個程序,顯示每一同學的成績等級
select xh,zf,dj=
case
when zf>70 then '優秀'
when zf>65 then '良好'
when zf>=60 then '合格'
else '不合格'
end
from xsdn
6.求1-100偶數和(參考代碼)
declare @i int,@s int/*定義變量*/
set @i=0/*變量賦初值*/
set @s=0
while @i<=100/*條件*/
begin
set @s=@s+@i/*累加求和*/
set @i=@i+2/*偶數*/
end
print @s
7.求10!
8.為以下程序糾錯(求1-100的積)
declare @i int,@s int
set @i=0
set @s=0
while @i<=100 begin
set @s=@s*@iset @i=@i+2 end
print @s
第五篇:SQL語言以及SQL
SQL語言以及SQL*PLUS工具
1.SQL語言組成:
? 數據查詢語言(DQL):SELECT;
? 數據操縱語言(DML):INSERT、UPDATE、DELETE; ? 事務控制語言(TCS):COMMIT、ROLLBACK;
? 數據定義語言(DDL):CREATE、DROP、ALTER;
? 數據控制語言(DCL):GRANT、REVOKE;
2.數據查詢語言(DQL):
? 一般格式:
1.SELECT [ALL|DISTINCT] <目標列表達式> [, <目標列表達式>]…
2.FROM <表名或者視圖名> [, <表名或者視圖名>]…
3.[WHERE <條件表達式>]
4.[GROUP BY <列名1> [HAVING <條件表達式>]]
5.[ORDER BY <列名2> [ASC|DESC];
? 實例:
6.SELECT empno,ename FROM emp WHERE ename<>'a' order by empno;
3.數據操縱語言(DML):
? INSERT:
? 一般格式:
7.INSERT
8.INTO <表名> [(<屬性列1>[, <屬性列2>]…)]
9.VALUES(<常量1>[, <常量2>]…);
? 實例:
INSERT INTO emp(empno,ename)VALUES(1,’test1’);
? UPDATE:
? 一般格式:
10.UPDATE<表名>
11.SET <列名>=<表達式> [,<列名>=<表達式>]…
12.[WHERE <條件>];
? 實例:
13.UPDATE emp SET ename=’test2’ WHERE empno=1;
? DELETE:
? 一般格式:
14.DELETE
15.FROM <表名>
16.[WHERE <條件>];
? 實例:
DELETE FROM emp WHERE empno=1;
4.事務控制語言(TCS):
? COMMIT:
? 說明:
5.6.7.8.17.放在DML之后,提交事務。? 一般格式: 18.COMMIT;? 實例: INSERT INTO emp(empno,ename)VALUES(1,’test1’);COMMIT;? ROLLBACK: ? 說明: 19.放在DML之后,回滾事務。? 一般格式: 20.ROLLBACK;? 實例: INSERT INTO emp(empno,ename)VALUES(1,’test1’);? ROLLBACK;課后練習(2小時): ? 用各種組合反復練習數據查詢語言DQL; ? 用各種組合反復練習數據操縱語言DML; ? 和DML結合反復練習事務控制語言TCS。SQL*PLUS簡介: ? 是Oracle數據庫提供的用于和數據庫交互的工具; ? 數據庫管理員管理數據庫的主要工具; ? 支持SQL-2和SQL-3標準; ? 支持Oracle PL/SQL語言; ? 支持一套Oracle公司定義的SQL*PLUS操縱語言。SQL*PLUS語言介紹: ? 不是標準語言; ? 可以縮寫(一般取英文單詞的前4位); ? 不用加分號; ? 分成數據庫訪問、輸出格式設置、文本編輯、執行程序、環境設置、其他等幾類。常用的SQL*PLUS命令:
? CONNECT(CONN):連接數據庫:
21.CONN SCOTT/TIGER@FIS
? EXIT:退出SQL*PLUS;
? DESCRIBE(DESC):顯示數據庫對象的結構:
22.DESC emp
? SHOW:顯示系統信息:
23.SHOW user
? EDIT:文本編輯;
? RUN(/):運行前一命令;
? SAVE:保存前一命令:
24.SAVE c:temptest.txt
? PASSWORD(PASSW):修改當前用戶的口令; ? SPOOL:將輸出結果保存到本地硬盤上
SPOOL c:temptest.txt SELECT * FORM emp;SPOOL OFF
START(@):路徑*.sql執行腳本 column 字段名 format a35set line 100