最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

面試官問“你的SQL能力怎么樣?”時應(yīng)該如何回答?

2023-06-29 16:40 作者:下班被游戲打-  | 我要投稿

第一章 SQL的介紹

1.1、什么是sql

  • SQL:Structure Query Language。(結(jié)構(gòu)化查詢語言),通過sql操作數(shù)據(jù)庫(操作數(shù)據(jù)庫,操作表,操作數(shù)據(jù))

  • SQL被美國國家標(biāo)準(zhǔn)局(ANSI)確定為關(guān)系型數(shù)據(jù)庫語言的美國標(biāo)準(zhǔn),后來被國際化標(biāo)準(zhǔn)組織(ISO)采納為關(guān)系數(shù)據(jù)庫語言的國際標(biāo)準(zhǔn)

  • 各數(shù)據(jù)庫廠商(MySql,oracle,sql server)都支持ISO的SQL標(biāo)準(zhǔn)。

  • 各數(shù)據(jù)庫廠商在標(biāo)準(zhǔn)的基礎(chǔ)上做了自己的擴(kuò)展。各個數(shù)據(jù)庫自己特定的語法

1.2、sql的分類

  • Data Definition Language (DDL數(shù)據(jù)定義語言) 如:操作數(shù)據(jù)庫,操作表

  • Data Manipulation Language(DML數(shù)據(jù)操縱語言),如:對表中的記錄操作增刪改

  • Data Query Language(DQL 數(shù)據(jù)查詢語言),如:對表中數(shù)據(jù)的查詢操作

  • Data Control Language(DCL 數(shù)據(jù)控制語言),如:對用戶權(quán)限的設(shè)置

1.3、MySQL的語法規(guī)范和要求

(1)mysql的sql語法不區(qū)分大小寫

MySQL的關(guān)鍵字和函數(shù)名等不區(qū)分大小寫,但是對于數(shù)據(jù)值是否區(qū)分大小寫,和字符集與校對規(guī)則有關(guān)。

ci(大小寫不敏感),cs(大小寫敏感),_bin(二元,即比較是基于字符編碼的值而與language無關(guān),區(qū)分大小寫)

(2)命名時:盡量使用26個英文字母大小寫,數(shù)字0-9,下劃線,不要使用其他符號user_id

(3)建議不要使用mysql的關(guān)鍵字等來作為表名、字段名等,如果不小心使用,請?jiān)赟QL語句中使用`(飄號)引起來

(4)數(shù)據(jù)庫和表名、字段名等對象名中間不要包含空格

(5)同一個mysql軟件中,數(shù)據(jù)庫不能同名,同一個庫中,表不能重名,同一個表中,字段不能重名

(6)標(biāo)點(diǎn)符號:

  • 必須成對

  • 必須英文狀態(tài)下半角輸入方式

  • 字符串和日期類型可以使用單引號’’

  • 列的別名可以使用雙引號"",給表名取別名不要使用雙引號。取別名時as可以省略

  • 如果列的別名沒有包含空格,可以省略雙引號,如果有空格雙引號不能省略。

(7)SQL腳本中如何加注釋

  • 單行注釋:#注釋內(nèi)容

  • 單行注釋:–空格注釋內(nèi)容 其中–后面的空格必須有

  • 多行注釋:/* 注釋內(nèi)容 */

第二章-DDL操作數(shù)據(jù)庫

2.1、創(chuàng)建數(shù)據(jù)庫(掌握)

  • 語法

create database 數(shù)據(jù)庫名 [character set 字符集][collate ?校對規(guī)則] ? ? 注: []意思是可選的意思


字符集(charset):是一套符號和編碼。

  • 練習(xí)

創(chuàng)建一個day01的數(shù)據(jù)庫(默認(rèn)字符集)

create database day01;

創(chuàng)建一個day01_2的數(shù)據(jù)庫,指定字符集為gbk(了解)

create database day01_2 character set gbk;

2.2、查看所有的數(shù)據(jù)庫

  • 查看所有的數(shù)據(jù)庫

語法

show databases;

  • 查看數(shù)據(jù)庫的定義結(jié)構(gòu)【了解】

語法

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

查看day01這個數(shù)據(jù)庫的定義

show create database day01;

2.3、刪除數(shù)據(jù)庫

語法

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

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

drop database day01_2;

2.4、修改數(shù)據(jù)庫【了解】

語法

alter database 數(shù)據(jù)庫名 character set 字符集;

修改day01這個數(shù)據(jù)庫的字符集(gbk)

alter database day01 character set gbk;

注意:

  • 是utf8,不是utf-8

  • 不是修改數(shù)據(jù)庫名

2.5、其他操作

切換數(shù)據(jù)庫, 選定哪一個數(shù)據(jù)庫

use 數(shù)據(jù)庫名; ? ? //注意: 在創(chuàng)建表之前一定要指定數(shù)據(jù)庫. use 數(shù)據(jù)庫名

練習(xí): 使用day01

use day01;

查看正在使用的數(shù)據(jù)庫

select database();

第三章-DDL操作表

3.1、創(chuàng)建表

  • 語法

create table 表名( 列名 類型 [約束], 列名 類型 [約束] ... ? );

  • 類型

數(shù)值類型

整型系列:xxxInt

  • int(M),必須和unsigned zerofill一起使用才有意義

  • double(M,D):表示最長為M位,其中小數(shù)點(diǎn)后D位

例如:double(5,2)表示的數(shù)據(jù)范圍[-999.99,999.99],如果超過這個范圍會報錯。

定點(diǎn)型系列:decimal(底層實(shí)際上是使用字符串進(jìn)行存儲)

  • decimal(M,D):表示最長為M位,其中小數(shù)點(diǎn)后D位

位類型:bit

  • 字節(jié)范圍是:1-8,值范圍是:bit(1)~bit(64),默認(rèn)bit(1)

用來存儲二進(jìn)制數(shù)。對于位字段,直接使用select命令將不會看到結(jié)果??梢允褂胋it()或hex()函數(shù)進(jìn)行讀取。插入bit類型字段時,使用bit()函數(shù)轉(zhuǎn)為二進(jìn)制值再插入,因?yàn)槎M(jìn)制碼是“01”。常見 SQL 面試題:經(jīng)典 50 例

日期時間類型

日期時間類型:year, date, datetime, timestamp

注意一下每一種日期時間的表示范圍

timestamp和datetime的區(qū)別:

  • timestamp范圍比較小

  • timestamp和時區(qū)有關(guān)

    • show variables like ‘time_zone’;

    • set time_zone = ‘+8:00’;

  • timestamp受MySQL版本和服務(wù)器的SQLMode影響很大

  • 表中的第一個非空的timestamp字段如果插入和更新為NULL則會自動設(shè)置為系統(tǒng)時間

字符串類型

MySQL中提供了多種對字符數(shù)據(jù)的存儲類型,不同的版本可能有所差異。常見的有:

char,varchar,xxtext,binary,varbinary,xxblob,enum,set等等

  • 字符串類型char,varchar(M)

    • char如果沒有指定寬度,默認(rèn)為1個字符

    • varchar(M),必須指定寬度

binary和varbinary類似于char和varchar,不同的是它們包含二進(jìn)制字符串,不支持模糊查詢之類的。

一般在保存少量字符串的時候,我們會選擇char和varchar;而在保存較大文本時,通常會選擇使用text或blob系列。blob和text值會引起一些性能問題,特別是在執(zhí)行了大量的刪除操作時,會在數(shù)據(jù)表中留下很大的“空洞”,為了提高性能,建議定期時候用optimize table功能對這類表進(jìn)行碎片整理??梢允褂煤铣傻?Synthetic)索引來提高大文本字段的查詢性能,如果需要對大文本字段進(jìn)行模糊查詢,MySql提供了前綴索引。但是仍然要在不必要的時候避免檢索大型的blob或text值。

enum枚舉類型,它的值范圍需要在創(chuàng)建表時通過枚舉方式顯式指定,對于1~255個成員的枚舉需要1個字節(jié)存儲;對于【 255`65535】個成員需要2個字節(jié)存儲。例如:gender enum(‘男’,‘女’)。如果插入枚舉值以外的值,會按第一個值處理。一次只能從枚舉值中選擇一個。

set集合類型,可以包含0~64個成員。一次可以從集合中選擇多個成員。如果選擇了1-8個成員的集合,占1個字節(jié),依次占2個,3個。。8個字節(jié)。例如:hoppy set(‘吃飯’,‘睡覺’,‘玩游戲’,‘旅游’),選擇時’吃飯,睡覺’或’睡覺,玩游戲,旅游’

示例

約束

  • 即規(guī)則,規(guī)矩 限制;

  • 作用:保證用戶插入的數(shù)據(jù)保存到數(shù)據(jù)庫中是符合規(guī)范的

約束種類:

  • not null: 非空 ; eg: username varchar(40) not null username這個列不能有null值

  • unique:唯一約束, 后面的數(shù)據(jù)不能和前面重復(fù); eg: cardNo char(18) unique; cardNo 列里面不可以有重復(fù)數(shù)據(jù)

  • primary key;主鍵約束(非空+唯一); 一般用在表的id列上面. 一張表基本上都有id列的, id列作為唯一標(biāo)識的

    • auto_increment: 自動增長,必須是設(shè)置了primary key之后,才可以使用auto_increment

  • id int primary key auto_increment; id不需要我們自己維護(hù)了, 插入數(shù)據(jù)的時候直接插入null, 自動的增長進(jìn)行填充進(jìn)去, 避免重復(fù)了.

注意:

  • 先設(shè)置了primary key 再能設(shè)置auto_increment

  • 只有當(dāng)設(shè)置了auto_increment 才可以插入null , 否則插入null會報錯

id列:

  • 給id設(shè)置為int類型, 添加主鍵約束, 自動增長

  • 或者給id設(shè)置為字符串類型,添加主鍵約束, 不能設(shè)置自動增長


面試官問“你的SQL能力怎么樣?”時應(yīng)該如何回答?的評論 (共 條)

分享到微博請遵守國家法律
辽源市| 浮梁县| 沐川县| 句容市| 舒兰市| 康平县| 浙江省| 玉屏| 息烽县| 孝感市| 宁国市| 库伦旗| 延吉市| 连云港市| 四会市| 闵行区| 庆阳市| 济阳县| 昌黎县| 平安县| 丰城市| 汾阳市| 普洱| 修水县| 汉中市| 将乐县| 城固县| 班玛县| 东至县| 溧阳市| 遵义市| 黎平县| 吕梁市| 永年县| 红原县| 丰宁| 永嘉县| 阿拉善盟| 乌苏市| 密云县| 南岸区|