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...