第一篇:Oracle 10g學(xué)習(xí)筆記(三)——SQL語言基礎(chǔ)1
content:
SQL語言概述、分類
各種語言常見語句寫法
常用查詢語句的使用
常用系統(tǒng)函數(shù)及其應(yīng)用
分組語句
模糊查詢
表的連接
子查詢
結(jié)構(gòu)化查詢語言是學(xué)好任何一個(gè)關(guān)系型數(shù)據(jù)庫(kù)的前提 語言分類
數(shù)據(jù)定義語言DDL
CREATE 創(chuàng)建表 創(chuàng)建數(shù)據(jù)庫(kù) 創(chuàng)建函數(shù) 創(chuàng)建過程 CREATE TABLE abc(a varchar2(10), b char(10));ALTER 修改表的結(jié)構(gòu)
ALTER TABLE abc ADD c number;
DROP 刪除表 刪除字段 刪除數(shù)據(jù)庫(kù)
DROP TABLE abc;
刪除一個(gè)字段
ALTER TABLE abc DROP COLUMN c;
數(shù)據(jù)控制語言DCL
GRANT
把scott用戶的dept表授權(quán)給tt用戶
GRANT SELECT ON dept TO tt;
SELECT * FROM scott.dept;
REVOKE
解除授權(quán)
REVOKE SELECT ON dept FROM tt;
數(shù)據(jù)操縱語言DML
SELECT
SELECT * FROM dept;
INSERT
INSERT INTO abc(a,b)VALUES('ABC','XY');
賦值個(gè)數(shù)和字段個(gè)數(shù)必須相等,且對(duì)應(yīng)數(shù)據(jù)類型要相同
DELETE
清空表的所有數(shù)據(jù)
DELETE FROM abc
DELETE FROM abc WHERE a='abc';
UPDATE
UPDATE abc SET b='ttt';
UPDATE abc SET b='yyy' WHERE a='abc';
常用的系統(tǒng)函數(shù)
1、字符
length,ltrim,replace,rtrim,substr,trim
查看ABCDEFG包含幾個(gè)字符
SELECT LENGTH('ABCDEFG')FROM dual;
查看ABCDEF漢字包含幾個(gè)字符
SELECT LENGTH('ABCDEF漢字')FROM dual;
查看字節(jié)數(shù)
SELECT LENGTHB('ABCDEF漢字')FROM dual;
去掉左邊空格
SELECT LTRIM(' ABCD')FROM dual;
去掉右邊空格字符(空字符串)
SELECT RTRIM('ABCD ')FROM dual;
去掉左右空格字符
SELECT TRIM(' ABCD')FROM dual;
可變長(zhǎng)字段varchar和定長(zhǎng)字段char區(qū)別:
可變長(zhǎng)字段可以節(jié)省未用到的空間
定長(zhǎng)字段占用字段空間,未用到的使用空格填充,取定長(zhǎng)字段時(shí)最好結(jié)合使用TRIM函數(shù)
定義字符型字段盡可能定義成可變長(zhǎng)字段,避免不必要的存儲(chǔ),有利于數(shù)據(jù)的正確查詢截取字符串
SELECT SUBSTR('abcdefgh',2,3)FROM dual;
左取3個(gè)
SELECT SUBSTR('abcdefgh',1,3)FROM dual;
右取3個(gè)
SELECT SUBSTR('abcdefgh',LENGTH('abcdefgh'-3+1,3)FROM dual2、日期
sysdate,current_date,next_day
查看系統(tǒng)時(shí)間
SELECT sysdate FROM dual;
設(shè)定時(shí)間格式
ALTER SESSION SET NLS_DATE_FORMAT='dd-mon-yyyy hh:mi:ss';SELECT CURRENT_DATE FROM dual;
查看某日期后的星期幾是幾號(hào)
SELECT NEXT_DAY(sysdate,'星期三')FROM dual;
3、轉(zhuǎn)換
to_char,to_date,to_number
將日期轉(zhuǎn)換成字符
SELECT sysdate FROM dual;
SELECT TO_CHAR(sysdate,'yyyy-mm-dd hh24:mi:ss')FROM dual;將字符轉(zhuǎn)換成日期
SELECT TO_DATE('12-3月-08)FROM dual;
將字符轉(zhuǎn)換成數(shù)字
SELECT TO_NUMBER('22')FROM dual;
4、聚集函數(shù)
sum,svg,min,max,count,decode,nvl
求和
SELECT sum(price)FROM books;
求平均值
SELECT avg(price)FROM books;
查看某個(gè)字段的行數(shù),當(dāng)某個(gè)字段為空值時(shí)將不被統(tǒng)計(jì)
SELECT COUNT(price)FROM books;
查看表記錄行數(shù)
SELECT COUNT(*)FROM books;
聚集函數(shù)多為條件但不能與where語句結(jié)合SELECT * FROM books WHERE price>20;
SELECT user FROM dual;
decode函數(shù)為同值字段計(jì)數(shù)
SELECT SUM(DECODE(SEX,'男',1,0))男人數(shù), SUM(DECODE(SEX,'女',1,0))女人數(shù) FROM member;
空值處理
為空值做標(biāo)識(shí) 使用函數(shù)處理空值
SELECT a1, nvl(a2,'未輸入')a2 FROM member;
SELECT * FROM aa WHERE a2 IS NULL;
SELECT * FROM aa WHERE a2 IS NOT NULL;
升序排列
SELECT * FROM aa ORDER BY a1 ASC
降序排列
SELECT * FROM aa ORDER BY a1 DESC
讓重復(fù)數(shù)據(jù)只顯示其中一條,不影響數(shù)據(jù)庫(kù)的值 SELECT DISTINCT a1 FROM aa;
顯示全部數(shù)據(jù)(SELECT默認(rèn)查詢效果)SELECT ALL a1 FROM aa;
第二篇:sql語言學(xué)習(xí)
SQL語言學(xué)習(xí)
--語 句功 能
--數(shù)據(jù)操作
SELECT--從數(shù)據(jù)庫(kù)表中檢索數(shù)據(jù)行和列 INSERT--向數(shù)據(jù)庫(kù)表添加新數(shù)據(jù)行
DELETE--從數(shù)據(jù)庫(kù)表中刪除數(shù)據(jù)行
UPDATE--更新數(shù)據(jù)庫(kù)表中的數(shù)據(jù)
--數(shù)據(jù)定義
CREATE TABLE--創(chuàng)建一個(gè)數(shù)據(jù)庫(kù)表
DROP TABLE--從數(shù)據(jù)庫(kù)中刪除表
ALTER TABLE--修改數(shù)據(jù)庫(kù)表結(jié)構(gòu)
CREATE VIEW--創(chuàng)建一個(gè)視圖
DROP VIEW--從數(shù)據(jù)庫(kù)中刪除視圖
CREATE INDEX--為數(shù)據(jù)庫(kù)表創(chuàng)建一個(gè)索引 DROP INDEX--從數(shù)據(jù)庫(kù)中刪除索引
CREATE PROCEDURE--創(chuàng)建一個(gè)存儲(chǔ)過程
DROP PROCEDURE--從數(shù)據(jù)庫(kù)中刪除存儲(chǔ)過程 CREATE TRIGGER--創(chuàng)建一個(gè)觸發(fā)器
DROP TRIGGER--從數(shù)據(jù)庫(kù)中刪除觸發(fā)器
CREATE SCHEMA--向數(shù)據(jù)庫(kù)添加一個(gè)新模式 DROP SCHEMA--從數(shù)據(jù)庫(kù)中刪除一個(gè)模式 CREATE DOMAIN--創(chuàng)建一個(gè)數(shù)據(jù)值域 ALTER DOMAIN--改變域定義
DROP DOMAIN--從數(shù)據(jù)庫(kù)中刪除一個(gè)域--數(shù)據(jù)控制
GRANT--授予用戶訪問權(quán)限
DENY--拒絕用戶訪問
REVOKE--解除用戶訪問權(quán)限
--事務(wù)控制
COMMIT--結(jié)束當(dāng)前事務(wù)
ROLLBACK--中止當(dāng)前事務(wù)
SET TRANSACTION--定義當(dāng)前事務(wù)數(shù)據(jù)訪問特征--程序化SQL
DECLARE--為查詢?cè)O(shè)定游標(biāo)
EXPLAN--為查詢描述數(shù)據(jù)訪問計(jì)劃
OPEN--檢索查詢結(jié)果打開一個(gè)游標(biāo)
FETCH--檢索一行查詢結(jié)果
CLOSE--關(guān)閉游標(biāo)
PREPARE--為動(dòng)態(tài)執(zhí)行準(zhǔn)備SQL 語句 EXECUTE--動(dòng)態(tài)地執(zhí)行SQL 語句
DESCRIBE--描述準(zhǔn)備好的查詢
---局部變量
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 小時(shí)2 分零3 秒后才執(zhí)行SELECT 語句
waitfor delay ’01:02:03’
select * from employee
--例 等到晚上11 點(diǎn)零8 分后才執(zhí)行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關(guān)鍵字的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列號(hào)
stockname =(select stockname from stock_informationwhere stockid= 4)
---------子查詢
---------除非能確保內(nèi)層select只返回一個(gè)行的值,---------否則應(yīng)在外層where子句中用一個(gè)in限定符
select distinct column_name form table_name---------distinct指定檢索獨(dú)有的列值,不重復(fù)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合并查詢結(jié)果集,all-保留重復(fù)行
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***---修改數(shù)據(jù)庫(kù)表結(jié)構(gòu)
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.........-----實(shí)現(xiàn)刪除列的方法(創(chuàng)建新表)
alter table table_name drop constraint Stockname_default----刪除Stockname的default約束
***function(/*常用函數(shù)*/)***
----統(tǒng)計(jì)函數(shù)----
AVG--求平均值
COUNT--統(tǒng)計(jì)數(shù)目
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()函數(shù)返回表達(dá)式中所有數(shù)據(jù)的標(biāo)準(zhǔn)差
--STDEVP()
--STDEVP()函數(shù)返回總體標(biāo)準(zhǔn)差
--VAR()
--VAR()函數(shù)返回表達(dá)式中所有值的統(tǒng)計(jì)變異數(shù)
--VARP()
--VARP()函數(shù)返回總體變異數(shù)
----算術(shù)函數(shù)----
/***三角函數(shù)***/
SIN(float_expression)--返回以弧度表示的角的正弦
COS(float_expression)--返回以弧度表示的角的余弦
TAN(float_expression)--返回以弧度表示的角的正切
COT(float_expression)--返回以弧度表示的角的余切
/***反三角函數(shù)***/
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)
--把弧度轉(zhuǎn)換為角度返回與表達(dá)式相同的數(shù)據(jù)類型可為
--INTEGER/MONEY/REAL/FLOAT 類型
RADIANS(numeric_expression)--把角度轉(zhuǎn)換為弧度返回與表達(dá)式相同的數(shù)據(jù)類型可為
--INTEGER/MONEY/REAL/FLOAT 類型
EXP(float_expression)--返回表達(dá)式的指數(shù)值
LOG(float_expression)--返回表達(dá)式的自然對(duì)數(shù)值
LOG10(float_expression)--返回表達(dá)式的以10 為底的對(duì)數(shù)值
SQRT(float_expression)--返回表達(dá)式的平方根
/***取近似值函數(shù)***/
CEILING(numeric_expression)--返回>=表達(dá)式的最小整數(shù)返回的數(shù)據(jù)類型與表達(dá)式相同可為--INTEGER/MONEY/REAL/FLOAT 類型
FLOOR(numeric_expression)--返回<=表達(dá)式的最小整數(shù)返回的數(shù)據(jù)類型與表達(dá)式相同可為--INTEGER/MONEY/REAL/FLOAT 類型
ROUND(numeric_expression)--返回以integer_expression 為精度的四舍五入值返回的數(shù)據(jù)--類型與表達(dá)式相同可為INTEGER/MONEY/REAL/FLOAT 類型
ABS(numeric_expression)--返回表達(dá)式的絕對(duì)值返回的數(shù)據(jù)類型與表達(dá)式相同可為
--INTEGER/MONEY/REAL/FLOAT 類型
SIGN(numeric_expression)--測(cè)試參數(shù)的正負(fù)號(hào)返回0 零值1 正數(shù)或-1 負(fù)數(shù)返回的數(shù)據(jù)類型--與表達(dá)式相同可為INTEGER/MONEY/REAL/FLOAT 類型
PI()--返回值為π 即3.14***936
RAND([integer_expression])--用任選的[integer_expression]做種子值得出0-1 間的隨機(jī)浮點(diǎn)數(shù)----字符串函數(shù)----
ASCII()--函數(shù)返回字符表達(dá)式最左端字符的ASCII 碼值
CHAR()--函數(shù)用于將ASCII 碼轉(zhuǎn)換為字符
--如果沒有輸入0 ~ 255 之間的ASCII 碼值CHAR 函數(shù)會(huì)返回一個(gè)NULL 值
LOWER()--函數(shù)把字符串全部轉(zhuǎn)換為小寫
UPPER()--函數(shù)把字符串全部轉(zhuǎn)換為大寫
STR()--函數(shù)把數(shù)值型數(shù)據(jù)轉(zhuǎn)換為字符型數(shù)據(jù)
LTRIM()--函數(shù)把字符串頭部的空格去掉
RTRIM()--函數(shù)把字符串尾部的空格去掉
LEFT(),RIGHT(),SUBSTRING()--函數(shù)返回部分字符串
CHARINDEX(),PATINDEX()--函數(shù)返回字符串中某個(gè)指定的子串出現(xiàn)的開始位置
SOUNDEX()--函數(shù)返回一個(gè)四位字符碼
--SOUNDEX函數(shù)可用來查找聲音相似的字符串但SOUNDEX函數(shù)對(duì)數(shù)字和漢字均只返回0 值DIFFERENCE()--函數(shù)返回由SOUNDEX 函數(shù)返回的兩個(gè)字符表達(dá)式的值的差異
--0 兩個(gè)SOUNDEX 函數(shù)返回值的第一個(gè)字符不同
--1 兩個(gè)SOUNDEX 函數(shù)返回值的第一個(gè)字符相同
--2 兩個(gè)SOUNDEX 函數(shù)返回值的第一二個(gè)字符相同
--3 兩個(gè)SOUNDEX 函數(shù)返回值的第一二三個(gè)字符相同
--4 兩個(gè)SOUNDEX 函數(shù)返回值完全相同
QUOTENAME()--函數(shù)返回被特定字符括起來的字符串
/*select quotename('abc', '{')quotename('abc')
運(yùn)行結(jié)果如下
---{
{abc} [abc]*/
REPLICATE()--函數(shù)返回一個(gè)重復(fù)character_expression 指定次數(shù)的字符串 /*select replicate('abc', 3)replicate('abc',-2)
運(yùn)行結(jié)果如下
----------------------
abcabcabc NULL*/
REVERSE()--函數(shù)將指定的字符串的字符排列順序顛倒
REPLACE()--函數(shù)返回被替換了指定子串的字符串
/*select replace('abc123g', '123', 'def')
運(yùn)行結(jié)果如下
----------------------
abcdefg*/
SPACE()--函數(shù)返回一個(gè)有指定長(zhǎng)度的空白字符串
STUFF()--函數(shù)用另一子串替換字符串指定位置長(zhǎng)度的子串
第三篇:SQL學(xué)習(xí)基礎(chǔ)篇
創(chuàng)建數(shù)據(jù)庫(kù):
CREATE DATABASE TEST_ABC;說明:(可以采用大寫也可以采用小寫,SQL語句本身不區(qū)分大小寫,創(chuàng)建完畢之 后需要用英文分號(hào);來結(jié)尾,TEST_ABC是數(shù)據(jù)庫(kù)名字的代表)。
進(jìn)入數(shù)據(jù)庫(kù):
use TEST_ABC;說明:只有當(dāng)創(chuàng)建好數(shù)據(jù)庫(kù)之后,進(jìn)入數(shù)據(jù)庫(kù),才能創(chuàng)建table(表)。創(chuàng)建表:
create table food_list(food_name varchar(10),food_price int(5));
說明:(table代表的是表,table之后的就是表的名字,名字之后用括 號(hào)(英文格式括起來),然后穿件的就是表的列的名字如food_name和 food_price,varchar和int代表的是這兩個(gè)的數(shù)據(jù)類型,其后括號(hào)里 面的數(shù)字表示的是可以接受的最大字符數(shù),最后用分號(hào)結(jié)束整個(gè)表的創(chuàng) 建過程。)
檢查表:
desc food_list;
說明:desc是describe的縮寫。
刪除表:
drop table food_list;
插入值:
insert into food_list(food_name,food_price)values('鐵板魷魚','200');
說明:insert into表示插入,插入的某個(gè)數(shù)據(jù)庫(kù)中的表中的相應(yīng)的值,第一個(gè)括弧之內(nèi)的為每一列的名字,但是可以只是部分列的名字,而相 應(yīng)的第二個(gè)括弧之內(nèi)的為第一個(gè)括弧之內(nèi)的列相對(duì)應(yīng)的值,不可多也不 可少。中間用values來連接。
查找:
select * from food_list;
select * from food_list where food_name='鐵板魷魚';select food_name,food_price from food_list wherefood_name='紅燒豆腐';
select food_name,food_price from food_list wherefood_name='紅燒豆腐'and food_name='手抓羊肉' orfood_name='雞腿排骨' or food_price<20;
select * from food_list where food_price between 5and 20;
select food_name from food_list where food_namein('碳烤魚','鐵板魷魚','紅燒肉','辣子雞丁','烤龍蝦');
說明1: select是選擇,from表示從指定的某一張table(表)中選,第一個(gè)查詢語句用來顯示整個(gè)表的記錄情況,而第二個(gè)查詢語句是普通 的查詢方式,更為普遍,where后面表示條件,其后跟隨的是列的名字,如food_name,用等號(hào)連接 后面為查詢的對(duì)象,如鐵板魷魚,但是要用 英文的引號(hào)引起來,然后用英文的分號(hào)結(jié)束整個(gè)查詢語句即可。對(duì)于數(shù) 字類型的值可以加單引號(hào)也可以不加,而對(duì)于字符類型的值而言需要加 單引號(hào),而且必須加單引號(hào)。說明2:對(duì)于第三個(gè)的格式,select后面是列的名字,表示選擇了某列,而* 號(hào)表示將所有的列全選上,其他的地方和以上兩個(gè)查詢語句相同。說明3:對(duì)于第四種形式而言,最大的不同在于對(duì)and和or 關(guān)鍵字的 應(yīng)用,and表示兩個(gè)或者多個(gè)條件都要滿足,而or表示只要滿足其中的 一個(gè)條件就可以了。說明4:between是一個(gè)很有效的比較方式,和and連用,并且在第一 個(gè)between...and之后也可以接第二個(gè)between and。說明5:用in關(guān)鍵字可以代替連續(xù)使用多個(gè)or的情況,上述where子 句等同于where food_name='碳烤魚' or food_name='鐵板魷魚' orfood_name='紅燒肉' or food_name='辣子雞丁' or food_name='烤龍 蝦';還有一種狀況是not in作用和in 正好相反。
通配符:
select* from food_list where food_name like'_雞'and food_name like '%肉’;
說明:配合關(guān)鍵字like使用,通配符有%,_,%是任意數(shù)量的未知字符的通配符,_是單個(gè)未知字符的通配符,如'%肉'可能表示紅燒肉,可以表示手抓羊肉,也可 以表示孜然烤肉,總之,其表示以肉字為結(jié)尾的所有字符,而'肉%'表示以肉開頭 所有字符。'_雞',表示兩個(gè)字符,所有以'雞'為結(jié)尾的字符串。
刪除數(shù)據(jù):
delete from food_list where food_name='紅燒肉';說明:delete后面直接跟from,from后面是某個(gè)表的名字where后面是條件,表示要?jiǎng)h除的某個(gè)元組(行)。
更新數(shù)據(jù):
update food_list
setfood_name=”清真黑熊掌,暴炒驢肝”
where food_price=300;
說明:update之后的是表的名稱,set的是對(duì)指定的記錄要更新的值,而一切的決定權(quán)就設(shè)在where子句之中,如果沒有where子句,整個(gè)food_name都列被設(shè)置為 清真黑熊掌,暴炒驢肝。而且最后的where子 句之中也可以和and,or,in,not in,like等關(guān)鍵字組合使用。
第四篇:SQL語言學(xué)習(xí)工作總結(jié)
以下是作者在學(xué)習(xí)SQL過程中,以工作總結(jié)方式寫下點(diǎn)滴的感悟,敬請(qǐng)關(guān)注!
暑假過的真快總感覺昨天才剛放假,還想著這個(gè)暑假怎么過時(shí),暑假就已經(jīng)去了。
這個(gè)暑假一開始我們看了浙大的sql的視頻,老師給我們的要求是只要看一遍就行。剛開始看的時(shí)候還能聽懂一些,看到后面的時(shí)候基本就聽不懂了,幸好老師對(duì)我們的要求不高,于時(shí)只好硬著頭皮繼續(xù)。
sql的視頻其實(shí)總的說來無非講的是對(duì)數(shù)據(jù)庫(kù)、表、字段等的創(chuàng)建、修改和刪除。我們不懂的也就是怎樣使用代碼來實(shí)現(xiàn)這些操作。我們現(xiàn)在只要對(duì)這些有了解就夠了,以后還會(huì)有鍛煉機(jī)會(huì)的。
之后我們參照著原代碼做了《學(xué)生信息管理系統(tǒng)》,大概用了七天的時(shí)間。剛開始做的時(shí)候,覺得這個(gè)工程肯定會(huì)挺復(fù)雜的。但是做著做著感覺也就是那么回事。無非就是對(duì)幾張表的操作。做這個(gè)工程最大的收獲就是對(duì)剛學(xué)的sql知識(shí)有了一次熟練的機(jī)會(huì),鞏固了剛學(xué)的知識(shí)。也可以說是趁熱打鐵吧。
然后米老師給了我們更大的考驗(yàn),讓我們做《機(jī)房收費(fèi)系統(tǒng)》,而且這次和上一次的《學(xué)生信息管理系統(tǒng)》不同的是,這次我們除了只有一個(gè)程序和數(shù)據(jù)庫(kù)外,沒有一個(gè)字的原碼。
在得知我們可以把這次的工程做成任何樣子時(shí),我打算做一個(gè)類似于網(wǎng)吧那樣的收費(fèi)系統(tǒng)。也是一個(gè)cs系統(tǒng)。在網(wǎng)上查了一些主機(jī)如何與客戶端通信的資料后,就開工了。雖然遇到了一些困難,但是到最后都一一解決了這三次的學(xué)習(xí)困難程度可以說是一次比一次高,米老師也是用心良苦呀。
經(jīng)過這個(gè)暑假,對(duì)sql已經(jīng)有了深一步的了解,還有就是將米老師的學(xué)習(xí)方法又應(yīng)用了一次。可謂是受益匪淺。
現(xiàn)在軟件工程的學(xué)習(xí)已經(jīng)開始,我會(huì)繼續(xù)努力的。
第五篇:SQL查詢語句學(xué)習(xí)筆記
問題描述:
為管理崗位業(yè)務(wù)培訓(xùn)信息,建立3個(gè)表:
S(SID,SNAME,SDEPT,SEX,AGE)SID,SNAME,SDEPT,SEX,AGE 分別代表學(xué)號(hào)、學(xué)員姓名、所屬部門、學(xué)員性別、學(xué)員年齡
C(CID,CNAME)CID,CNAME 分別代表課程編號(hào)、課程名稱
SC(SID,CID,GRADE)SID,CID,GRADE 分別代表學(xué)號(hào)、所選修的課程編號(hào)、學(xué)習(xí)成績(jī)
表結(jié)構(gòu)與數(shù)據(jù)見Data4SqlTest1.sql
要求實(shí)現(xiàn)如下5個(gè)處理:
1.使用標(biāo)準(zhǔn)SQL嵌套語句查詢選修課程名稱為“英語”的學(xué)員學(xué)號(hào)和姓名
2.使用標(biāo)準(zhǔn)SQL Join語句查詢選修課程名稱為“英語”的學(xué)員學(xué)號(hào)和姓名
3.使用標(biāo)準(zhǔn)SQL語句查詢不選修“數(shù)學(xué)”課程的學(xué)員姓名和所屬單位
4.使用標(biāo)準(zhǔn)SQL嵌套語句查詢選修全部課程的學(xué)員姓名和所屬單位
5.查詢選修了課程的學(xué)員人數(shù)
6.查詢選修課程超過3門的學(xué)員學(xué)號(hào)和所屬單位
1.使用標(biāo)準(zhǔn)SQL嵌套語句查詢選修課程名稱為“英語”的學(xué)員學(xué)號(hào)和姓名 Java代碼
1.SELECT SNAME,SDEPT FROM S
2.WHERE SID IN(3.SELECT SID FROM C,SC
4.WHERE C.CID=SC.CID
5.AND CNAME='英語')
2.使用標(biāo)準(zhǔn)SQL Join語句查詢選修課程名稱為“英語”的學(xué)員學(xué)號(hào)和姓名 Java代碼
1.SELECT SNAME,SDEPT FROM S
2.JOIN SC ON S.SID=SC.SID JOIN C ON C.CID=SC.CID
3.WHERE CNAME='英語'
3.使用標(biāo)準(zhǔn)SQL語句查詢不選修“數(shù)學(xué)”課程的學(xué)員姓名和所屬單位 Java代碼
1.select SNAME,SDEPT
2.from S
3.where SID not in(4.select SC.SID
5.from SC
6.right join(select S.SID,C.CID from S join C)as T on SC.SID=T.SID
and SC.CID=T.CID join C on T.CID=C.CID
7.where C.CNAME='數(shù)學(xué)' and SC.SID is not null
8.)
或者是:
Java代碼
1.SELECT SNAME,SDEPT FROM S
2.WHERE SID NOT IN(3.SELECT SID FROM SC
4.WHERE CID IN(SELECT CID FROM C WHERE CNAME='數(shù)學(xué)'))
4.使用標(biāo)準(zhǔn)SQL嵌套語句查詢選修全部課程的學(xué)員姓名和所屬單位 Java代碼
1.select SNAME,SDEPT
2.from S
3.where SID in
4.(select S.SID
5.from S
6.inner join SC on S.SID=SC.SID
7.group by S.SID
8.having count(CID)=(select count(1)from C)
9.)
5.查詢選修了課程的學(xué)員人數(shù)
Java代碼
1.SELECT 學(xué)員人數(shù)=COUNT(DISTINCT(SID))FROM SC
6.查詢選修課程超過3門的學(xué)員學(xué)號(hào)和所屬單位
Java代碼
1.SELECT SNAME,SDEPT FROM S
2.WHERE SID IN(3.SELECT SID FROM SC
4.GROUP BY SID
5.HAVING COUNT(DISTINCT(CID))>3)