日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

jpa 自定义sql if_数据产品经理必备之SQL基础

發(fā)布時間:2024/10/12 数据库 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 jpa 自定义sql if_数据产品经理必备之SQL基础 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

SQL語言是用于訪問和處理數(shù)據(jù)庫的標準的計算機語言,本文將從基本語法和高級語法兩方面來介紹SQL語言。

數(shù)據(jù)產品經(jīng)理從字面上看包含“數(shù)據(jù)”和“產品經(jīng)理”兩方面,是產品經(jīng)理領域中更加細分的數(shù)據(jù)領域。可見,“數(shù)據(jù)”之于“數(shù)據(jù)產品經(jīng)理”的重要性。

在不同的公司數(shù)據(jù)產品經(jīng)理可能會出現(xiàn)不同的名稱,比如“數(shù)據(jù)產品經(jīng)理”、“大數(shù)據(jù)產品經(jīng)理”、“數(shù)據(jù)平臺產品經(jīng)理”、“產品經(jīng)理(數(shù)據(jù)方向)”,但不管是什么樣的名稱,我們從招聘網(wǎng)站上面查閱數(shù)據(jù)產品經(jīng)理的職位描述,看到該領域的產品經(jīng)理所需要的素質和技能是類似的。

在阿里巴巴、百度、京東等互聯(lián)網(wǎng)公司的數(shù)據(jù)產品經(jīng)理職位描述中我們反復看到招聘信息中有關于求職者掌握SQL的描述,可見在數(shù)據(jù)產品經(jīng)理領域SQL已經(jīng)是和PPT、Excel一樣成為數(shù)據(jù)產品經(jīng)理必不可少的技能。

那么為什么數(shù)據(jù)產品經(jīng)理需要掌握SQL呢?

因為數(shù)據(jù)產品經(jīng)理需要經(jīng)常和數(shù)據(jù)打交道,而掌握SQL能夠獲取數(shù)據(jù),只有擁有了數(shù)據(jù)才能進一步進行數(shù)據(jù)探索設計數(shù)據(jù)產品。

SQL語言是用于訪問和處理數(shù)據(jù)庫的標準的計算機語言,下面我們將從基本語法和高級語法兩方面來介紹SQL語言。

SQL 基本語法

1. 操作數(shù)據(jù)庫

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

語法格式:

CREATE DATABASE [IF NOT EXISTS] [[DEFAULT] CHARACTER SET ] [[DEFAULT] COLLATE ];

語法說明:

  • :創(chuàng)建數(shù)據(jù)庫的名稱。數(shù)據(jù)庫名稱必須符合操作系統(tǒng)的文件夾命名規(guī)則。
  • IF NOT EXISTS:在創(chuàng)建數(shù)據(jù)庫之前進行判斷,只有該數(shù)據(jù)庫目前尚不存在時才能執(zhí)行操作。此選項可以用來避免數(shù)據(jù)庫已經(jīng)存在而重復創(chuàng)建的錯誤。
  • [DEFAULT] CHARACTER SET:指定數(shù)據(jù)庫的默認字符集。
  • [DEFAULT] COLLATE:指定字符集的默認校對規(guī)則。

示例:

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

create database database_name;

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

語法格式:

DROP DATABASE [ IF EXISTS ]

語法說明:

  • :指定要刪除的數(shù)據(jù)庫名。
  • IF EXISTS:用于防止當數(shù)據(jù)庫不存在時發(fā)生錯誤。
  • DROP DATABASE:刪除數(shù)據(jù)庫中的所有表格并且同時刪除數(shù)據(jù)庫。使用此語句時一定要慎重和小心,以免出現(xiàn)錯誤刪除。如果要使用 DROP DATABASE,需要獲得數(shù)據(jù)庫 DROP 權限。

示例:

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

drop database database_name;

(3)修改數(shù)據(jù)庫

語法格式:

ALTER DATABASE [數(shù)據(jù)庫名] { [ DEFAULT ] CHARACTER SET | [ DEFAULT ] COLLATE }

語法說明:

  • ALTER DATABASE 用于更改數(shù)據(jù)庫的全局特性。這些特性存儲在數(shù)據(jù)庫目錄的 db.opt 文件中。
  • 使用 ALTER DATABASE 需要獲得數(shù)據(jù)庫 ALTER 權限。
  • 數(shù)據(jù)庫名稱可以忽略,此時語句對應于默認數(shù)據(jù)庫。
  • CHARACTER SET 子句用于更改默認的數(shù)據(jù)庫字符集。

示例:

修改數(shù)據(jù)庫database_name

alter database database_name rename to database_new_name;

(4)查看數(shù)據(jù)庫

語法格式:

SHOW DATABASES [LIKE ‘數(shù)據(jù)庫名’];

語法說明:

  • LIKE 從句是可選項,用于匹配指定的數(shù)據(jù)庫名稱。LIKE 從句可以部分匹配,也可以完全匹配。
  • 數(shù)據(jù)庫名由單引號’ ‘包圍。

示例:

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

show databases;

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

語法格式:

USE

示例:

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

use database_name;

2. 操作數(shù)據(jù)表

(1)創(chuàng)建數(shù)據(jù)表

語法格式:

CREATE TABLE ([表定義選項])[表選項][分區(qū)選項];

其中,[表定義選項]的格式是: [,…]

語法說明:

  • CREATE TABLE:用于創(chuàng)建給定名稱的表,必須擁有表CREATE的權限。
  • :指定要創(chuàng)建表的名稱,在 CREATE TABLE 之后給出,必須符合標識符命名規(guī)則。表名稱被指定為 databaseb_name.table_name,以便在特定的數(shù)據(jù)庫中創(chuàng)建表。無論是否有當前數(shù)據(jù)庫,都可以通過這種方式創(chuàng)建。在當前數(shù)據(jù)庫中創(chuàng)建表時,可以省略 db-name。如果使用加引號的識別名,則應對數(shù)據(jù)庫和表名稱分別加引號。例如,’mydatabaseb’.’mytable’ 是合法的,但 ‘mydatabaseb.mytable’ 不合法。
  • :表創(chuàng)建定義,由列名(column_name)、列的定義(column_definition)以及可能的空值說明、完整性約束或表索引組成。
  • 默認的情況是,表被創(chuàng)建到當前的數(shù)據(jù)庫中。若表已存在、沒有當前數(shù)據(jù)庫或者數(shù)據(jù)庫不存在,則會出現(xiàn)錯誤。

示例:

創(chuàng)建了表table_name,包含類型為int的id列

create table table_name(id int);

(2)修改數(shù)據(jù)表

語法格式:

ALTER TABLE [修改選項];

其中,[修改選項]的格式是:

{ ADD COLUMN

| CHANGE COLUMN

| ALTER COLUMN { SET DEFAULT | DROP DEFAULT }

| MODIFY COLUMN

| DROP COLUMN

| RENAME TO }

示例:

修改數(shù)據(jù)表table_name使其添加name列

alter table table_name add name varchar(30);

(3)刪除數(shù)據(jù)表

語法格式:

DROP TABLE [IF EXISTS] [ , , ] …

語法說明:

  • :被刪除的表名。DROP TABLE 語句可以同時刪除多個表,用戶必須擁有該命令的權限。
  • 表被刪除時,所有的表數(shù)據(jù)和表定義會被取消,所以使用本語句要小心。
  • 表被刪除時,用戶在該表上的權限并不會自動被刪除。
  • 參數(shù)IF EXISTS用于在刪除前判斷刪除的表是否存在,加上該參數(shù)后,在刪除表的時候,如果表不存在,SQL 語句可以順利執(zhí)行,但會發(fā)出警告(warning)。

示例:

刪除數(shù)據(jù)表table_name

drop table table_name;

3. 操作數(shù)據(jù)

(1)插入數(shù)據(jù)

語法格式:

INSERT INTO [ [ , … ] ] VALUES (值1) [… , (值n) ];

語法說明:

  • :指定被操作的表名。
  • :指定需要插入數(shù)據(jù)的列名。若向表中的所有列插入數(shù)據(jù),則全部的列名均可以省略,直接采用 INSERTVALUES(…) 即可。
  • VALUES 或 VALUE 子句:該子句包含要插入的數(shù)據(jù)清單。數(shù)據(jù)清單中數(shù)據(jù)的順序要和列的順序相對應。

示例:

insert into table_name (id)values (1);

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

語法格式:

DELETE FROM [WHERE 子句] [ORDER BY 子句] [LIMIT 子句]

語法說明:

語法說明如下:

  • :指定要刪除數(shù)據(jù)的表名。
  • ORDER BY 子句:可選項。表示刪除時,表中各行將按照子句中指定的順序進行刪除。
  • WHERE 子句:可選項。表示為刪除操作限定刪除條件,若省略該子句,則代表刪除該表中的所有行。
  • LIMIT 子句:可選項。用于告知在控制命令被返回數(shù)據(jù)前被刪除行的最大值。

示例:

刪除表table_name中全部數(shù)據(jù)

delete from table_name;

(3)修改數(shù)據(jù)

語法格式:

UPDATE SET 字段 1=值 1 [,字段 2=值 2… ] [WHERE 子句 ] [ORDER BY 子句] [LIMIT 子句]

語法說明:

  • :用于指定要更新的表名稱。
  • SET 子句:用于指定表中要修改的列名及其列值。其中,每個指定的列值可以是表達式,也可以是該列對應的默認值。如果指定的是默認值,可用關鍵字 DEFAULT 表示列值。
  • WHERE 子句:可選項。用于限定表中要修改的行。若不指定,則修改表中所有的行。
  • ORDER BY 子句:可選項。用于限定表中的行被修改的次序。
  • LIMIT 子句:可選項。用于限定被修改的行數(shù)。

示例:

更新所有行的id列為0

update table_name set id=0

(4)查詢數(shù)據(jù)

語法格式:

SELECT {* | }

[

FROM , …

[WHERE

[GROUP BY

[HAVING [{}…]]

[ORDER BY ]

[LIMIT[,] ]

]

語法說明:

  • {*|}包含星號通配符的字段列表,表示查詢的字段,其中字段列至少包含一個字段名稱,如果要查詢多個字段,多個字段之間要用逗號隔開,最后一個字段后不要加逗號。
  • FROM ,…,表 1 和表 2 表示查詢數(shù)據(jù)的來源,可以是單個或多個。
  • WHERE 子句是可選項,如果選擇該項,將限定查詢行必須滿足的查詢條件。
  • GROUP BY< 字段 >,該子句用于按照指定的字段分組。
  • [ORDER BY< 字段 >],該子句用于指定按什么樣的順序顯示查詢出來的數(shù)據(jù),可以進行的排序有升序(ASC)和降序(DESC)。
  • [LIMIT[,]],該子句用于指定 每次顯示查詢出來的數(shù)據(jù)條數(shù)。

示例:

查詢表中全部記錄

select * from table_name;

SQL 高級語法

1. 操作符

操作符是一個保留字或字符,用于指定條件或者聯(lián)接多個條件。常見操作符有比較操作符、邏輯操作符、算術操作符。

(1)比較操作符

比較操作符是指等于=、不等于<>、大于>、小于=、小于等于<=

示例:

id = 1;id <> 1;id >1;id <1;id >=1;id <=1;

(2)邏輯操作符

邏輯操作符包括與NULL值比較 IS NULL、位于兩個值之間BETWEEN、與指定列表比較IN、與類似的值比較LIKE、多個條件與連接AND、多個條件或連接OR

示例:

id is null;id between ‘0’ and ’10’; id in (‘0′,’1′,’10’);id like ‘123%’;id > 10 and id <20; ;id = 10 or id =20;

(3)算術操作符

算術操作符有加法+、減法—、乘法*、除法/,支持組合使用

示例:

where col1 + col2 > ’20’;where col1 – col2 > ’20’;where col1 * 10 > ’20’;where (col1 / 10) > ’20’;

2. 連接

(1)內連接

語法格式:

SELECT

FROM INNER JOIN [ ON子句]

語法說明:

  • :需要檢索的列名。
  • :進行內連接的兩張表的表名。

示例:

select id,name from table1 inner join table2 on table1.cid=table2.cid;

(2)全連接

語法格式:

SELECT

FROM FULL JOIN [ ON子句]

語法說明:

  • :需要檢索的列名。
  • :進行全連接的兩張表的表名。

示例:

select id,name from table1 full join table2 on table1.cid=table2.cid;

(3)左連接

語法格式:

SELECT

FROM LEFT JOIN [ ON子句]

語法說明:

  • :需要檢索的列名。
  • :進行左連接的兩張表的表名。

示例:

select id,name from table1 left join table2 on table1.cid=table2.cid;

(4)右連接

語法格式:

SELECT

FROM RIGHT JOIN [ ON子句]

語法說明:

  • :需要檢索的列名。
  • :進行右連接的兩張表的表名。

示例:

select id,name from table1 right join table2 on table1.cid=table2.cid;

3. 視圖

視圖是一個虛擬表,包含一系列帶有名稱的列和行數(shù)據(jù),但視圖并不是數(shù)據(jù)庫真實存儲的數(shù)據(jù)表。存儲在數(shù)據(jù)庫中的查詢操作 SQL 語句定義了視圖的內容,列數(shù)據(jù)和行數(shù)據(jù)來自于視圖查詢所引用的實際表,引用視圖時動態(tài)生成這些數(shù)據(jù)。視圖的結構形式和表一樣,可以進行查詢、修改、更新和刪除等操作。

(1)創(chuàng)建視圖

語法格式:

CREATE VIEW AS

語法說明:

  • :指定視圖的名稱。該名稱在數(shù)據(jù)庫中必須是唯一的,不能與其他表或視圖同名。
  • :指定創(chuàng)建視圖的 SELECT 語句,可用于查詢多個基礎表或源視圖。

示例:

create view view_name as select * from table_name;

(2)查看視圖

語法格式:

DESCRIBE ;

語法說明:

  • :查看的視圖名稱。該名稱在數(shù)據(jù)庫中必須是唯一的,不能與其他表或視圖同名。

示例:

describe view_name;

(3)修改視圖

語法格式:

ALTER VIEW AS

語法說明:

  • :指定視圖的名稱。該名稱在數(shù)據(jù)庫中必須是唯一的,不能與其他表或視圖同名。
  • :指定修改視圖的 SELECT 語句,可用于查詢多個基礎表或源視圖。

示例:

alter view view_name as select * from table_name;

(4)刪除視圖

語法格式:

DROP VIEW [ , …]

語法說明:

  • :指定刪除的視圖名稱。

示例:

drop view view_name;

4. 索引

索引是一種十分重要的數(shù)據(jù)庫對象。索引是數(shù)據(jù)庫性能調優(yōu)技術的基礎,常用于實現(xiàn)數(shù)據(jù)的快速檢索。對表建立一個索引,在列上創(chuàng)建了索引之后,查找數(shù)據(jù)時可以直接根據(jù)該列上的索引找到對應記錄行的位置,從而快捷地查找到數(shù)據(jù)。索引存儲了指定列數(shù)據(jù)值的指針,根據(jù)指定的排序順序對這些指針排序。

(1)創(chuàng)建索引

語法格式:

CREATE ON ( [] [ ASC | DESC])

此外,還可以在CREATE TABLE 、ALTER TABLE時創(chuàng)建索引

語法說明:

  • :指定索引名。一個表可以創(chuàng)建多個索引,但每個索引在該表中的名稱是唯一的。
  • :指定要創(chuàng)建索引的表名。
  • :指定要創(chuàng)建索引的列名。通常可以考慮將查詢語句中在 JOIN 子句和 WHERE 子句里經(jīng)常出現(xiàn)的列作為索引列。
  • :可選項。指定使用列前的 length 個字符來創(chuàng)建索引。使用列的一部分創(chuàng)建索引有利于減小索引文件的大小,節(jié)省索引列所占的空間。在某些情況下,只能對列的前綴進行索引。索引列的長度有一個最大上限字節(jié)數(shù),如果索引列的長度超過了這個上限,就只能用列的前綴進行索引。另外,BLOB 或 TEXT 類型的列也必須使用前綴索引。
  • ASC|DESC:可選項。ASC指定索引按照升序來排列,DESC指定索引按照降序來排列,默認為ASC。

示例:

create index index_name on table_name(column_name,column_name)

(2)刪除索引

語法格式:

DROP INDEX ON

語法說明:

  • :要刪除的索引名。
  • :指定該索引所在的表名。

示例:

drop index index_name on table_name

5. 事務

事務是并發(fā)控制的單位,是用戶定義的一個操作序列,主要用于處理操作量大,復雜度高的數(shù)據(jù)。這些操作要么都做,要么都不做,是一個不可分割的工作單位。通過事務,SQL能將邏輯相關的一組操作綁定在一起,以便保持數(shù)據(jù)的完整性。

一般來說,事務是必須滿足4個條件(ACID):原子性(Atomicity,又稱為不可分割性)、一致性(Consistency)、隔離性(Isolation,又稱為獨立性)、持久性(Durability)。

(1)開始事務

語法格式:

BEGIN TRANSACTION |@

語法說明:

  • @是由用戶定義的變量,必須用 char、varchar、nchar 或 nvarchar數(shù)據(jù)類型來聲明該變量。
  • BEGIN TRANSACTION 語句的執(zhí)行使全局變量 @@TRANCOUNT 的值加 1。

示例:

begin transaction

(2)提交事務

語法格式:

COMMIT TRANSACTION |@

語法說明:

COMMIT TRANSACTION語句的執(zhí)行使全局變量 @@TRANCOUNT 的值減 1。

示例:

commit transaction

(3)撤銷事務

語法格式:

ROLLBACK [TRANSACTION] [| @ | | @

語法說明:

  • 當條件回滾只影響事務的一部分時,事務不需要全部撤銷已執(zhí)行的操作。可以讓事務回滾到指定位置,此時,需要在事務中設定保存點(SAVEPOINT)。保存點所在位置之前的事務語句不用回滾,即保存點之前的操作被視為有效的。保存點的創(chuàng)建通過“SAVING TRANSACTION”語句來實現(xiàn),再執(zhí)行“ROLLBACK TRANSACTION”語句回滾到該保存點。
  • 若事務回滾到起點,則全局變量 @@TRANCOUNT 的值減 1;若事務回滾到指定的保存點,則全局變量 @@TRANCOUNT 的值不變。

示例:

rollback

6. 約束

(1)主鍵約束

主鍵約束是一個列或者列的組合,其值能唯一地標識表中的每一行,這樣的一列或多列稱為表的主鍵,通過主鍵約束可以強制表的實體完整性。

語法格式:

PRIMARY KEY [默認值]

示例:

PRIMARY KEY(id)

(2)唯一約束

唯一約束要求該列唯一,允許為空,但只能出現(xiàn)一個空值。唯一約束能夠確保一列或者幾列不出現(xiàn)重復值。

語法格式:

UNIQUE

示例:

unique(id)

(3)外鍵約束

外鍵約束用來在兩個表的數(shù)據(jù)之間建立鏈接,它可以是一列或者多列。一個表可以有一個或多個外鍵。

語法格式:

[CONSTRAINT ] FOREIGN KEY 字段名 [,字段名2,…]

REFERENCES 主鍵列1 [,主鍵列2,…]

語法說明:

外鍵名為定義的外鍵約束的名稱,一個表中不能有相同名稱的外鍵;字段名表示子表需要添加外健約束的字段列;主表名即被子表外鍵所依賴的表的名稱;主鍵列表示主表中定義的主鍵列或者列組合。

示例:

foreign key(id)

(4)非空約束

非空約束(NOT NULL)可以通過 CREATE TABLE 或 ALTER TABLE 語句實現(xiàn)。在表中某個列的定義后加上關鍵字 NOT NULL 作為限定詞,來約束該列的取值不能為空。

語法格式:

NOT NULL;

示例:

id int(10) not null

(5)檢查約束

檢查約束基于行中其他列的值在特定的列中對值進行限制,用于限制列中的值的范圍。

語法格式:

CHECK

語法說明:

指的就是 SQL 表達式,用于指定需要檢查的限定條件。

示例:

check(id>0)

想了解更多的硬核知識點和精講架構視頻資料獲取方式關注,轉發(fā)后,后臺私信回復“架構資料”獲取

以及一些一線互聯(lián)網(wǎng)公司的面試題解析含答案

獲取方式:關注轉發(fā)+轉發(fā)+后臺私信回復‘架構資料’獲取加入程序員交流學習社群方式,以及一些收集整理資料。

總結

以上是生活随笔為你收集整理的jpa 自定义sql if_数据产品经理必备之SQL基础的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內容還不錯,歡迎將生活随笔推薦給好友。