中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當前位置: 首頁 > news >正文

百度建設(shè)網(wǎng)站寧波seo優(yōu)化定制

百度建設(shè)網(wǎng)站,寧波seo優(yōu)化定制,如何做網(wǎng)站評估分析,全棧網(wǎng)站開發(fā)者第03章_基本的SELECT語句 講師:尚硅谷-宋紅康(江湖人稱:康師傅) 官網(wǎng):http://www.atguigu.com 1. SQL概述 1.1 SQL背景知識 1946 年,世界上第一臺電腦誕生,如今,借由這臺電腦發(fā)展…

第03章_基本的SELECT語句

講師:尚硅谷-宋紅康(江湖人稱:康師傅)

官網(wǎng):http://www.atguigu.com


1. SQL概述

1.1 SQL背景知識

  • 1946 年,世界上第一臺電腦誕生,如今,借由這臺電腦發(fā)展起來的互聯(lián)網(wǎng)已經(jīng)自成江湖。在這幾十年里,無數(shù)的技術(shù)、產(chǎn)業(yè)在這片江湖里沉浮,有的方興未艾,有的已經(jīng)幾幕興衰。但在這片浩蕩的波動里,有一門技術(shù)從未消失,甚至“老當益壯”,那就是 SQL。

    • 45 年前,也就是 1974 年,IBM 研究員發(fā)布了一篇揭開數(shù)據(jù)庫技術(shù)的論文《SEQUEL:一門結(jié)構(gòu)化的英語查詢語言》,直到今天這門結(jié)構(gòu)化的查詢語言并沒有太大的變化,相比于其他語言,SQL 的半衰期可以說是非常長了。
  • 不論是前端工程師,還是后端算法工程師,都一定會和數(shù)據(jù)打交道,都需要了解如何又快又準確地提取自己想要的數(shù)據(jù)。更別提數(shù)據(jù)分析師了,他們的工作就是和數(shù)據(jù)打交道,整理不同的報告,以便指導(dǎo)業(yè)務(wù)決策。

  • SQL(Structured Query Language,結(jié)構(gòu)化查詢語言)是使用關(guān)系模型的數(shù)據(jù)庫應(yīng)用語言,與數(shù)據(jù)直接打交道,由IBM上世紀70年代開發(fā)出來。后由美國國家標準局(ANSI)開始著手制定SQL標準,先后有SQL-86SQL-89SQL-92SQL-99等標準。

    • SQL 有兩個重要的標準,分別是 SQL92 和 SQL99,它們分別代表了 92 年和 99 年頒布的 SQL 標準,我們今天使用的 SQL 語言依然遵循這些標準。
  • 不同的數(shù)據(jù)庫生產(chǎn)廠商都支持SQL語句,但都有特有內(nèi)容。

image-20230212185727980

1.2 SQL語言排行榜

自從 SQL 加入了 TIOBE 編程語言排行榜,就一直保持在 Top 10。

image-20230212185735692

1.3 SQL分類

SQL語言在功能上主要分為如下3大類:

  • DDL(Data Definition Languages、數(shù)據(jù)定義語言),這些語句定義了不同的數(shù)據(jù)庫、表、視圖、索引等數(shù)據(jù)庫對象,還可以用來創(chuàng)建、刪除、修改數(shù)據(jù)庫和數(shù)據(jù)表的結(jié)構(gòu)。

    • 主要的語句關(guān)鍵字包括CREATEDROP、ALTER等。
  • DML(Data Manipulation Language、數(shù)據(jù)操作語言),用于添加、刪除、更新和查詢數(shù)據(jù)庫記錄,并檢查數(shù)據(jù)完整性。

    • 主要的語句關(guān)鍵字包括INSERT、DELETEUPDATE、SELECT等。
    • SELECT是SQL語言的基礎(chǔ),最為重要。
  • DCL(Data Control Language、數(shù)據(jù)控制語言),用于定義數(shù)據(jù)庫、表、字段、用戶的訪問權(quán)限和安全級別。

    • 主要的語句關(guān)鍵字包括GRANT、REVOKE、COMMIT、ROLLBACK、SAVEPOINT等。

因為查詢語句使用的非常的頻繁,所以很多人把查詢語句單拎出來一類:DQL(數(shù)據(jù)查詢語言)。

還有單獨將COMMITROLLBACK 取出來稱為TCL (Transaction Control Language,事務(wù)控制語言)。

2. SQL語言的規(guī)則與規(guī)范

2.1 基本規(guī)則

  • SQL 可以寫在一行或者多行。為了提高可讀性,各子句分行寫,必要時使用縮進
  • 每條命令以 ; 或 \g 或 \G 結(jié)束
  • 關(guān)鍵字不能被縮寫也不能分行
  • 關(guān)于標點符號
    • 必須保證所有的()、單引號、雙引號是成對結(jié)束的
    • 必須使用英文狀態(tài)下的半角輸入方式
    • 字符串型和日期時間類型的數(shù)據(jù)可以使用單引號(’ ')表示
    • 列的別名,盡量使用雙引號(" "),而且不建議省略as

2.2 SQL大小寫規(guī)范 (建議遵守)

  • MySQL 在 Windows 環(huán)境下是大小寫不敏感的
  • MySQL 在 Linux 環(huán)境下是大小寫敏感的
    • 數(shù)據(jù)庫名、表名、表的別名、變量名是嚴格區(qū)分大小寫的
    • 關(guān)鍵字、函數(shù)名、列名(或字段名)、列的別名(字段的別名) 是忽略大小寫的。
  • 推薦采用統(tǒng)一的書寫規(guī)范:
    • 數(shù)據(jù)庫名、表名、表別名、字段名、字段別名等都小寫
    • SQL 關(guān)鍵字、函數(shù)名、綁定變量等都大寫

2.3 注釋

可以使用如下格式的注釋結(jié)構(gòu)

單行注釋:#注釋文字(MySQL特有的方式)
單行注釋:-- 注釋文字(--后面必須包含一個空格。)
多行注釋:/* 注釋文字  */

2.4 命名規(guī)則(暫時了解)

  • 數(shù)據(jù)庫、表名不得超過30個字符,變量名限制為29個
  • 必須只能包含 A–Z, a–z, 0–9, _共63個字符
  • 數(shù)據(jù)庫名、表名、字段名等對象名中間不要包含空格
  • 同一個MySQL軟件中,數(shù)據(jù)庫不能同名;同一個庫中,表不能重名;同一個表中,字段不能重名
  • 必須保證你的字段沒有和保留字、數(shù)據(jù)庫系統(tǒng)或常用方法沖突。如果堅持使用,請在SQL語句中使用`(著重號)引起來
  • 保持字段名和類型的一致性,在命名字段并為其指定數(shù)據(jù)類型的時候一定要保證一致性。假如數(shù)據(jù)類型在一個表里是整數(shù),那在另一個表里可就別變成字符型了

舉例:

#以下兩句是一樣的,不區(qū)分大小寫
show databases;
SHOW DATABASES;#創(chuàng)建表格
#create table student info(...); #表名錯誤,因為表名有空格
create table student_info(...); #其中order使用``飄號,因為order和系統(tǒng)關(guān)鍵字或系統(tǒng)函數(shù)名等預(yù)定義標識符重名了
CREATE TABLE `order`(id INT,lname VARCHAR(20)
);select id as "編號", `name` as "姓名" from t_stu; #起別名時,as都可以省略
select id as 編號, `name` as 姓名 from t_stu; #如果字段別名中沒有空格,那么可以省略""
select id as 編 號, `name` as 姓 名 from t_stu; #錯誤,如果字段別名中有空格,那么不能省略""

2.5 數(shù)據(jù)導(dǎo)入指令

2.5.1 方式一:

在命令行客戶端登錄mysql,使用source指令導(dǎo)入

mysql> source d:\mysqldb.sql
mysql> desc employees;
+----------------+-------------+------+-----+---------+-------+
| Field          | Type        | Null | Key | Default | Extra |
+----------------+-------------+------+-----+---------+-------+
| employee_id    | int(6)      | NO   | PRI | 0       |       |
| first_name     | varchar(20) | YES  |     | NULL    |       |
| last_name      | varchar(25) | NO   |     | NULL    |       |
| email          | varchar(25) | NO   | UNI | NULL    |       |
| phone_number   | varchar(20) | YES  |     | NULL    |       |
| hire_date      | date        | NO   |     | NULL    |       |
| job_id         | varchar(10) | NO   | MUL | NULL    |       |
| salary         | double(8,2) | YES  |     | NULL    |       |
| commission_pct | double(2,2) | YES  |     | NULL    |       |
| manager_id     | int(6)      | YES  | MUL | NULL    |       |
| department_id  | int(4)      | YES  | MUL | NULL    |       |
+----------------+-------------+------+-----+---------+-------+
11 rows in set (0.00 sec)

2.5.2 方式二:

SQLyog中選擇“工具” – “執(zhí)行sql腳本” – 選中xxx.sql即可

3. 基本的SELECT語句

3.1 SELECT …

SELECT 1, 2;

3.2 SELECT … FROM

  • 語法:
SELECT 標識選擇哪些列
FROM 標識從哪個表中選擇
  • 選擇全部列:
SELECT *
FROM departments;

image-20230212175727506

一般情況下,除非需要使用表中所有的字段數(shù)據(jù),最好不要使用通配符‘*’。使用通配符雖然可以節(jié)省輸入查詢語句的時間,但是獲取不需要的列數(shù)據(jù)通常會降低查詢和所使用的應(yīng)用程序的效率。通配符的優(yōu)勢是,當不知道所需要的列的名稱時,可以通過它獲取它們。

在生產(chǎn)環(huán)境下,不推薦你直接使用SELECT *進行查詢。

  • 選擇特定的列:
SELECT department_id, location_id
FROM departments;

image-20230212175640266

3.3 列的別名

  • 重命名一個列

  • 便于計算

  • 緊跟列名,也可以在列名和別名之間加入關(guān)鍵字AS,別名使用雙引號(以便在別名中包含空格)

  • AS和雙引號可以省略

  • 建議別名簡短,見名知意

  • 舉例

SELECT last_name lname, commission_pct comm
FROM employees;

SELECT last_name AS "lname", commission_pct AS "comm", salary * 12 "annual salary"
FROM employees;

3.4 去除重復(fù)行

默認情況下,查詢會返回全部行,包括重復(fù)行。

SELECT department_id
FROM employees;

image-20230212175904204

在SELECT語句中使用關(guān)鍵字DISTINCT去除重復(fù)行

SELECT DISTINCT department_id
FROM employees;

image-20230212175933245

針對于:

SELECT DISTINCT department_id, salary 
FROM employees;

image-20230212175956836

這里有兩點需要注意:

  1. DISTINCT 需要放到所有列名的前面,如果寫成SELECT salary, DISTINCT department_id FROM employees會報錯。
  2. DISTINCT 其實是對后面所有列名的組合進行去重,你能看到最后的結(jié)果是 74 條,因為這 74 組數(shù)據(jù)department_id和salary的組合不同。如果你想要看都有哪些不同的部門(department_id),只需要寫DISTINCT department_id即可,后面不需要再加其他的列名了。

3.5 空值參與運算

  • 所有運算符或列值遇到null值,運算的結(jié)果都為null
SELECT employee_id, salary, commission_pct, 12 * salary * (1 + commission_pct) "annual_sal"
FROM employees;

image-20230212175457474

這里你一定要注意,在 MySQL 里面, 空值不等于空字符串。一個空字符串的長度是 0,而一個空值的長度是空。而且,在 MySQL 里面,空值是占用空間的。

  • 解決方案:引入IFNULL
#IFNULL(commission_pct,0)表示如果commission_pct為null,則返回0
SELECT employee_id, salary, commission_pct, 12 * salary * (1 + IFNULL(commission_pct,0)) "annual_sal" 
FROM employees;

image-20230212175327871

3.6 著重號

  • 錯誤的
SELECT * FROM ORDER;

image-20230212181834032

  • 正確的
SELECT * FROM `order`;

image-20230212181748894

  • 結(jié)論

我們需要保證表中的字段、表名等沒有和保留字、數(shù)據(jù)庫系統(tǒng)或常用方法沖突。如果真的相同,請在SQL語句中使用一對``(著重號)引起來。

3.7 查詢常數(shù)

SELECT 查詢還可以對常數(shù)進行查詢。對的,就是在 SELECT 查詢結(jié)果中增加一列固定的常數(shù)列。這列的取值是我們指定的,而不是從數(shù)據(jù)表中動態(tài)取出的。

你可能會問為什么我們還要對常數(shù)進行查詢呢?

SQL 中的 SELECT 語法的確提供了這個功能,一般來說我們只從一個表中查詢數(shù)據(jù),通常不需要增加一個固定的常數(shù)列,但如果我們想整合不同的數(shù)據(jù)源,用常數(shù)列作為這個表的標記,就需要查詢常數(shù)。

比如說,我們想對 employees 數(shù)據(jù)表中的員工姓名進行查詢,同時增加一列字段corporation,這個字段固定值為“尚硅谷”,可以這樣寫:

SELECT '尚硅谷' AS corporation, '常數(shù)列', last_name FROM employees;

image-20230212212557451

4. 顯示表結(jié)構(gòu)

使用DESCRIBE 或 DESC 命令,表示表結(jié)構(gòu)。

DESCRIBE employees;
或
DESC employees;

image-20230212182610807

其中,各個字段的含義分別解釋如下:

  • Field:表示字段名稱。
  • Type:表示字段類型,這里 barcode、goodsname 是文本型的,price 是整數(shù)類型的。
  • Null:表示該列是否可以存儲NULL值。
  • Key:表示該列是否已編制索引。PRI表示該列是表主鍵的一部分;UNI表示該列是UNIQUE索引的一部分;MUL表示在列中某個給定值允許出現(xiàn)多次。
  • Default:表示該列是否有默認值,如果有,那么值是多少。
  • Extra:表示可以獲取的與給定列有關(guān)的附加信息,例如AUTO_INCREMENT等。

5. 過濾數(shù)據(jù)

  • 語法:
SELECT 字段1,字段2
FROM 表名
WHERE 過濾條件
  • 使用WHERE 子句,將不滿足條件的行過濾掉

  • WHERE子句緊隨 FROM子句

  • 舉例

SELECT employee_id, last_name, job_id, department_id
FROM employees
WHERE department_id = 90 ;#查詢90號部門的員工信息

image-20230212185545735

http://www.risenshineclean.com/news/49199.html

相關(guān)文章:

  • 營銷型網(wǎng)站的網(wǎng)址合肥seo網(wǎng)絡(luò)營銷推廣
  • 網(wǎng)站界面設(shè)計的基本原則是什么web3域名注冊
  • 秦皇島網(wǎng)站制作多少錢百度一下首頁手機版
  • 做網(wǎng)站在經(jīng)營范圍內(nèi)屬于什么各大網(wǎng)站推廣平臺
  • 關(guān)鍵詞代發(fā)排名首頁seo在線優(yōu)化工具 si
  • 國內(nèi)做新聞比較好的網(wǎng)站有哪些西安網(wǎng)站seo廠家
  • 菏澤網(wǎng)站建設(shè)哪家好企業(yè)員工培訓(xùn)總結(jié)
  • 爬蟲 網(wǎng)站開發(fā)實例網(wǎng)絡(luò)營銷策劃的內(nèi)容
  • 徐州本地網(wǎng)站鎮(zhèn)江seo快速排名
  • 建設(shè)集團公司網(wǎng)站百度域名查詢官網(wǎng)
  • 光谷做網(wǎng)站推廣哪家好阿里巴巴運營
  • 佛山找人做網(wǎng)站seo發(fā)貼軟件
  • 湖南城鄉(xiāng)建設(shè)網(wǎng)站免費外國網(wǎng)站瀏覽器
  • 簡單網(wǎng)站后臺模板如何制作自己的網(wǎng)站
  • 如何在建設(shè)教育協(xié)會網(wǎng)站注冊考試智能營銷系統(tǒng)
  • 商城網(wǎng)站建設(shè)視頻企業(yè)網(wǎng)站建設(shè)的重要性
  • 福州網(wǎng)站建設(shè)公司關(guān)鍵詞營銷推廣
  • wordpress嗎西安seo關(guān)鍵詞排名
  • 寶安關(guān)于網(wǎng)站建設(shè)免費二級域名申請網(wǎng)站
  • 民治做網(wǎng)站的公司平臺怎么推廣技巧
  • 建設(shè)通網(wǎng)站公路查詢軟文案例
  • 程序員接活的平臺網(wǎng)站seo問答
  • 如何建設(shè)網(wǎng)站建設(shè)網(wǎng)絡(luò)公司有哪些
  • vs做網(wǎng)站登錄界面2023年11月新冠高峰
  • 企業(yè)年金交滿多少年才能領(lǐng)取seo關(guān)鍵詞排名優(yōu)化app
  • dede網(wǎng)站后臺地址掃描曼聯(lián)目前積分榜
  • 做塑料的外貿(mào)網(wǎng)站有哪些提高搜索引擎檢索效果的方法
  • 怎么注冊個人網(wǎng)站上海網(wǎng)站快速排名提升
  • 牛商網(wǎng)做網(wǎng)站要多少錢seo最新技巧
  • 怎樣做商業(yè)網(wǎng)站平臺seo服務(wù)方案