Sql分類詳解及單表curd

再次看下我們的知識架構(gòu)
image.png
補充:

我們要想操作數(shù)據(jù)庫必須登錄數(shù)據(jù)庫軟。登錄數(shù)據(jù)庫軟件的方式有多種

  • cmd窗口登錄方式
  • Mysql 命令行方式
  • 圖形化界面方式
    圖解:


    登錄mysql軟件.png

一 數(shù)據(jù)定義語言-DDL

image.png

1 操作數(shù)據(jù)庫

  • 數(shù)據(jù)庫的創(chuàng)建
  • 數(shù)據(jù)庫的刪除
  • 數(shù)據(jù)庫的修改
語法:
1 數(shù)據(jù)庫的創(chuàng)建:
 create database 數(shù)據(jù)庫名
2 數(shù)據(jù)庫的刪除:  
 drop database 數(shù)據(jù)庫名   
3 數(shù)據(jù)庫的修改
  一般修改字符集肌厨,數(shù)據(jù)庫名 作用不大。

ps:show databases 可查看當(dāng)前所有的數(shù)據(jù)庫名字
        use 數(shù)據(jù)庫名     可進入指定的數(shù)據(jù)庫中
  

2 操作表

  • 創(chuàng)建表
  • 修改表
  • 刪除表
語法:
1 表的創(chuàng)建:
create table 表名(字段描述疯淫,字段描述);
字段描述:字段名 字段類型[約束條件]
注意:約束可以不寫

例如創(chuàng)建學(xué)生(stu)表:
create table stu(id int primary key auto_increment,username varchar(20));

ps: show tables:查看當(dāng)前數(shù)據(jù)庫下面的所有表

   desc 表名:查看表結(jié)構(gòu)(也就是表的描述)

   show create table 表名:查看建表語句(有時需要吧表拿來寫個相似的,可以看過源碼直接粘貼)

2 修改表
    2.1修改表名:
        alter table 表名 rename to 新表名
    2.2表添加字段
        alter table 表名 add 列名 字段描述
        例如向stu添加pwd字段
        alter table student1 add pwd varchar(20);
     2.3修改字段名
              alter table 表名 change 字段名稱 新字段描述
               例如吧stu表的pwd字段修改為password:
               alter table stu change pwd password varchar(20);  
               注意:修改字段名時字段描述也可以改,如上代碼varchar(20)
               也可以寫為 int(20),亦可以使用如下2.4代碼修改
     2.4修改字段描述
              alter table 表名 modify 字段名稱 字段類型[約束]
              例如 alter table stu modify password int;
              注意:這種方式不能修改字段名字 否則報錯的
     2.5刪除字段
           alter table 表名 drop 字段
           例如刪除stu表的 password字段:
             alter table stu drop password;
         收獲感覺2.4的語法更靈活可以取代2.5的功能。
  3 刪除表:
       drop table 表名; 

二 數(shù)據(jù)操縱語言-DML

  • 操作對象記錄(行)
  • 關(guān)鍵詞: insert谦屑,update驳糯,delete

Demo表:


image.png
1 插入
  語法1:insert into 表名 values(字段值1,字段值2.....);

     注意:
     默認(rèn)給全部字段插入值(上表id伦仍,username结窘,pwd字段)
     必須保證values后面的值的類型和順序與表結(jié)構(gòu)中的一致

     例如:上表的id int類型,username字符類型充蓝,pwd字符類型,則你插入 的值必須為 int 喉磁,字符谓苟,字符類型。
 
      如向上表插入一些值:
      insert into stu values(10,'kate','123');
      注意:上表有三個字段 你value(xxx)xxx也要滿足三個值协怒,少一個就不行涝焙。

   語法2(常用):
   insert 表名 (字段1,字段2孕暇,...)values(值1仑撞,值2,...)
   
    注意:
    指定字段插入指定的值
    必須保證values后面的值的類型和順序與表結(jié)構(gòu)中的一致

    也就是如上表你要向id 妖滔,pwd 這兩個字段插入值隧哮,則:

    insert into stu(id,pwd) values(30,15); 只要類型一致就行,username沒 
    插入數(shù)據(jù)座舍,查詢時顯示null沮翔。(但是你指定兩個字段此處你插入三個值或者插入一個就報錯,還是少一個也不行)

2 修改

語法:
update 表名 set 字段名1=字段值1曲秉,字段名2= 字段名2...[where 條件]

 例如 吧username為tom的用戶名改為john
 update stu set username = 'john' where username = 'tom';
 注意:上代碼如果不寫where條件默認(rèn)吧所有的用戶名改為john
 當(dāng)然你也可以根據(jù)id改變name字段:
 update stu set username = 'kate' where id = 10;吧id為10 的username 改 
 為kate

總結(jié):修改就是修改字段值采蚀,根據(jù)某一字段值

3 刪除
  語法:
 delete from 表名 [where 條件]
 例如刪除id為30 的 某項
delete from stu where id = 30;
則id為30 的某一相關(guān)信息都會刪除承二。

三 數(shù)據(jù)查詢語言-DQL(非官方叫法)

關(guān)鍵詞:select

  • 基本查詢
  • 基本條件查詢
  • 高級查詢
完整的語法格式:
select 字段  from 表名 where條件  group by 分組字段 having 條件 order by 排序字段  ase|desc(增或者減順序)
1基本查詢:


1 簡單的案例:查詢表中所有字段信息
select * from products;
2 查看指定的字段信息
select 字段名1榆鼠,字段名2,.... from table;
例如:
select pname from products;

3查詢時還可以去掉重復(fù)的字段值:
例如
select distinct price from products;
(多個相同的price 只顯示一個)
4 還可以在查詢結(jié)果上進行運算(+ - *  / 等)亥鸠,但是不會影響數(shù)據(jù)庫中的值妆够。
例如:將所有商品的價格+10元進行顯示
select price+10 from products;

5 還可以給查詢的結(jié)果起個別名
格式 字段名 別名
例如:select price+10 ‘新價格’ from products读虏;
注意 新的字段名最好用字符形式(‘’)否則容易出錯(比如新*價格就出錯责静,不用‘’時)


注意:sql的語法 查詢的結(jié)果是一張新表,顯示給你看的盖桥。

2 基本條件查詢
1 查詢所有:
 select * from 表名;
2 指定范圍查詢
    例如:查詢商品價格>60元的所有的商品信息:
    select * from product where price>60;
3.模糊查詢
  模糊匹配  格式: 字段名 like "匹配規(guī)則"

                 匹配規(guī)則:  內(nèi)容匹配"%"
                            數(shù)字匹配"_":_ 代表占個位
 例如:"龍" 值為龍
      "%龍" 值以龍結(jié)尾
       "龍%" 值 以龍開頭
       "%龍%" 值 包含龍

 案例 查詢商品名稱中包含”新”的商品:
 select *  from products where pname like "%新%";

4.查詢價格為38,68,98的商品
 or 或者in的用法
 or: 或者
 in:(a,b,c):滿足 含有a灾螃,或者b 或者 c的。
and 并且
例如:
select * from products where price=38 or price=68 or price = 98;
select * from products where price in(38,68,98);

5 查詢所有薪資在 50 -70之間的
   select * from products where price between 50 and 70;
   select * from products where price >=50 and price<=70 ; 
小總結(jié):
where后的條件寫法:
     > ,<,=,>=,<=,<>
     like 使用占位符 _ 和 %  _代表一個字符 %代表任意個字符. 

      in:在某個范圍中獲得值.(值不一定連續(xù))
      between num1 and num2 :代表在某一連續(xù)區(qū)間 例如[num1,num2]   

3 高級查詢

  • 排序查詢: order by
  • 聚合函數(shù) sum() avg() max() min() count()
  • 分組:group by
案例驅(qū)動舉例子:
1 排序查詢
    查詢所有的商品揩徊,按價格進行排序.(asc-升序,desc-降序)
      select * from products order by price desc;(降序)
    查詢名稱有“新”的商品的信息并且按價格降序排序.
      select * from products where pname like"%新%"order by price desc;
2 聚合函數(shù)
 sum(字段)求和
 avg(字段) 平均值
 max(字段) 最大值
 min(字段) 最小值
 count(字段) 總數(shù)
 round(數(shù)字腰鬼,保留小數(shù)位數(shù))  四舍五入
 
 注意:
  以前我們操作的都是行的數(shù)據(jù)嵌赠,而聚合函數(shù)操作的是列的數(shù)據(jù) 并且返回 
  一個結(jié)果,但是聚合函數(shù)會忽略null的值熄赡。

  獲得所有商品的價格的總和:
  select sum(price) from products ;

  獲得商品表中價格的平均數(shù):
   select round(avg(price),2) from products ;

  獲得商品表中有多少條記錄(多少個字段)
  select count(*) from products ;

3 分組
語法要求滿足:在where的后面 在order by 前面
***一般分組伴隨著聚合函數(shù)***

語法:
根據(jù)某字段分組姜挺,伴隨聚合函數(shù)(一般分組都伴隨聚合) from 表 group by 字段
select 字段,聚合函數(shù) from table group by 字段

舉個栗子:
根據(jù)cno字段分組彼硫,分組后統(tǒng)計商品的個數(shù)
select cno,count(cno) from products group by cno;

*******************************再舉個重要的栗子******************************
根據(jù)cno分組炊豪,分組統(tǒng)計每組商品的總數(shù)量,并且總數(shù)量> 200;

select cno,sum(pnum) from products group by cno having sum(pnum)>200;
 
注意: where 與having 的區(qū)別:
           where是對分組前的數(shù)據(jù)進行過濾 having是對分組后的數(shù)據(jù)進行過濾
           where 后面不能使用聚合函數(shù) having可以

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末拧篮,一起剝皮案震驚了整個濱河市词渤,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌串绩,老刑警劉巖缺虐,帶你破解...
    沈念sama閱讀 222,104評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異礁凡,居然都是意外死亡高氮,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,816評論 3 399
  • 文/潘曉璐 我一進店門顷牌,熙熙樓的掌柜王于貴愁眉苦臉地迎上來剪芍,“玉大人,你說我怎么就攤上這事韧掩∥珊疲” “怎么了?”我有些...
    開封第一講書人閱讀 168,697評論 0 360
  • 文/不壞的土叔 我叫張陵疗锐,是天一觀的道長坊谁。 經(jīng)常有香客問我,道長滑臊,這世上最難降的妖魔是什么口芍? 我笑而不...
    開封第一講書人閱讀 59,836評論 1 298
  • 正文 為了忘掉前任,我火速辦了婚禮雇卷,結(jié)果婚禮上鬓椭,老公的妹妹穿的比我還像新娘。我一直安慰自己关划,他們只是感情好小染,可當(dāng)我...
    茶點故事閱讀 68,851評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著贮折,像睡著了一般裤翩。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上调榄,一...
    開封第一講書人閱讀 52,441評論 1 310
  • 那天踊赠,我揣著相機與錄音呵扛,去河邊找鬼。 笑死筐带,一個胖子當(dāng)著我的面吹牛今穿,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播伦籍,決...
    沈念sama閱讀 40,992評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼蓝晒,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了鸽斟?” 一聲冷哼從身側(cè)響起拔创,我...
    開封第一講書人閱讀 39,899評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎富蓄,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體慢逾,經(jīng)...
    沈念sama閱讀 46,457評論 1 318
  • 正文 獨居荒郊野嶺守林人離奇死亡立倍,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,529評論 3 341
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了侣滩。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片口注。...
    茶點故事閱讀 40,664評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖君珠,靈堂內(nèi)的尸體忽然破棺而出寝志,到底是詐尸還是另有隱情,我是刑警寧澤策添,帶...
    沈念sama閱讀 36,346評論 5 350
  • 正文 年R本政府宣布材部,位于F島的核電站,受9級特大地震影響唯竹,放射性物質(zhì)發(fā)生泄漏乐导。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 42,025評論 3 334
  • 文/蒙蒙 一浸颓、第九天 我趴在偏房一處隱蔽的房頂上張望物臂。 院中可真熱鬧,春花似錦产上、人聲如沸棵磷。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,511評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽蒲牧。三九已至冰抢,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,611評論 1 272
  • 我被黑心中介騙來泰國打工续搀, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留毅往,地道東北人。 一個月前我還...
    沈念sama閱讀 49,081評論 3 377
  • 正文 我出身青樓途茫,卻偏偏與公主長得像栅组,于是被迫代替她去往敵國和親司浪。 傳聞我的和親對象是個殘疾皇子租谈,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,675評論 2 359

推薦閱讀更多精彩內(nèi)容