Sql菜鳥學習筆記

2021-10-24 01:53:20 字數 4796 閱讀 9805

1.insert into 語句可以有兩種編寫形式。

第一種形式無需指定要插入資料的列名,只需提供被插入的值即可:

insert

into table_name

values

(value1,value2,value3,..

.);

第二種形式需要指定列名及被插入的值:

insert

into table_name (column1,column2,column3,..

.)values

(value1,value2,value3,..

.);

2.insert into select 和select into from 的區別

-- 插入一行,要求表scorebak存在

insert

into scorebak select score where neza =

'neza'

;-- 也是插入一行,要求表scorebak 不存在,相當於複製score表到scorebak

select

*into scorebak from score where neza =

'neza'

;

3.執行update語句如果沒有加where條件則會更新表中所有資料,所以要慎重!

在 mysql 中可以通過設定 sql_safe_updates 這個自帶的引數來解決,當該引數開啟的情況下,你必須在update 語句後攜帶 where 條件,否則就會報錯。

set sql_safe_updates=1;

-- 表示開啟該引數

4.sql select top 子句

select top 子句用於規定要返回的記錄的數目。

select top 子句對於擁有數千條記錄的大型表來說,是非常有用的。

注意:並非所有的資料庫系統都支援 select top 語句。 mysql 支援 limit 語句來選取指定的條數資料,oracle 可以使用 rownum 來選取。

sql server / ms access 語法

select

top number|

percent column_name(s)

from table_name;

mysql 語法

select column_name(s)

from table_name

limit number;

oracle 語法

select column_name(s)

from table_name

where rownum <= number;

5.like 操作符

select

*from websites where name like

'%oo%'

;

select

*from websites

where name not

like

'%oo%'

;

說明:"%" 符號用於在模式的前後定義萬用字元(預設字母)。

6.萬用字元

萬用字元可用於替代字串中的任何其他字元。

在 sql 中,可使用以下萬用字元:

% 替代 0 個或多個字元

_ 替代乙個字元

[charlist] 字元列中的任何單一字元

[^charlist]或[

!charlist] 不在字元列中的任何單一字元

7.使用 sql [charlist] 萬用字元

mysql 中使用 regexp 或 not regexp 運算子 (或 rlike 和 not rlike) 來操作正規表示式。

-- 選取 name 以 "g"、"f" 或 "s" 開始的所有**:

select

*from websites where name regexp

'^[gfs]'

;-- 選取 name 以 a 到 h 字母開頭的**:

select

*from websites where name regexp

'^[a-h]'

;-- 選取 name 不以 a 到 h 字母開頭的**:

select

*from websites where name regexp

'^[^a-h]'

;

8.in 與 = 的異同

9.between and 或 not between and 不僅可以用於比較數字,也可以用於比較字串,對於字串的比較,一定是從首字母開始比較,相當於比較ascii碼。

-- 選取 name 以介於 'a' 和 'h' 之間字母開始的所有**:

select

*from websites where name between

'a'and

'h';

請注意,在不同的資料庫中,between 操作符會產生不同的結果!

10.最好使用別名的場景

首先,連線的結果可以在邏輯上看作是由select語句指定的列組成的新錶。

左連線與右連線的左右指的是以兩張表中的哪一張為基準,它們都是外連線。

外連線就好像是為非基準表新增了一行全為空值的萬能行,用來與基準表中找不到匹配的行進行匹配。假設兩個沒有空值的表進行左連線,左表是基準表,左表的所有行都出現在結果中,右表則可能因為無法與基準表匹配而出現是空值的字段。

12.在使用 join 時,on 和 where 條件的區別如下:

1、 on 條件是在生成臨時表時使用的條件,它不管 on 中的條件是否為真,都會返回左邊表中的記錄。

2、where 條件是在臨時表生成好後,再對臨時表進行過濾的條件。這時已經沒有 left join 的含義(必須返回左邊表的記錄)了,條件不為真的就全部過濾掉。

13.sql union 操作符合併兩個或多個 select 語句的結果。

select column_name(s)

from table1

union

select column_name(s)

from table2;

-- 注:預設地,union 操作符選取不同的值。如果允許重複的值,請使用 union all。

注意,union 內部的每個 select 語句必須擁有相同數量的列。列也必須擁有相似的資料型別。同時,每個 select語句中的列的順序必須相同。

14.複製表

create

table 新錶

asselect

*from 原表

我們可以複製所有的列插入到新錶中:

select

*into newtable [

in externaldb]

from table1;

或者只複製希望的列插入到新錶中:

select column_name(s)

into newtable [

in externaldb]

from table1;

複製多個表中的資料插入到新錶中:

select websites.name, access_log.count, access_log.

date

into websitesbackup2016

from websites

left

join access_log

on websites.id=access_log.site_id;

select

*into newtable

from table1

where1=

0;

注:insert into select 語句從乙個表複製資料,然後把資料插入到乙個已存在的表中。目標表中任何已存在的行都不會受影響。

15.約束

約束可通過建立表或修改表進行新增。

在 sql 中,我們有如下約束:

not

null

- 指示某列不能儲存 null 值。

unique

- 保證某列的每行必須有唯一的值。

primary

key-

notnull 和 unique 的結合。確保某列(或兩個列多個列的結合)有唯一標識,有助於更容易更快速地找到表中的乙個特定的記錄。

foreign

key- 保證乙個表中的資料匹配另乙個表中的值的參照完整性。

check

- 保證列中的值符合指定的條件。

default

- 規定沒有給列賦值時的預設值。

例如:

create

table persons

( id_p int

notnull

primary

key,

//primary key約束

lastname varchar

(255

)not

null

)

菜鳥筆記 SQL語句 2

菜鳥筆記 sql語句 2 資料查詢語句 1 檢視某張表有哪些字段 desc 表名 2 oracle 資料庫 寫完sql執行要加 分號,mysql加不加都行 3 select from emp 使用萬用字元 書寫方便,檢索未知,但會降低檢索效率 4 起別名as 或者加雙引號為固定格式 或者啥也不加會把...

Linux shell 菜鳥學習筆記

20171123 linux shell 基礎學習筆記 1.shell 的開始 一般是 bin bash 通過 來唯一指定使用的shell路徑 其他的 都表示注釋.2.shell 的變數 定義變數直接用 variablename value 就可以 其中變數名與等號之間沒有空格.使用變數的時候 是 ...

dojo菜鳥學習筆記前述

最近做專案用到dojo框架,對於js大盲的我真是奇難無比。留下筆記,供日後複習只用,也給菜鳥指明方向 總的來說dojo跟其他的js框架比較類似,但是某些地方令人嘆服。只有用了才知道,如果學過jquery,easyui 什麼的,上手會比較快點。dojo的官方 是我現在用的版本是1.8,網上搜到的csd...