• <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++博客 :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

            基本SQL語句

            Posted on 2008-08-12 15:54 Prayer 閱讀(286) 評論(0)  編輯 收藏 引用 所屬分類: 數據庫,SQL
            有關數據庫的一寫操作:
            創建表項就不說了.
            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';
            注:只需要刪除一個主鍵就可以了。其他的記錄會相應的刪除掉。
            刪除表中一個字段:
            ALTER TABLE Student DROP column Ssex; 列名;
            修改表中的那一行數據:
            原來的記錄:
            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);
            索引的一點好處:在查詢時候比較方便,在存在的所有記錄中查找一個Sno=1的時候!建立索引的表中就直接查找Sno項比較它是否=1找到后查相關的記錄就比較快。沒有建立索引的需要把所有信息都查找一遍,再在其中找Sno字段,再比較其值=1的相關記錄。

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

            設置成自增長的字段在插入數據的時候不需要插入該字段的值:
            select * from Student order by Sno desc;
            原來沒有設置成自增長插入數據命令:
            insert into Student (Sno,Sname,Ssex,Sdept) values('aaa','mary','f','172');
            將int型的Sno字段設置成自增長后
            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
            *********************************************************************************/
            查詢表中記錄總數:(無字段名字)
            select count() from usertable;
            或:(userid 為字段名字,結果是字段的總行數)
            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語句查詢的都是在and之間的所有值而IN語句則必須是in括號里面的值.
            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類型的值




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

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

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




            disctinct條件查詢
            distinct 這個關鍵字來過濾掉多余的重復記錄只保留一條,

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

            注:distinct必須放在開頭,select id distinct name from table 是錯誤的!

            -------------------------------------------------------------------------------------
            表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

            結果:
            name1
            aaa
            bbb
            ccc
            ddd
            eee
            distinct這個關鍵字來過濾掉多余的重復記錄只保留一條,但往往只用它來返回不重復記錄的集合,而不是用它來返回不重記錄的所有值。其原因是distinct只能返回它的目標字段,而無法返回其它字段,即上表中只能返回name1字段的所有不重復記錄集合。

            -------------------------------------------------------------------------------------
            如果現在想查詢出表test_1中所有name1不重復的id和name1字段的記錄呢?

            select distinct name, id from table

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

            并不是我們所想要的結果

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

            如果現在想查詢出表test_1中所有name1不重復的所有字段的記錄呢?

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

            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應該是:
            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 可要可不要.這里用內連接實現聯合查詢,也可以用where語句

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

            午夜精品久久久久久久| 精品久久久久久成人AV| 久久亚洲精品无码观看不卡| 久久久久久A亚洲欧洲AV冫| 日日狠狠久久偷偷色综合免费 | 超级碰碰碰碰97久久久久| 伊人久久大香线蕉av一区| 777久久精品一区二区三区无码| 久久久久久极精品久久久| 久久久一本精品99久久精品66| 精品国产综合区久久久久久| 婷婷五月深深久久精品| 久久精品国产清自在天天线| 久久精品国产亚洲av高清漫画| 久久亚洲国产精品123区| 国产精品久久久久9999| 一本色综合网久久| 久久人妻少妇嫩草AV无码蜜桃| 精品国产福利久久久| 久久精品日日躁夜夜躁欧美| 精品一久久香蕉国产线看播放| 99久久免费国产精品热| 一本久久知道综合久久| 2021国产精品午夜久久| 久久久久国色AV免费观看| 久久婷婷国产麻豆91天堂| 久久精品国产第一区二区三区| 欧美精品国产综合久久| 久久久久久综合网天天| 久久天天躁狠狠躁夜夜avapp| 久久九九免费高清视频| 大蕉久久伊人中文字幕| 精品久久久久久国产牛牛app | 久久香蕉超碰97国产精品| 久久久久av无码免费网| 久久人人爽人人爽人人片av麻烦| 亚洲国产成人精品91久久久| 人妻无码久久精品| 色综合久久夜色精品国产| 久久亚洲AV成人无码软件| 久久久www免费人成精品|