MySQL之SQL入門(一)

SQL語言入門(一)

前言

各種版本的數(shù)據(jù)庫中,有一種通用的語言用于管理數(shù)據(jù)庫中的數(shù)據(jù)饼灿,它就是SQL其掂,本章我們將學(xué)習(xí)基本的SQL語句惜互。

SQL的概述

Structured Query Language 結(jié)構(gòu)化查詢語言蹋订,是一種特殊目的的編程語言率挣,是一種數(shù)據(jù)庫查詢和程序設(shè)計語言,用于存取數(shù)據(jù)以及查詢露戒、更新和管理關(guān)系數(shù)據(jù)庫系統(tǒng)。

各種主流的數(shù)據(jù)庫系統(tǒng)都對SQL規(guī)范作了某些編改和擴(kuò)充捶箱。所以智什,實(shí)際上不同數(shù)據(jù)庫系統(tǒng)之間的SQL不能完全相互通用,但大部分是相同的丁屎,后面我們學(xué)習(xí)的是MySQL的版本荠锭,掌握SQL主要語法之后,要遷移到其它數(shù)據(jù)庫也是比較容易的晨川。

結(jié)構(gòu)化查詢語言包含6個部分:

一:數(shù)據(jù)查詢語言(DQL:Data Query Language):

其語句证九,也稱為“數(shù)據(jù)檢索語句”删豺,用以從表中獲得數(shù)據(jù),確定數(shù)據(jù)怎樣在應(yīng)用程序給出愧怜。保留字SELECT是DQL(也是所有SQL)用得最多的動詞呀页,其他DQL常用的保留字有WHERE,ORDER BY拥坛,GROUP BY和HAVING蓬蝶。這些DQL保留字常與其他類型的SQL語句一起使用。

二:數(shù)據(jù)操作語言(DML:Data Manipulation Language):

其語句包括動詞INSERT猜惋,UPDATE和DELETE丸氛。它們分別用于添加,修改和刪除表中的行著摔。也稱為動作查詢語言缓窜。

三:事務(wù)處理語言(TPL):

它的語句能確保被DML語句影響的表的所有行及時得以更新。TPL語句包括BEGIN TRANSACTION谍咆,COMMIT和ROLLBACK雹洗。

四:數(shù)據(jù)控制語言(DCL):

它的語句通過GRANT或REVOKE獲得許可,確定單個用戶和用戶組對數(shù)據(jù)庫對象的訪問卧波。某些RDBMS可用GRANT或REVOKE控制對表單個列的訪問时肿。

五:數(shù)據(jù)定義語言(DDL):

其語句包括動詞CREATE和DROP。在數(shù)據(jù)庫中創(chuàng)建新表或刪除表(CREAT TABLE 或 DROP TABLE)港粱;為表加入索引等螃成。DDL包括許多與人數(shù)據(jù)庫目錄中獲得數(shù)據(jù)有關(guān)的保留字。它也是動作查詢的一部分查坪。

六:指針控制語言(CCL):

它的語句寸宏,像DECLARE CURSOR,F(xiàn)ETCH INTO和UPDATE WHERE CURRENT用于對一個或多個表單獨(dú)行的操作偿曙。

本章我們主要介紹的是DDL和DML氮凝。

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

創(chuàng)建數(shù)據(jù)庫的基本語法是:

create database 數(shù)據(jù)庫名;

還可以給數(shù)據(jù)庫指定默認(rèn)的字符集以及排序規(guī)則:

create database 數(shù)據(jù)庫名

default character set 字符集 collate 排序規(guī)則;

選擇數(shù)據(jù)庫

use 數(shù)據(jù)庫名;

修改數(shù)據(jù)庫的字符集和排序規(guī)則:

alter database 數(shù)據(jù)庫名

default character set 字符集 collate 排序規(guī)則;

刪除數(shù)據(jù)庫:

drop database 數(shù)據(jù)庫名;

刪除時檢查數(shù)據(jù)庫是否存在:

drop database if exists 數(shù)據(jù)庫名;

代碼示例:

-- 刪除數(shù)據(jù)庫

drop database if exists java1903;

-- 創(chuàng)建數(shù)據(jù)庫

create database java1903

default character set utf8mb4

collate utf8mb4_general_ci;

-- 使用數(shù)據(jù)庫

use java1903;

MySQL常見的數(shù)據(jù)類型

創(chuàng)建好數(shù)據(jù)庫后,我們就需要建表望忆,建表我們需要設(shè)置字段的數(shù)據(jù)類型罩阵,我們先來了解MySQL中常見的數(shù)據(jù)類型。

1) 整數(shù)類型

類型名稱說明存儲需求

TINYINT很小的整數(shù)1個字節(jié)

SMALLINT小的整數(shù)2個宇節(jié)

MEDIUMINT中等大小的整數(shù)3個字節(jié)

INT (INTEGHR)普通大小的整數(shù)4個字節(jié)

BIGINT大整數(shù)8個字節(jié)

2)小數(shù)類型

類型名稱說明存儲需求

FLOAT單精度浮點(diǎn)數(shù)4 個字節(jié)

DOUBLE雙精度浮點(diǎn)數(shù)8 個字節(jié)

DECIMAL (M, D)启摄,DEC壓縮的“嚴(yán)格”定點(diǎn)數(shù)M+2 個字節(jié)

3) 日期/時間類型

類型名稱日期格式日期范圍存儲需求

YEARYYYY1901 ~ 21551 個字節(jié)

TIMEHH:MM:SS-838:59:59 ~ 838:59:593 個字節(jié)

DATEYYYY-MM-DD1000-01-01 ~ 9999-12-33 個字節(jié)

DATETIMEYYYY-MM-DD HH:MM:SS1000-01-01 00:00:00 ~ 9999-12-31 23:59:598 個字節(jié)

TIMESTAMPYYYY-MM-DD HH:MM:SS1980-01-01 00:00:01 UTC ~ 2040-01-19 03:14:07 UTC4 個字節(jié)

3) 字符串類型

類型名稱說明存儲需求

CHAR(M)固定長度非二進(jìn)制字符串M 字節(jié)稿壁,1<=M<=255

VARCHAR(M)變長非二進(jìn)制字符串L+1字節(jié),在此歉备,L< = M和 1<=M<=255

TINYTEXT非常小的非二進(jìn)制字符串L+1字節(jié)傅是,在此,L<2^8

TEXT小的非二進(jìn)制字符串L+2字節(jié),在此喧笔,L<2^16

MEDIUMTEXT中等大小的非二進(jìn)制字符串L+3字節(jié)帽驯,在此,L<2^24

LONGTEXT大的非二進(jìn)制字符串L+4字節(jié)书闸,在此尼变,L<2^32

ENUM枚舉類型,只能有一個枚舉字符串值1或2個字節(jié)梗劫,取決于枚舉值的數(shù)目 (最大值為65535)

SET一個設(shè)置享甸,字符串對象可以有零個或 多個SET成員1、2梳侨、3蛉威、4或8個字節(jié),取決于集合 成員的數(shù)量(最多64個成員)

4) 二進(jìn)制類型

類型名稱說明存儲需求

BIT(M)位字段類型大約 (M+7)/8 字節(jié)

BINARY(M)固定長度二進(jìn)制字符串M 字節(jié)

VARBINARY (M)可變長度二進(jìn)制字符串M+1 字節(jié)

TINYBLOB (M)非常小的BLOBL+1 字節(jié)走哺,在此蚯嫌,L<2^8

BLOB (M)小 BLOBL+2 字節(jié),在此丙躏,L<2^16

MEDIUMBLOB (M)中等大小的BLOBL+3 字節(jié)择示,在此,L<2^24

LONGBLOB (M)非常大的BLOBL+4 字節(jié)晒旅,在此栅盲,L<2^32

表的操作

創(chuàng)建表:

create table 表名

(

字段名 數(shù)據(jù)類型 [約束],

字段名 數(shù)據(jù)類型 [約束],

....

)

主要的約束類型有:

primary key主鍵,表中只能有一個废恋,不能重復(fù)谈秫,不能為空

not null 非空,必須填寫

unique唯一鱼鼓,不能重復(fù)

auto_increment自動增長拟烫,必須是整數(shù)類型,不需要手動插入

foreign key外鍵迄本,建立表之間的引用關(guān)系

刪除表:

drop table 表名;

刪除表時進(jìn)行檢查:

drop table if exists 表名;

修改表硕淑,添加字段:

alter table 表名 add column 字段名 數(shù)據(jù)類型;

修改表,刪除字段:

alter table 表名 drop column 字段名;

查看表結(jié)構(gòu):

desc 表名;

代碼示例:

-- 刪除表

drop table if exists tb_student;

-- 創(chuàng)建學(xué)生表

create table tb_student

(

stu_id int primary key auto_increment,

stu_name varchar(20) not null,

stu_age int not null,

stu_gender varchar(1) not null,

stu_address varchar(200)

);

數(shù)據(jù)操作語言DML

數(shù)據(jù)操作語言有插入嘉赎、刪除和更新語句組成置媳。

單行插入:

insert into 表名(字段名,字段名,字段名..) values(值,值,值..);

多行插入

insert into 表名(字段名,字段名,字段名..)

values(值,值,值..),(值,值,值..),(值,值,值..);

將一張表數(shù)據(jù)插入另一張表

insert into 表1(字段名,字段名,字段名..)

select 字段名,字段名,字段名 from 表2;

刪除所有數(shù)據(jù)

delete from 表名;

清空表

truncate table 表名;

帶條件的刪除

delete from 表名 [where 條件];

更新

update 表名 set 字段 = 值,字段 = 值... [where 條件];

代碼示例:

-- 插入一行學(xué)生記錄

insert into tb_student(stu_name,stu_age,stu_gender,stu_address)

values('趙六',30,'男','上海');

-- 插入多行學(xué)生

insert into tb_student(stu_name,stu_age,stu_gender,stu_address)

values('陳七',20,'男','武漢'),('陳大七',28,'男','上海'),('陳小七',18,'男','北京');

-- 刪除學(xué)號為3的學(xué)生

delete from tb_student where stu_id = 3;

-- 全部刪除

delete from tb_student;

-- 清空表

truncate table tb_student;

-- 更新陳七的年齡為23,性別為女

update tb_student set stu_age = 23,stu_gender = '女'

where stu_name = '陳七';

總結(jié)

本章我們學(xué)習(xí)了SQL語言中的DDL和DML曹阔,能實(shí)現(xiàn)建表建表和數(shù)據(jù)的增刪改操作半开,還有一個重要的查詢操作,也就是DQL赃份,會在下章介紹。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市抓韩,隨后出現(xiàn)的幾起案子纠永,更是在濱河造成了極大的恐慌,老刑警劉巖谒拴,帶你破解...
    沈念sama閱讀 219,589評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件尝江,死亡現(xiàn)場離奇詭異,居然都是意外死亡英上,警方通過查閱死者的電腦和手機(jī)炭序,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,615評論 3 396
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來苍日,“玉大人惭聂,你說我怎么就攤上這事∠嗍眩” “怎么了辜纲?”我有些...
    開封第一講書人閱讀 165,933評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長拦耐。 經(jīng)常有香客問我耕腾,道長,這世上最難降的妖魔是什么杀糯? 我笑而不...
    開封第一講書人閱讀 58,976評論 1 295
  • 正文 為了忘掉前任扫俺,我火速辦了婚禮,結(jié)果婚禮上固翰,老公的妹妹穿的比我還像新娘狼纬。我一直安慰自己,他們只是感情好倦挂,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,999評論 6 393
  • 文/花漫 我一把揭開白布畸颅。 她就那樣靜靜地躺著,像睡著了一般方援。 火紅的嫁衣襯著肌膚如雪没炒。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,775評論 1 307
  • 那天犯戏,我揣著相機(jī)與錄音送火,去河邊找鬼。 笑死先匪,一個胖子當(dāng)著我的面吹牛种吸,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播呀非,決...
    沈念sama閱讀 40,474評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼坚俗,長吁一口氣:“原來是場噩夢啊……” “哼镜盯!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起猖败,我...
    開封第一講書人閱讀 39,359評論 0 276
  • 序言:老撾萬榮一對情侶失蹤速缆,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后恩闻,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體艺糜,經(jīng)...
    沈念sama閱讀 45,854評論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,007評論 3 338
  • 正文 我和宋清朗相戀三年幢尚,在試婚紗的時候發(fā)現(xiàn)自己被綠了破停。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,146評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡尉剩,死狀恐怖真慢,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情边涕,我是刑警寧澤晤碘,帶...
    沈念sama閱讀 35,826評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站功蜓,受9級特大地震影響园爷,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜式撼,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,484評論 3 331
  • 文/蒙蒙 一童社、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧著隆,春花似錦扰楼、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,029評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至浦辨,卻和暖如春蹬竖,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背流酬。 一陣腳步聲響...
    開封第一講書人閱讀 33,153評論 1 272
  • 我被黑心中介騙來泰國打工币厕, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人芽腾。 一個月前我還...
    沈念sama閱讀 48,420評論 3 373
  • 正文 我出身青樓旦装,卻偏偏與公主長得像,于是被迫代替她去往敵國和親摊滔。 傳聞我的和親對象是個殘疾皇子阴绢,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,107評論 2 356

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

  • 手動不易店乐,轉(zhuǎn)發(fā)請注明出處 --Trance 數(shù)據(jù)庫系統(tǒng)命令: (1).查看存儲過程狀態(tài):show pro...
    Trance_b54c閱讀 1,665評論 0 8
  • ORA-00001: 違反唯一約束條件 (.) 錯誤說明:當(dāng)在唯一索引所對應(yīng)的列上鍵入重復(fù)值時,會觸發(fā)此異常旱函。 O...
    我想起個好名字閱讀 5,323評論 0 9
  • MySQL數(shù)據(jù)庫 非關(guān)系型數(shù)據(jù)庫的優(yōu)勢: 性能NOSQL是基于鍵值對的响巢,可以想象成表中的主鍵和值的對應(yīng)關(guān)系描滔,而且不...
    riverstation閱讀 873評論 0 0
  • 一棒妨,枚舉的定義,結(jié)果和使用 枚舉定義了一個通用類型的一組相關(guān)的值含长,使我們可以在自己的代碼中以一個安全的方式來使用這...
    順揚(yáng)sky閱讀 136評論 0 1
  • 中醫(yī)認(rèn)為:蜂蜜搭配著喝會更好券腔,不僅美容養(yǎng)顏,還能排毒防病拘泞。以下10種搭配纷纫,是醫(yī)生經(jīng)常喝的,你也可以試試陪腌! 蜂蜜+枸...
    桂玉林閱讀 224評論 0 0