數(shù)據(jù)庫常用操作整理

一唬党、數(shù)據(jù)庫SQL:

?????? 1浪默、創(chuàng)建數(shù)據(jù)庫: create database [數(shù)據(jù)庫名稱];?? 例如:create database baseservice;

???????????? 一般項(xiàng)目創(chuàng)建數(shù)據(jù)庫語句如下:

???????????? create database if not exists baseservice default charset utf8 collate utf8_general_ci;

???????????? 該語句的有兩個(gè)作用:(1) 如果數(shù)據(jù)庫不存在則創(chuàng)建蜜托,存在則不創(chuàng)建;?? (2) 創(chuàng)建RUNOOB數(shù)據(jù)庫,并設(shè)定編碼集為utf8譬嚣。

??????? 2搬男、刪除數(shù)據(jù)庫:drop database [數(shù)據(jù)庫名];???? 例如:drop database baseservice;

??????? 3、選擇數(shù)據(jù)庫:use [數(shù)據(jù)庫名]; ? ? ? ? ? ? ????????? 例如:use baseservice;

二坡垫、數(shù)據(jù)類型:

?????? MySQL支持所有標(biāo)準(zhǔn)SQL數(shù)值數(shù)據(jù)類型梭灿。

?????????????? 這些類型包括嚴(yán)格數(shù)值數(shù)據(jù)類型(INTEGER、SMALLINT冰悠、DECIMAL和NUMERIC)堡妒,以及近似數(shù)值數(shù)據(jù)類型(FLOAT、

?????? REAL和 DOUBLE PRECISION)屿脐。關(guān)鍵字INT是INTEGER的同義詞涕蚤,關(guān)鍵字DEC是DECIMAL的同義詞宪卿。BIT數(shù)據(jù)類型保存

?????? 位字段值,并且支持MyISAM万栅、MEMORY佑钾、InnoDB和BDB表。

?????? 作為SQL標(biāo)準(zhǔn)擴(kuò)展烦粒,MySQL也支持整數(shù)類型TINYINT休溶、MEDIUMINT和BIGINT。如下將顯示每個(gè)整數(shù)類型的存儲(chǔ)和范圍扰她。

數(shù)值類型
日期和時(shí)間類型
???? 字符串類型

?????????????? CHAR 和 VARCHAR 類型類似兽掰,但它們保存和檢索的方式不同。它們的最大長度和是否尾部空格被保留等方面也不同徒役。

????? ? 在存 儲(chǔ)或檢索過程中不進(jìn)行大小寫轉(zhuǎn)換孽尽。

??????????????? BINARY 和 VARBINARY 類似于 CHAR 和 VARCHAR,不同的是它們包含二進(jìn)制字符串而不要非二進(jìn)制字符串忧勿。也就

???????? 是說杉女,它們包含字節(jié)字符串而不是字符字符串。這說明它們沒有字符集鸳吸,并且排序和比較基于列值字節(jié)的數(shù)值值熏挎。

??????????????? BLOB 是一個(gè)二進(jìn)制大對象,可以容納可變數(shù)量的數(shù)據(jù)晌砾。有 4 種 BLOB 類型:TINYBLOB坎拐、BLOB、MEDIUMBLOB 和

???????? LONGBLOB养匈。它們區(qū)別在于可容納存儲(chǔ)范圍不同哼勇。

???????????????? 有 4 種 TEXT 類型:TINYTEXT、TEXT乖寒、MEDIUMTEXT 和 LONGTEXT猴蹂。對應(yīng)的這 4 種 BLOB 類型院溺,可存儲(chǔ)的最大

???????? 長度不同楣嘁,可根據(jù)實(shí)際情況選擇。

?? ? ? ? 備注:(1) 一個(gè)漢字占多少長度與編碼有關(guān): UTF-8:一個(gè)漢字=3個(gè)字節(jié) 珍逸, GBK:一個(gè)漢字=2個(gè)字節(jié)

??????????????????? (2) varchar(n) 表示 n 個(gè)字符逐虚,無論漢字和英文,Mysql 都能存入 n 個(gè)字符谆膳,僅是實(shí)際字節(jié)長度有所區(qū)別

???????????? ? ???? (3) MySQL 檢查長度叭爱,可用 SQL 語言來查看:select LENGTH(fieldname) from tablename

三、數(shù)據(jù)庫函數(shù):

????? 1漱病、日期類函數(shù):date_format(),? 函數(shù)的格式:date_format(date,format)

format 格式說明

????????????? 常用的format格式如下:

????????????? 獲取日期和時(shí)間买雾,格式:?%Y-%m-%d %T???????????? 例如:select date_format(now(),'%Y-%m-%d %T');??????????? ???? 輸出結(jié)果:2019-09-24 15:15:57

??????????????????????????????????????????????????????? %Y-%m-%d %H:%i:% ?? 例如:? select date_format(now(),'%Y-%m-%d %H:%i:%s');?? 輸出結(jié)果:2019-09-24 15:15:22

????????????? 獲取日期把曼,格式:%Y-%m-%d? ? 例如:select date_format(now(),'%Y-%m-%d');? 輸入結(jié)果:2019-09-24

????????????? 獲取時(shí)間,格式:%T? ? ? ? ? ? ? ? ? 例如:select date_format(now(),'%T');??????????????? 輸出結(jié)果:15:16:50

??????????????????????????????????????????? %H:%i:%s????? 例如:select date_format(now(),'%H:%i:%s'); ? ?? 輸出結(jié)果:15:16:50

??????? 2漓穿、格式化函數(shù):

????????????? (1)? 第一種參數(shù)格式: from_unixtime( unix_timestamp )? , 參數(shù)一般為10位的時(shí)間戳嗤军,如:1417363200,返回值:有兩種晃危,可能是類似 'YYYY-MM-DD HH:MM:SS'

???????????????????? 這樣的字符串叙赚,也有可能是類似于 YYYYMMDDHHMMSS.uuuuuu 這樣的數(shù)字,具體返回什么取決于該函數(shù)被調(diào)用的形式僚饭。

???????????????????? 例如:select from_unixtime(1417363200); ???????????????????? 輸出結(jié)果:2014-12-01 00:00:00

????????????? (2)? 第二種參數(shù)格式:from_unixtime( unix_timestamp, format ) , 參數(shù) unix_timestamp :與方法 FROM_UNIXTIME( unix_timestamp ) 中的參數(shù)含義一樣震叮;

??????????????????? 參數(shù) format : 轉(zhuǎn)換之后的時(shí)間字符串顯示的格式;?? 返回值:按照指定的時(shí)間格式顯示的字符串;

??????????????????? 例如:select from_unixtime(1417363200,'%Y-%m-%d');???? 輸出結(jié)果:2014-12-01

三鳍鸵、數(shù)據(jù)表SQL:

?????? 1苇瓣、創(chuàng)建數(shù)據(jù)表格式:create table [數(shù)據(jù)表名] ([列名] [數(shù)據(jù)類型] [可選:默認(rèn)值] [可選:字段備注]); ? ? ? ? ? ? ? // 數(shù)據(jù)表的多個(gè)字段之間使用英文逗號(hào)隔開

???????????? 例如:create table if not exists `company` (

???????????????????????????? `company_id` int(11) not null AUTO_INCREMENT comment '主鍵,自增',

???????????????????????????? `company_name` varchar(50) not null comment '企業(yè)名稱',

???????????????????????????? `company_logo` text default null comment '企業(yè)base64的logo圖',

???????????????????????????? `company_remark` varchar(255) DEFAULT NULL COMMENT '備注',

???????????????????????????? `update_time` datetime DEFAULT NULL COMMENT '更新時(shí)間',

???????????????????????????? `create_time` timestamp DEFAULT CURRENT_TIMESTAMP COMMENT '創(chuàng)建時(shí)間',

????????????????????????? ?? PRIMARY KEY (`company_id`),

???????????????????????????? KEY `company_keys` (`company_name`,`update_time`) USING BTREE

?????????????????????? ? ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COMMENT='公司表';


?????????????? 實(shí)例解析:AUTO_INCREMENT定義列為自增的屬性,一般用于主鍵偿乖,數(shù)值會(huì)自動(dòng)加1钓简。

???????????????????????????????? 如果你不想字段為NULL可以設(shè)置字段的屬性為NOT NULL,在操作數(shù)據(jù)庫時(shí)如果輸入該字段的數(shù)據(jù)為NULL汹想,就會(huì)報(bào)錯(cuò)外邓。

????????????????????????????????? PRIMARY KEY關(guān)鍵字用于定義列為主鍵。 您可以使用多列來定義主鍵古掏,列間以逗號(hào)分隔损话。

????????????????????????????????? ENGINE 設(shè)置存儲(chǔ)引擎,CHARSET 設(shè)置編碼槽唾。

?????????????? 備注:創(chuàng)建 數(shù)據(jù)表時(shí)丧枪,表名和字段名的符號(hào)`不是單引號(hào),而是英文輸入法狀態(tài)下的反單引號(hào)庞萍,也就是鍵盤左上角esc按鍵下面的那一個(gè)~按鍵拧烦。

????????????????????????? 反引號(hào)是為了區(qū)分 MySql 關(guān)鍵字與普通字符而引入的符號(hào),一般的钝计,表名與字段名都使用反引號(hào)恋博。

??????? 2、刪除數(shù)據(jù)表格式:drop table [數(shù)據(jù)表名];???? 例如:drop table company;

??????? 3私恬、插入數(shù)據(jù)格式:當(dāng)插入所有列值時(shí)债沮,格式:insert into value ([列值], [列值],...[列值]);

????????????????????????????????????? 當(dāng)插入非所有列值時(shí),格式:insert into [數(shù)據(jù)表名] ([列名], [列名],...[列名]) value ([列值], [列值],...[列值]);

?????????????????????????????????????? 當(dāng)插入多條記錄值時(shí)本鸣,格式:insert into [數(shù)據(jù)表名] ([列名], [列名],...[列名]) values ([列值], [列值],...[列值]);

???????????? 例如:insert into company value ('1','創(chuàng)新公司','', '虛擬公司',now(),now());

??????????????????????? insert into company (`company_name`, `company_remark`,`create_time`) value ('創(chuàng)新公司', '虛擬公司',now());

?????????????????????? insert into company (`company_name`, `company_remark`,`create_time`) values ('創(chuàng)新公司', '虛擬公司',now());

??????????????????????? insert into company (`company_name`, `company_remark`,`create_time`) values ('創(chuàng)新公司', '虛擬公司',now()),('奮進(jìn)公司', '虛擬公司',now());

??????? 4疫衩、更新數(shù)據(jù)格式:update [數(shù)據(jù)表名] set [列名] = [新列值], [列名] = [新列值] [可選項(xiàng): where [列值] = [查詢值]]

????????????? 例如:update `company` set `company_id` = '測試公司', `company_remark` = '測試備注' where `company_id` = 1

??????? 5、刪除數(shù)據(jù)格式:delete from [數(shù)據(jù)表名] [可選項(xiàng): where [條件]]

???????????? 例如:delete from company where company_id = 1;

??????? 6荣德、修改表名或增刪改字段名

???????????? 刪除字段:alter table [數(shù)據(jù)表名] drop [字段名];???

??????????????????????????? 例如:

???????????? 添加字段: alter table [數(shù)據(jù)表名] add [字段名] [數(shù)據(jù)類型] [可選項(xiàng): first / after [字段名]];

??????????????????????????? 例如:

??????????? 備注:first和after關(guān)鍵字可用于add的語句中闷煤,first標(biāo)識(shí)在第一個(gè)位置添加字段童芹,after標(biāo)識(shí)在末尾添加字段(缺省默認(rèn)在末尾添加字段)。

???????????????????? 如果想重置數(shù)據(jù)表字段的位置就需要先使用 drop 刪除字段然后使用 add 來添加字段并設(shè)置位置鲤拿。


??????? 7辐脖、查詢語句格式:select [列名],[列名],...[列名]

????????????????????????????????????? from [數(shù)據(jù)表名]

????????????????????????????????????? [可選項(xiàng):where [條件]]

????????????????????????????????????? [可選項(xiàng):limit n [offset m]]

???????????? 例如:select company_id,company_name,company_logo,company_remark

??????????????????????? from company

??????????????????????? where company_id = 2

??????????????????????? limit 0,1

??????? 7、模糊查詢皆愉,常用 like 關(guān)鍵字和where 匹配使用嗜价,并且通配符如下:

????????????? (1) % : 表示任意 0 個(gè)或多個(gè)字符∧宦可匹配任意類型和長度的字符久锥,有些情況下若是中文,請使用兩個(gè)百分號(hào)(%%)表示异剥。

????????????? (2) _? : 表示任意單個(gè)字符瑟由。匹配單個(gè)任意字符,它常用來限制表達(dá)式的字符長度語句冤寿。

????????????? (3) [] : 表示括號(hào)內(nèi)所列字符中的一個(gè)(類似正則表達(dá)式)歹苦。指定一個(gè)字符、字符串或范圍督怜,要求所匹配對象為它們中的任一個(gè)

????????????? (4) [^] : 表示不在括號(hào)所列之內(nèi)的單個(gè)字符殴瘦。其取值和 [] 相同,但它要求所匹配對象為指定字符以外的任一個(gè)字符号杠。

????????????? 備注:查詢內(nèi)容包含通配符時(shí),由于通配符的緣故蚪腋,導(dǎo)致我們查詢特殊字符 “%”、“_”姨蟋、“[” 的語句無法正常實(shí)現(xiàn)屉凯,而把特殊字符用 “[ ]” 括起便可正常查詢。

??????? 8眼溶、聯(lián)合:union 悠砚,語法如下:

????????????? select [列名], [列名], [列名] ....? [列名]? from [表名]? where [條件]

????????????? union [ all | distinct ]

????????????? select [列名], [列名], [列名] ....? [列名]? from [表名]? where [條件]

??????????? 備注:distinct 是可選的,刪除結(jié)果集中重復(fù)的數(shù)據(jù)堂飞。默認(rèn)情況下 UNION 操作符已經(jīng)刪除了重復(fù)數(shù)據(jù)灌旧,所以 DISTINCT 修飾符對結(jié)果沒啥影響

?????????????????????? all 是可選的酝静,返回所有結(jié)果集节榜,包含重復(fù)數(shù)據(jù)。

??????? 9别智、 排序:order by,語法如下:

????????????? select [列名], [列名],... [列名]

????????????? from [表名]

?????????????? order by [列名] [asc(默認(rèn))/desc], [列名] [asc(默認(rèn))/desc]

????????????? 備注:任何字段來作為排序的條件稼稿,從而得到回排序后結(jié)果薄榛。你可以設(shè)定多個(gè)字段來排序讳窟。

???????????????????????? 可以使用 ASC 或 DESC 關(guān)鍵字來設(shè)置查詢結(jié)果是按升序或降序排列。 默認(rèn)情況下敞恋,它是按升序排列丽啡。可以添加 WHERE...LIKE 子句來設(shè)置條件硬猫。

?????? 10补箍、分組: group by,語法如下:

?????????????? select [列名], [列名],... [列名]

?????????????? from [表名]

?????????????? where [條件]

?????????????? group by [列名] ;

?????????????? 備注:group by 可以根據(jù)一個(gè)或多個(gè)列對結(jié)果集進(jìn)行分組啸蜜。在分組的列上我們可以使用 count, sum, avg等函數(shù)坑雅。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市衬横,隨后出現(xiàn)的幾起案子裹粤,更是在濱河造成了極大的恐慌,老刑警劉巖蜂林,帶你破解...
    沈念sama閱讀 218,122評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件遥诉,死亡現(xiàn)場離奇詭異,居然都是意外死亡噪叙,警方通過查閱死者的電腦和手機(jī)矮锈,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,070評論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來睁蕾,“玉大人愕难,你說我怎么就攤上這事”拱裕” “怎么了猫缭?”我有些...
    開封第一講書人閱讀 164,491評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長壹店。 經(jīng)常有香客問我猜丹,道長,這世上最難降的妖魔是什么硅卢? 我笑而不...
    開封第一講書人閱讀 58,636評論 1 293
  • 正文 為了忘掉前任射窒,我火速辦了婚禮,結(jié)果婚禮上将塑,老公的妹妹穿的比我還像新娘脉顿。我一直安慰自己,他們只是感情好点寥,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,676評論 6 392
  • 文/花漫 我一把揭開白布艾疟。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪蔽莱。 梳的紋絲不亂的頭發(fā)上弟疆,一...
    開封第一講書人閱讀 51,541評論 1 305
  • 那天,我揣著相機(jī)與錄音盗冷,去河邊找鬼怠苔。 笑死,一個(gè)胖子當(dāng)著我的面吹牛仪糖,可吹牛的內(nèi)容都是我干的柑司。 我是一名探鬼主播,決...
    沈念sama閱讀 40,292評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼锅劝,長吁一口氣:“原來是場噩夢啊……” “哼攒驰!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起鸠天,我...
    開封第一講書人閱讀 39,211評論 0 276
  • 序言:老撾萬榮一對情侶失蹤讼育,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后稠集,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體奶段,經(jīng)...
    沈念sama閱讀 45,655評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,846評論 3 336
  • 正文 我和宋清朗相戀三年剥纷,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了痹籍。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,965評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡晦鞋,死狀恐怖蹲缠,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情悠垛,我是刑警寧澤线定,帶...
    沈念sama閱讀 35,684評論 5 347
  • 正文 年R本政府宣布,位于F島的核電站确买,受9級(jí)特大地震影響斤讥,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜湾趾,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,295評論 3 329
  • 文/蒙蒙 一芭商、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧搀缠,春花似錦铛楣、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,894評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽鉴竭。三九已至,卻和暖如春勿侯,著一層夾襖步出監(jiān)牢的瞬間拓瞪,已是汗流浹背缴罗。 一陣腳步聲響...
    開封第一講書人閱讀 33,012評論 1 269
  • 我被黑心中介騙來泰國打工助琐, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人面氓。 一個(gè)月前我還...
    沈念sama閱讀 48,126評論 3 370
  • 正文 我出身青樓兵钮,卻偏偏與公主長得像,于是被迫代替她去往敵國和親舌界。 傳聞我的和親對象是個(gè)殘疾皇子掘譬,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,914評論 2 355