• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            Prayer

            在一般中尋求卓越
            posts - 1256, comments - 190, trackbacks - 0, articles - 0
              C++博客 :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

            基本SQL語(yǔ)句

            Posted on 2008-08-12 15:54 Prayer 閱讀(282) 評(píng)論(0)  編輯 收藏 引用 所屬分類(lèi): 數(shù)據(jù)庫(kù),SQL
            有關(guān)數(shù)據(jù)庫(kù)的一寫(xiě)操作:
            創(chuàng)建表項(xiàng)就不說(shuō)了.
            CREATE TABLE Student
            (Sno CHAR(5) NOT NULL UNIQUE,
            Sname CHAR(20),
            Ssex CHAR(1),
            Sage INT,
            Sdept CHAR(15));
            插入記錄:
            insert into Student (Sno,Sname,Ssex,Sdept) values('aaa','mary','f','172');
            刪除記錄:
            delete from Student where Sno = 'aaa';
            注:只需要?jiǎng)h除一個(gè)主鍵就可以了。其他的記錄會(huì)相應(yīng)的刪除掉。
            刪除表中一個(gè)字段:
            ALTER TABLE Student DROP column Ssex; 列名;
            修改表中的那一行數(shù)據(jù):
            原來(lái)的記錄:
            Sno Sname Ssex Sdept
            aaa mary f 172
            update Student set Sname='mary1', Ssex='m' where Sno='aaa';
            修改后:
            Sno Sname Ssex Sdept
            aaa mary1 m 172


            desc倒敘排列:
            建立索引:
            create unique index Sno on Student(Sno);
            索引的一點(diǎn)好處:在查詢時(shí)候比較方便,在存在的所有記錄中查找一個(gè)Sno=1的時(shí)候!建立索引的表中就直接查找Sno項(xiàng)比較它是否=1找到后查相關(guān)的記錄就比較快。沒(méi)有建立索引的需要把所有信息都查找一遍,再在其中找Sno字段,再比較其值=1的相關(guān)記錄。

            默認(rèn)是ASC。
            按表中哪個(gè)字段倒敘排序:
            select * from Student order by Sno desc;
            注意:要排序的字段必須是int型。

            設(shè)置成自增長(zhǎng)的字段在插入數(shù)據(jù)的時(shí)候不需要插入該字段的值:
            select * from Student order by Sno desc;
            原來(lái)沒(méi)有設(shè)置成自增長(zhǎng)插入數(shù)據(jù)命令:
            insert into Student (Sno,Sname,Ssex,Sdept) values('aaa','mary','f','172');
            將int型的Sno字段設(shè)置成自增長(zhǎng)后
            insert into Student (Sname,Ssex,Sdept) values('mary1','f','172');
            insert into Student (Sname,Ssex,Sdept) values('mar1y','f','172');
            insert into Student (Sname,Ssex,Sdept) values('ma1ry','f','172');
            insert into Student (Sname,Ssex,Sdept) values('m1ary','f','172');

            在表中的排序如下:
            Sno Sname Ssex Sdept
            1 mary1 f 172
            2 mar1y f 172
            3 ma1ry f 172
            4 m1ary f 172
            /*********************************************************************************
            2006.7.20
            *********************************************************************************/
            查詢表中記錄總數(shù):(無(wú)字段名字)
            select count() from usertable;
            或:(userid 為字段名字,結(jié)果是字段的總行數(shù))
            select count(*) userid from Student;

            查詢字段的平均值:
            selecet avg(Sno) from Student;
            select avg(字段名)from 表名;

            給出查詢的字段的平均值取別名:
            select avg(字段名) as (別名) from (表名);

            查找指定的字段的其他字段
            select Sdept,Ssex,Sname
            from Student
            where Sno=3;
            (where Sname='mary1';或則where Sname like 'mary1';)

            在between語(yǔ)句查詢的都是在and之間的所有值而IN語(yǔ)句則必須是in括號(hào)里面的值.
            select Sno,Ssex,Sname from Student where Sdept between 180 and 190;

            select Sno,Ssex,Sname from Student where Sdept in (172,190);


            查詢Student表中的所有的名字中的Sno和Ssex值.
            select Sno,Ssex from Student where Sdept >= 170 and Sname like '%%';
            注:%%之間是把所有的String類(lèi)型的值




            like和where條件查詢
            select last_name,salsry,department_id from employees where last_name like 'G%' and salary>3000;

            查詢Student表中的所有的名字中間有mary的所有名字對(duì)應(yīng)的的Sno和Ssex值.
            select Sno,Ssex from Student where Sdept >= 170 and Sname like '%mary%';
            注:mary1,1mary,marydsajdh,等.

            注意:and or not 用的時(shí)候,and是用在連接并列條件的2個(gè)不同的字段
            or是用在選擇的2個(gè)不同的字段之間,not一般用于not in(180,190)之間.
            order by 和asc|desc的一點(diǎn)不同:
            order by是按先進(jìn)先排,desc是先進(jìn)后排,asc和desc是排列順序不一樣.




            disctinct條件查詢
            distinct 這個(gè)關(guān)鍵字來(lái)過(guò)濾掉多余的重復(fù)記錄只保留一條,

            select distinct name from table 表示將返回table表中name字段不重復(fù)的所有字段的集合。

            注:distinct必須放在開(kāi)頭,select id distinct name from table 是錯(cuò)誤的!

            -------------------------------------------------------------------------------------
            表TEST_1:
            id name1 name2
            9 aaa 11
            8 bbb 22
            3 ccc 33
            4 ccc 44
            5 bbb 55
            6 ddd 66
            7 eee 77
            -------------------------------------------------------------------------------------

            select distinct(name1) from test_1

            結(jié)果:
            name1
            aaa
            bbb
            ccc
            ddd
            eee
            distinct這個(gè)關(guān)鍵字來(lái)過(guò)濾掉多余的重復(fù)記錄只保留一條,但往往只用它來(lái)返回不重復(fù)記錄的集合,而不是用它來(lái)返回不重記錄的所有值。其原因是distinct只能返回它的目標(biāo)字段,而無(wú)法返回其它字段,即上表中只能返回name1字段的所有不重復(fù)記錄集合。

            -------------------------------------------------------------------------------------
            如果現(xiàn)在想查詢出表test_1中所有name1不重復(fù)的id和name1字段的記錄呢?

            select distinct name, id from table

            結(jié)果:
            name1 id
            aaa 9
            bbb 5
            bbb 8
            ccc 3
            ccc 4
            ddd 6
            eee 7

            并不是我們所想要的結(jié)果

            select distinct name,id from table 作用了兩個(gè)字段,也就是必須得id與name都相同的才會(huì)被排除,即返回去除table表中id和name兩個(gè)字段同時(shí)相同情況下所有集合。
            -------------------------------------------------------------------------------------

            如果現(xiàn)在想查詢出表test_1中所有name1不重復(fù)的所有字段的記錄呢?

            對(duì)于
            select * from test_1 where name1 in (select distinct name1 from tablename)
            等價(jià)于
            select * from test_1 where name1 in ('aaa','bbb','ccc','ddd','eee')
            我們很可能認(rèn)為它是可行的,但實(shí)際上結(jié)果卻是:

            id name1 name2
            9 aaa 11
            8 bbb 22
            3 ccc 33
            4 ccc 44
            5 bbb 55
            6 ddd 66
            7 eee 77

            正確sql應(yīng)該是:
            select * from test_1 inner join (select min(id) as id from test_1 group by name1 order by id ) T on test_1.id = T.id

            min(id)或max(id)都行,order by id 可要可不要.這里用內(nèi)連接實(shí)現(xiàn)聯(lián)合查詢,也可以用where語(yǔ)句

            select * from test_1 ,(select min(id) as id from test_1 group by name1 order by id ) where test_1.id = T.id

            久久精品成人| 久久久精品一区二区三区| 久久精品嫩草影院| 久久久久99精品成人片直播| 久久久久久精品久久久久| 久久精品国产清自在天天线| 精品无码人妻久久久久久| 国产精品久久久久影院色| 韩国免费A级毛片久久| 7777久久亚洲中文字幕| 精品久久久久久中文字幕人妻最新| 久久久久久伊人高潮影院| 久久久久99这里有精品10 | 欧洲精品久久久av无码电影| 久久精品aⅴ无码中文字字幕不卡| 合区精品久久久中文字幕一区 | 欧美va久久久噜噜噜久久| 久久久无码精品亚洲日韩京东传媒| 2021国内久久精品| 久久天天躁狠狠躁夜夜96流白浆| 国产Av激情久久无码天堂| 久久综合丝袜日本网| 久久久久国产一区二区三区| 久久露脸国产精品| 亚洲乱码精品久久久久..| 久久精品国产99国产电影网| 久久婷婷人人澡人人| 国产成年无码久久久免费| 国产69精品久久久久777| 国产—久久香蕉国产线看观看| 久久影院午夜理论片无码| 久久久www免费人成精品| 久久久久久a亚洲欧洲aⅴ| 久久青青草原精品国产不卡| 欧美熟妇另类久久久久久不卡| 久久综合久久综合久久| 久久亚洲sm情趣捆绑调教 | 一本色综合久久| 久久久久女人精品毛片| 久久久久无码国产精品不卡| 欧洲人妻丰满av无码久久不卡|