sql 语句和实例
修改字段格式的sql語句: alter table tablename alter column colname newDataType 比如:alter table mytable alter column mycol1 int ; 修改字段名 sp_rename 'made.[chegnji]', 'xingming', 'COLUMN'; 其中made是表格名,chegnji是字段名,xingming是新字段名字,COLUMN表示的是列的意思;
1.創(chuàng)建表格;
create table Customer (name,old,address,sex) values(varchar(50),int,char(50),int);
2.增加一列,也就是增加欄位名字、關(guān)鍵字)
alter table Customer ?add Sales varchar(50);
3.刪除一列;
alter table Customer drop sex;
?4.復(fù)制表格;
1)只復(fù)制表格結(jié)構(gòu)
?第一種:select top 0 *into guanqiong from bb;
第二種: select name ,sex into newtable from bb where 1=2;或者select *into newtable from bb where 1=2;
2)復(fù)制表格結(jié)構(gòu)和數(shù)據(jù);
select name ,sex into newtable from bb where 1=1;
或者select *into newtable from bb where 1=1;
?5.查找前幾條記錄 用top n(表示前幾條);
select top 10 *from newtable where Sales > 980;
6.加入想把1個數(shù)據(jù)結(jié)構(gòu)相同的的表復(fù)制另外一個表中;
insert into aaa select * from? Customer;
?
?
?
?
一節(jié)、數(shù)據(jù)表的查詢(select)
? select 字段列表 [as 別名], * from 數(shù)據(jù)表名
? [where 條件語句]
? [group by 分組字段]
? [order by 排序字段列表 desc]
? [LIMIT startrow,rownumber]
? 1、Select 字段列表 From 數(shù)據(jù)表
? 例:①、select id,gsmc,add,tel from haf (* 表示數(shù)據(jù)表中所有字段)
? ②、select 單價,數(shù)量,單價*數(shù)量 as 合計金額 from haf (As 設(shè)置字段的別名)
? 2、Select … from … Where 篩選條件式
? 篩選條件式:①、字符串數(shù)據(jù): select * from 成績單 Where 姓名='李明'
? ②、萬用字符: select * from 成績單 Where 姓名 like '李%'
? select * from 成績單 Where 姓名 like '%李%'
? select * from 成績單 Where 姓名 like '%李_'
? ③、特殊的條件式:
? ⑴= / > / < / <> / >= / <=
? ⑵AND(邏輯與) OR(邏輯或) NOT(邏輯非)
? ⑶Where 字段名稱 in(值一,值二)
? ⑷Where 字段名稱 Is Null / Where 字段名稱 Is Not Null
? 3、Select … from … group by 字段
??SQL函數(shù):
? SELECT sex,count(id) as women from `user` group by 'sex';
? 函數(shù)名描述函數(shù)名描述
? AVG平均值Count計數(shù)
? MAX最大值MIN最小值
? Sum求和
? 4、Select … from … Order by 字段列表 desc(倒,如果直接寫為順序)
? 5、Select … from … LIMIT ".$start_rowno.",".($pagesize+1)
? 第二節(jié)?SQL語句實例應(yīng)用
? 數(shù)據(jù)庫說明:
? student(學(xué)生表):
? stdid int(11) id號
? son char(5) 學(xué)號
? sname char(20) 姓名
? ssex tinyint(1) 性別
? sage char(3) 年齡
? sdept char(20) 所在系
? course(課程表):
? couid int(11) id號
? cno char(5) 課程號
? cname char(20) 課程名
? cpno char(6) 選修課號
? ccredit char(50) 學(xué)分
? sc(學(xué)生選課表):
? scid int(11) id號
? cno char(5) 課程號
? grade float 成績
? sno char(5) 學(xué)號
? 單表查詢:
? 一、選擇表中的若干字段:
? 查詢指定列:
? 1、查詢?nèi)w學(xué)生的學(xué)號與姓名;
? select son,sname from student
? 2、查詢?nèi)w學(xué)生的姓名、學(xué)號、所在系;
? select sname,son,sdept from student
? 3、查詢?nèi)w學(xué)生的詳細記錄;
? select * from student
? 查詢經(jīng)過計算的值:
? 4、查全體學(xué)生的姓名及其出生年份
? select sname,year(now())-sage as '出生年份' from student
? 5、查詢?nèi)w學(xué)生的姓名、出生年份和所有系,要求用大(小)寫字母表示所有系名
? select sname as '姓名','出生與',year(now())-sage as '出生年份',UPPER(sdept) as '系別' from student
? select sname as '姓名','出生與',year(now())-sage as '出生年份',lower(sdept) as '系別' from student
? 二、選擇表中的若干記錄:
? 消除取值重復(fù)的行:
? 6、查詢選修了課程的學(xué)生學(xué)號
? select distinct sno from sc
? 查詢滿足條件的記錄:
? 比較大小:
? 7、查詢計算機全體學(xué)生的名單
? select sname from student where sdept='cs'
? 8、查詢所有年齡在20歲以下的學(xué)生姓名及其年齡
? select sname,sage from student where sage<20
? 9、查詢考試成績小于90分的學(xué)生的學(xué)號
? select distinct sno from sc where grade<90
? 確定范圍:
? 10、查詢年齡在18-20歲之間的學(xué)生的姓名、系別和年齡。
? select sname,sdept,sage from student where sage between 18 and 20
? 11、查詢年齡不在19-20歲之間的學(xué)生的姓名、系別和年齡。
? select sname,sdept,sage from student where sage not between 19 and 20
? 確定集合:
? 12、查詢信息系(is)、數(shù)學(xué)系(ma)和計算機科學(xué)系(cs)學(xué)生的姓名和性別。
? select sname,ssex from student where sdept in('is','ma','cs')
? 13、查詢不是信息系(is)、數(shù)學(xué)系(ma)的學(xué)生的姓名、系別和年齡。
? select sname,ssex from student where sdept not in('is','ma')
? 字符匹配(like '<匹配串>' %代表任意長度(長度可以為0)的字符串 ; _代表任意單個字符,漢字得用兩個"__"):
? 14、查詢學(xué)號為95001的學(xué)生的詳細情況
? select * from student where son like '95001'
? 15、查詢所有姓名李的學(xué)生的姓名、學(xué)號和性別。
? select sname,son,ssex from student where sname like '李%'
? 16、查詢姓名是兩個字學(xué)生的姓名、學(xué)號和性別。
? select sname,son,ssex from student where sname like '____'
? 17、查詢所有不姓李的學(xué)生姓名。
? select sname from student where sname not like '李__'
? 涉及空值的查詢:
? 18、某些學(xué)生選修課程后沒有參加考試,所以有選課記錄,但沒有考試成績,查詢?nèi)鄙俪煽兊膶W(xué)生的學(xué)號和相應(yīng)的課程號。
? select sno,cno from sc where grade is null
? 19、查詢所有有成績的學(xué)生學(xué)號和課程號。
? select sno,cno from sc where grade is not null
? 多重條件查詢(and or):
? 20、查詢計算機系年齡在20歲的學(xué)生姓名。
? select sname from student where sdept='cs' and sage=20
? 21、查詢信息系(is)、數(shù)學(xué)系(ma)和計算機科學(xué)系(cs)學(xué)生的姓名和性別。
? select sname,ssex from student where sdept='is' or sdept='ma' or sdept='cs'
? 三、對查詢結(jié)果排序:
? 22、查詢選修了3號課程的學(xué)生的學(xué)號及其成績,查詢結(jié)果按分數(shù)的降序排列。
? select sno,grade from sc where cno='3' order by grade desc
? 23、查詢?nèi)w學(xué)生情況,查詢結(jié)果按所在系的系號升序排列,同一系中的學(xué)生按年齡降序排列。
? select * from student order by sdept,sage desc
? 四、使用集函數(shù):
? 24、查詢學(xué)生總?cè)藬?shù)。
? select count(*) as '總?cè)藬?shù)' from student
? 25、查詢選修了課程的學(xué)生人數(shù)。
? select count(distinct sno) as '人數(shù)' from sc
? 26、計算1號課程的學(xué)生平均成績
? select format(avg(grade),2) as '平均成績' from sc where cno='1'
? 27、查詢選修1號課程的學(xué)生最高分數(shù)。
? select max(grade) from sc where cno='1'
? 五、對查詢結(jié)果分組:
? 28、求各個課程號及相應(yīng)的選課人數(shù)。
? select cno as '課程號',count(sno) as '人數(shù)' from sc group by cno
? 29、查詢選修了3門以上課程的學(xué)生學(xué)號。
? select sno from sc group by sno having count(*)>2
? 注:where 子句與 having 短語的區(qū)別在于作用對象不同,where 子句作用于基本表或視圖,從中選擇滿足條件的記錄,having短語作用于組,從中選擇滿足條件的組。
? 多表查詢
? 同時查詢兩個以上的表,稱為連接查詢。
? 等值連接:當連接運算符為=時,為等值連接。
? 1、查詢每個學(xué)生及其選修課程的情況(等值連接)。
? select student.*,sc.* from student,sc where student.son=sc.sno
? 自然連接:在等值連接中把目標列中重復(fù)的屬性列去掉。
? 2、查詢每個學(xué)生及其選修課程的情況(自然連接)。
?
?
?
?
?
?
?
?
?
轉(zhuǎn)載于:https://www.cnblogs.com/chenzuoyou/p/3510266.html
總結(jié)
- 上一篇: java--遍历自定义数组
- 下一篇: Transaction And Lock