一、sql分類:
ddl—資料定義語言(create,alter,drop,declare)
dml—資料操縱語言(select,delete,update,insert)
dcl—資料控制語言(grant,revoke,commit,rollback)
二、sql基礎語句
1.建立資料庫
create database 資料庫名稱
2.刪除資料庫
drop database 資料庫名稱
3.備份資料庫
建立備份資料 device
use master
exec sp_addumpdevice 'disk', 'testback', 'c:mssql7backupmynwind_1.dat'
開始備份
backup database 資料庫名稱 to testback
4.建立新錶
create table tabname(col1 type1 [not null] [primary key],col2 type2 [not null],..)
根據已有的表建立新錶:
a:create table tab_new like tab_old (使用舊表建立新錶)
b:create table tab_new as select col1,col2… from tab_old definition only
複製表(只複製結構,源表名:tab_new 新錶名:tab_old)
a:select * into tab_new from tab_old where 1<>1
b:select top 0 * into tab_new from tab_old
5.刪除新錶
drop table 表名
6.增加乙個列
alter table tabname add 列名稱 列的資料型別
7.新增或刪除粗主鍵
新增主鍵:
alter table tabname add primary key(col)
刪除主鍵:
alter table tabname drop primary key(col)
8.建立或刪除索引
建立索引:
create [unique] index idxname on tabname(col….)
刪除索引:
drop index idxname
注:索引是不可更改的,想更改必須刪除重新建。
9.建立或刪除檢視
建立檢視:
create view viewname as select statement
刪除檢視:
drop view viewname
10.幾個高階查詢運算詞
a: union 運算子
union 運算子通過組合其他兩個結果表(例如 table1 和 table2)並消去表中任何重複行而派生出乙個結果表。當 all 隨 union 一起使用時(即 union all),不消除重複行。兩種情況下,派生表的每一行不是來自 table1 就是來自 table2。
b: except 運算子
except 運算子通過包括所有在 table1 中但不在 table2 中的行並消除所有重複行而派生出乙個結果表。當 all 隨 except 一起使用時 (except all),不消除重複行。
c: intersect 運算子
intersect 運算子通過只包括 table1 和 table2 中都有的行並消除所有重複行而派生出乙個結果表。當 all 隨 intersect 一起使用時 (intersect all),不消除重複行。
注:使用運算詞的幾個查詢結果行必須是一致的。
11.使用外連線
a、left outer join: 左外連線(左連線):結果集既包括連線表的匹配行,也包括左連線表的所有行。
b:right outer join: 右外連線(右連線):結果集既包括連線表的匹配行,也包括右連線表的所有行。
c:full outer join: 全外連線:不僅包括符號連線表的匹配行,還包括兩個連線表中的所有記錄。
12.拷貝表(拷貝資料,源表名:a 目標表名:b)
insert into b(a, b, c) select d,e,f from a;
13.跨資料庫之間表的拷貝(具體資料使用絕對路徑)
14.between的用法,between限制查詢資料範圍時包括了邊界值,not between不包括
15.隨機取出10條資料
select top 10 * from tablename order by newid()
16.刪除重覆記錄
delete from tablename where id not in (select max(id) from tablename group by col1,col2,...)
17.列出乙個表中所有的列名稱
select name from syscolumns where id=object_id('tablename')
18.選擇從10到15的記錄(思路:按id順序取前15,然後倒敘取前5)
select top 5 * from (select top 15 * from table order by id asc) table_別名 order by id desc
19.成績表字段為學號,課程和成績,按照學號分組,用一句sql求每個學生成績比較高的兩個課程。
select * from 成績表 a where 成績 in (select top 2 成績 from 成績表 b where a.學號=b.學號 order by 成績)
20.sql server 2000中使用的一些資料庫物件
**,檢視,使用者定義的函式,以及儲存過程,觸發器
21.什麼是索引
簡單地說,索引是乙個資料結構,用來快速訪問資料庫**或者檢視裡的資料。在sql server裡,它們有兩種形式:聚集索引和非聚集索引。聚集索引在索引的葉級儲存資料。這意味著不論聚集索引裡有**的哪個(或哪些)字段,這些欄位都會按順序被儲存在**。由於存在這種排序,所以每個**只會有乙個聚集索引。非聚集索引在索引的葉級有乙個行識別符號。這個行識別符號是乙個指向磁碟上資料的指標。它允許每個**有多個非聚集索引。
22.什麼是主鍵/外來鍵?
主鍵是**裡的(乙個或多個)字段,只用來定義**裡的行;主鍵裡的值總是唯一的。
外來鍵是乙個用來建立兩個**之間關係的約束。這種關係一般都涉及乙個**裡的主鍵欄位與另外乙個**(儘管可能是同乙個**)裡的一系列相連的字段。那麼這些相連的字段就是外來鍵。
零基礎學習sql 2 資料型別
上節課的提問 1 delete 和truncate 的區別 delete 可以刪除部分資料,truncate 清空所有資料,另外delete 需要記錄日誌等資訊,truncate 幾乎不記錄日誌,且truncate 是ddl 操作。問題2,自己去執行,我就不說細說了。常用資料型別 官網理論一大堆,我...
LeetCode之資料庫SQL(2)
題目 於leetcode資料庫 第二高的薪水 題目 編寫乙個 sql 查詢,獲取 employee 表中第二高的薪水 salary 例如上述 employee 表,sql查詢應該返回 200 作為第二高的薪水。如果不存在第二高的薪水,那麼查詢應返回 null。把第二高的薪水命名secondhighe...
從零學SQL 2 關係模型
做資料運營,準確的是標籤系統運營的時候,需要找資料組拿每日使用者點選情況。主鍵每一條記錄是不能重複的,如果資料是使用者實際點選資料,無法保證不會有兩個人點選同樣的詞。如果這裡需要區分,就需要加入乙個區分它們的字段,比如id。能區分兩條記錄的字段,叫做 主鍵 注意 1.主鍵最好不要修改 由於主鍵的作用...