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

SQL 語句分類

  1. Data Definition Language (DDL 數(shù)據(jù)定義語言) 如:建庫婶肩,建表,用來定義數(shù)據(jù)庫對象
    關鍵字:create、drop此蜈、alter 等
  2. Data Manipulation Language(DML 數(shù)據(jù)操縱語言)勿她,如:對表中的記錄操作增刪改
    關鍵字:insert袄秩、delete、update 等
  3. Data Query Language(DQL 數(shù)據(jù)查詢語言)逢并,如:對表中的查詢操作
    關鍵字:select之剧、where 等
  4. Data Control Language(DCL 數(shù)據(jù)控制語言),如:對用戶權限的設置
    關鍵字:GRANT砍聊、REVOKE等
    MySQL 的語法
  1. 每條語句以分號結尾背稼,如果在 SQLyog 中不是必須加的。
  2. SQL 中不區(qū)分大小寫玻蝌,關鍵字中認為大寫和小寫是一樣的
  3. 3 種注釋:
    注釋的語法
  • --空格 單行注釋
  • /* */ 多行注釋
  • 這是 mysql 特有的注釋方式

DDL:

操作數(shù)據(jù)庫蟹肘、表
一、操作數(shù)據(jù)庫:CRUD

  • C:Create 創(chuàng)建

    * 創(chuàng)建數(shù)據(jù)庫
          *create database 數(shù)據(jù)庫名稱; 
    
    * 創(chuàng)建db4數(shù)據(jù)庫俯树,判斷是否存在
          *create database if not exists 數(shù)據(jù)庫名稱帘腹;
    
    * 創(chuàng)建db4數(shù)據(jù)庫,并指定字符集GBK许饿;
          *create database 數(shù)據(jù)庫名稱 character set 字符集名;  
    
    * 綜合一點的練習:創(chuàng)建db4數(shù)據(jù)庫竹椒,判斷是否存在,并指定字符集GBK米辐;
          *create database if not exists db4 character set gbk;  
    
  • R:Retrieve 查詢

    * 查詢所有數(shù)據(jù)庫的名稱
      show databases;
    
    *查看某個數(shù)據(jù)庫庫的字符集胸完,查詢某個數(shù)據(jù)庫的創(chuàng)建語句
      *SHOW creat databese  數(shù)據(jù)庫的名稱;
    
  • U:Update 修改

    * 修改數(shù)據(jù)庫的字符集
          *alter database 數(shù)據(jù)庫名稱 character set 字符集名稱;
    
  • D:Delete 刪除

    * 刪除數(shù)據(jù)庫翘贮;
          *drop database 數(shù)據(jù)庫名稱; 
    
    * 判斷數(shù)據(jù)庫是否存在赊窥,存在再刪除;
        *drop database if not exists 數(shù)據(jù)庫名稱狸页;
    
  • 使用數(shù)據(jù)庫

    * 查詢當前正在使用的數(shù)據(jù)庫名稱锨能;
    *selcet database(); 
    
    * 使用數(shù)據(jù)庫扯再;
      *use 數(shù)據(jù)庫名稱; 
    

二、操作表

  • C:Create 創(chuàng)建
    語法:create table 表名(
    列名1 數(shù)據(jù)類型1,
    列名2 數(shù)據(jù)類型2,
    列名3 數(shù)據(jù)類型3,
    ...
    列名n 數(shù)據(jù)類型n
    )址遇;
    *最后一列熄阻,不需要加逗號“,”
  • 數(shù)據(jù)類型:
  • int : 整數(shù)類型倔约,例如:age int,
  • double :小數(shù)類型秃殉,例如:score double (5,2);表示最大值是999.99
  • date :日期,只包含年月日的日期浸剩,yyyy -MM -dd
  • datetime :日期钾军,包含年月日時分秒 ,yyyy -MM -dd HH:mm:ss
  • timestamp :時間戳類型 绢要,包含年月日時分秒 吏恭,yyyy -MM -dd HH:mm:ss
    *區(qū)別,如果是timestamp重罪,如果將來不給這個字段賦值樱哼,或者賦值為null ,則默認使用當前的系統(tǒng)時間,來自動賦值剿配。
  • varchar :字符串 例如:name varchar(20);表示姓名最大20字符搅幅;zhangsan 八個字符,張三惨篱,2個字符
    超出最大字符會報錯
    *創(chuàng)建表 盏筐;
         *create table student(
              id  int,
              name varchar(32),
              age int,
              scroe double(4,1),
              birthday date,
              intset_time timestamp 
        ); 
* 復制表;
    *create table 表名 like 被復制的表名; 
  • R:Retrieve 查詢
    * 查詢某個數(shù)據(jù)庫中所有表的名稱砸讳;
      *show tables; 
    
    * 查詢表結構琢融;
      *desc 表名; 
    
  • U:Update 修改
    • 修改表名;
      * alter table 表名  rename to 新的表名簿寂;
  • 修改表的字符集漾抬;
      * alter table 表名 character  set 字符集名稱;
  • 添加一列:
      * alter table 表名 add 列名 數(shù)據(jù)類型常遂;
  • 修改列名稱 類型纳令;
      * alter table 表名 change 原列名 新列名 新數(shù)據(jù)類型;
      * alter table 表名 modify 原列名 新列名 新數(shù)據(jù)類型克胳;
  • 刪除列平绩;
* alter table 表名 drop 列名;
  • D:Delete 刪除
    * 刪除表漠另;
  *drop table 表名捏雌;
  *drop table  if exists 表名;

客戶端圖形化工具:SQLYog
安裝:
傻瓜式操作,安裝完畢以后笆搓,注意連接數(shù)據(jù)庫性湿。
配置新連接報錯:錯誤號碼 2058纬傲,分析是 mysql 密碼加密方法變了。

解決方法:windows 下cmd 登錄 mysql -u root -p 登錄你的 mysql 數(shù)據(jù)庫肤频,然后執(zhí)行這條SQL:

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';(注意分號)

password 是你自己設置的root密碼叹括;
然后在重新配置SQLyog的連接,則可連接成功了宵荒,就OK了汁雷。

DML:增刪該表中的數(shù)據(jù)

  1. 添加數(shù)據(jù):
    語法:
  * insert into 表名(列名1,列名2,....列名n) values(值1,值2,值3,...值n);
注意事項:
    列名和值要一一對應,
    如果表名后骇扇,不定義列名摔竿,則默認給所有列添加值面粮、
       * insert into 表名 values(值1,值2,值3,...值n);建議不偷懶
    除了數(shù)字類型少孝,其他類型需要使用引號(單雙都可以)引起來。

問題自己在創(chuàng)建表的時候使用timestamp,不能匹配當前系統(tǒng)時間

2.刪除數(shù)據(jù):

  • 語法:
  • delete from 表名[ where 條件]
    注意:
    1熬苍、如果不加條件稍走,則刪除表中所有的記錄
    2、如果要刪除所有記錄柴底,我們有兩種做法婿脸,
    * 1.delete from 表名 ----------- 不推薦使用,有多少條記錄就會執(zhí)行多少次刪除操作柄驻,效率低
    * 2.truncate table 表名 ------- 推薦使用狐树,刪除表,然后再創(chuàng)建一個一摸一樣的空表,效率更高
    3.修改數(shù)據(jù):
    語法:
  • update 表名 set 列名1=值1,列名2= 值2.... [where 條件]鸿脓;
    注意:
    如果不加任何條件抑钟,則會將表中全部記錄修改

DQL : 查詢

*select * from 表名
語法:

select 
      字段列表
from
      表名列表
where 
      條件列表
group by
      分組字段
having 
      分組之后的條件
order by
      排序
limit 
      分頁限定

2、基礎查詢
1.多個字段的查詢
select 字段名1野哭,字段名2....from 表名在塔;
注意如果查詢所有字段則可以使用select * from 表名,這是簡化的形式拨黔,用* 代替
2.去除重復
select distinct 結果集 from 表名蛔溃;
如果去除多個字段重復的,必須是結果集完全一致的情況下才行篱蝇,
3.計算列
一般可以使用四則運算計算一些列的值(一般智慧進行數(shù)值的運算)
ifnull(表達式1贺待,表達式2); 表達式1:哪個字段需要判斷是否為null零截,表達式2:如果為null麸塞,替換為。瞻润。
select name,math,english,math+english from student;
select name,math,english,math+ifnull(english,0) from student;誰有可能為null喘垂,就ifnull誰甜刻。
如果有null參與計算,計算結果都為null正勒,

4.起別名
as :as 也可以省略
select name,math,english,math+ifnull(english,0) AS 總分 from student;
select name,math,english,math+ifnull(english,0) 總分 from student;或者用空格
3得院、條件查詢
1.where 子句后跟條件

2.運算符
  * >、<章贞、<=祥绞、>=、=鸭限、<>                ----------<>在 SQL 中表示不等于蜕径,在 mysql 中也可以使用!=

沒有==
* BETWEEN...AND ---------在一個范圍之內(nèi),如:between 100 and 200相當于條件在 100 到 200 之間败京,包頭又包尾
* IN(集合) ------------集合表示多個值兜喻,使用逗號分隔
* LIKE '張%' ---------------模糊查詢
占位符:
_:單個任意字符
%:多個任意字符
* IS NULL-------------查詢某一列為 NULL 的值,注:不能寫=NULL

邏輯運算符
  * and 或 && -----------------與赡麦,SQL 中建議使用前者朴皆,后者并不通用。
  * or 或 || ------------或
  * not 或 !------------------- 非

例如:

select * from student where age >20;--查詢年齡大于20
select * from student where age >=20;--查詢年齡大于等于20
select * from student where age =20;--查詢年齡等于20 
select * from student where age !=20;--查詢年齡不等于20 
select * from student where age <>20;--查詢年齡不等于20 
select * from student where age >=20 and age <=30;--查詢年齡大于等于20泛粹,小于等于30 
select * from student where age between 20 and 30;--查詢年齡大于等于20遂铡,小于等于30 
--查詢年齡22歲,18歲晶姊,25歲的人扒接,
select * from student where age =22 or age = 18 or age = 25;
select * from student where age in(22,18,25) ;
--查詢英語成績?yōu)閚ull;
select * from student where English is null们衙;
--查詢英語成績不為null
select * from student where English is  not null钾怔;
-- 查詢姓馬的有哪些
select *  from student where name like '馬%';
--查詢第二個字是化的人
select *  from student where name like '_馬%'砍艾;
--查詢姓名是三個字的人
select *  from student where name like '___'蒂教;--三個下劃線_
--查詢姓名中包含馬的人
select *  from student where name like '%馬%';
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末脆荷,一起剝皮案震驚了整個濱河市凝垛,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌蜓谋,老刑警劉巖梦皮,帶你破解...
    沈念sama閱讀 211,743評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異桃焕,居然都是意外死亡剑肯,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,296評論 3 385
  • 文/潘曉璐 我一進店門观堂,熙熙樓的掌柜王于貴愁眉苦臉地迎上來让网,“玉大人呀忧,你說我怎么就攤上這事±6茫” “怎么了而账?”我有些...
    開封第一講書人閱讀 157,285評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長因篇。 經(jīng)常有香客問我泞辐,道長,這世上最難降的妖魔是什么竞滓? 我笑而不...
    開封第一講書人閱讀 56,485評論 1 283
  • 正文 為了忘掉前任咐吼,我火速辦了婚禮,結果婚禮上商佑,老公的妹妹穿的比我還像新娘锯茄。我一直安慰自己,他們只是感情好莉御,可當我...
    茶點故事閱讀 65,581評論 6 386
  • 文/花漫 我一把揭開白布撇吞。 她就那樣靜靜地躺著俗冻,像睡著了一般礁叔。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上迄薄,一...
    開封第一講書人閱讀 49,821評論 1 290
  • 那天琅关,我揣著相機與錄音,去河邊找鬼讥蔽。 笑死涣易,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的冶伞。 我是一名探鬼主播新症,決...
    沈念sama閱讀 38,960評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼响禽!你這毒婦竟也來了徒爹?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 37,719評論 0 266
  • 序言:老撾萬榮一對情侶失蹤芋类,失蹤者是張志新(化名)和其女友劉穎隆嗅,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體侯繁,經(jīng)...
    沈念sama閱讀 44,186評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡胖喳,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,516評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了贮竟。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片丽焊。...
    茶點故事閱讀 38,650評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡较剃,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出技健,到底是詐尸還是另有隱情重付,我是刑警寧澤,帶...
    沈念sama閱讀 34,329評論 4 330
  • 正文 年R本政府宣布凫乖,位于F島的核電站确垫,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏帽芽。R本人自食惡果不足惜删掀,卻給世界環(huán)境...
    茶點故事閱讀 39,936評論 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望导街。 院中可真熱鬧披泪,春花似錦、人聲如沸搬瑰。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,757評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽遂赠。三九已至,卻和暖如春夭苗,著一層夾襖步出監(jiān)牢的瞬間翼悴,已是汗流浹背缚够。 一陣腳步聲響...
    開封第一講書人閱讀 31,991評論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留鹦赎,地道東北人谍椅。 一個月前我還...
    沈念sama閱讀 46,370評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像古话,于是被迫代替她去往敵國和親雏吭。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 43,527評論 2 349

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