1、要求目標表table2已經存在數據庫,單純的插入數據
insert into table2(field1,field2)select value1,vlues2 from table1
2、要求目標表table2不存在數據庫,通過新創建table2進行指定數據字段複製
select value1,value2 into table2 from table1
3、len()函數返回文本字段中值的長度
具體事例
SELECT LEN(column_name) FROM table_name 可以直接進行判斷操作
4、round()函數用於指定字段數值的舍爲指定的小數位數
select round(column_name,decimal) from table 指定需要進行舍入的字段和保存位數 必填
5、now()函數用來返回當前數據庫操作的時間 getDate()函數用來獲取sql server獲取當前操作數據庫時間
6、format()函數用於轉換當前日期數據格式
format(column_name,format) column_name 需要轉換的字段 format 需要轉成的數據格式,如 "YYYY-MM-DD"
7、create (unique)index 用於在數據表中創建唯一/不唯一的表索引
事例: create index as index_name on table(Column_name DESC) 索引多個列可以直接使用功能逗號進行隔開即可
8、數據庫視圖
創建視圖:create or replace view view_name as select * from student
刪除視圖:drop view view_name
查詢視圖:select * from view_name
視圖是虛擬的數據表結構,不存儲數據,是虛擬的表,其中單視圖一般用來查詢和修改,多視圖一般只用來查詢,不做修改操作
作用:
安全高效定製
①簡化了操作,把經常使用的數據定義爲視圖。
②安全性,用戶只能查詢和修改能看到的數據。
③邏輯上的獨立性,屏蔽了真實表的結構帶來的影響。
9、group by用於結合合計函數,根據一個或者幾個列對數據函數進行分組 ,比如sum常常需要添加group by
事例:SELECT Customer,OrderDate,SUM(OrderPrice) FROM Orders
GROUP BY Customer,OrderDate 對統一名稱數據進行彙總,不會顯示多個
10、delete 對某些表數據進行刪除
DELETE FROM 表名稱 WHERE 列名稱 = 值
delete直接刪除表,只會想表數據進行刪除,不會刪除表結構、屬性和索引
11、drop 對某些表結構和數據進行刪除索引、表和數據庫
drop FROM 表名稱
DROP INDEX 刪除表的字段索引
DROP INDEX table_name.index_name
12、having使用主要原因是where 無法與合併函數一起使用
SELECT Customer,SUM(OrderPrice) FROM Orders
WHERE Customer='Bush' OR Customer='Adams'
GROUP BY Customer
HAVING SUM(OrderPrice)>1500 having在group by的後面進行添加作爲過濾條件
13、insert into 用於向已經數據庫表中插入數據使用
insert into table-name(field,field2)values(value1,value2)
14、like操作符用於在 WHERE 子句中搜索列中的指定模式
select * from table-name where column-name like pattern
15、distinct 表中,可能會包含重複值,distinct 操作符用來篩選中返回不重複的值
select distinct column_name from table-name order by column-name
16、truncate TRUNCATE TABLE table_name
truncate用於刪除表的數據,但仍保留表的數據結構,truncate 不能刪除行數據,要刪就要把表清空
17、update用於更新表的數據
update table set column-name = column-name1 where value = value1
18、Top返回指定數據的條數
sql sever的語法
SELECT TOP number|percent column_name(s)
FROM table_name number用於指定的數據條數或者數據總數的百分數 等同於limit進行限制返回的數據條數
orcal 語法
SELECT column_name(s)
FROM table_name
WHERE ROWNUM <= number 直接使用功能rownum進行指定返回的數據條數
19、like操作符用於在WHERE 子句中搜索列中的指定模式
“%” 可用於定義通配符(模式中缺少的字母)
select * form where column-name like “N%” 前面模糊匹配 %N後面模糊匹配 %N%中間模糊
20、SQL通配符
% 替代一個或者多個字符
_僅替代一個字符
SELECT * FROM Persons
WHERE FirstName LIKE '_eorge' 選取第一個字符之後是eorge的數據
[charlist]字符列中的任何單一字符
SELECT * FROM Persons
WHERE City LIKE '[ALN]%' 挑選出居住城市以A L N開頭的
[^charlist]或者[!charlist]表示不在字符列表的任何單一字符
SELECT * FROM Persons where city like '[!ALN]'
21、in操作符允許我們在where之後添加多個規定值
select * from table where in('value1','value2')
22、between…and…查詢出介於兩者之間的值,但是對於不同的數據庫查詢的結果可能有差異
有的可能全包含,有的全不包含,有的左包含,有的右包含
SELECT * FROM Persons
WHERE LastName
BETWEEN 'Adams' AND 'Carter' 查詢字母順序顯示介於該兩者的信息
如果想不在該兩者,一般直接前面加上not即可
23、Alias直接指定別名
SELECT column_name(s) as akias-name
FROM table_name AS alias_name 通過as或者不使用as直接爲表或者列指定別名
24、join和key
通過表的外鍵連接表數據進行查詢
SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo
FROM Persons, Orders
WHERE Persons.Id_P = Orders.Id_P
-----內連接查詢
SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo
FROM Persons
INNER JOIN Orders
ON Persons.Id_P = Orders.Id_P
ORDER BY Persons.LastName 兩表直接使用內部連接 然後在進行排序輸出
25、inner join 內部連接,等同於join 常搭配join on
SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo
FROM Persons
INNER JOIN Orders
ON Persons.Id_P=Orders.Id_P
ORDER BY Persons.LastName
26、left join 關鍵字會從左表 (table_name1) 那裏返回所有的行,即使在右表 (table_name2) 中沒有匹配的行。
SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo
FROM Persons
LEFT JOIN Orders
ON Persons.Id_P=Orders.Id_P
ORDER BY Persons.LastName 返回左表所有的行,右表沒有匹配的直接爲空
27、right join關鍵字會根據右表 (table_name2) 那裏返回所有的行,即使在左表 (table_name1) 中沒有匹配的行
SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo
FROM Persons
RIGHT JOIN Orders
ON Persons.Id_P=Orders.Id_P
ORDER BY Persons.LastName 右表所有行都會進行顯示,左表沒有的數據直接不顯示
28、full join 只要其中某個表存在匹配,FULL JOIN 關鍵字就會返回行。別稱是 full outer join
SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo
FROM Persons
FULL JOIN Orders
ON Persons.Id_P=Orders.Id_P
ORDER BY Persons.LastName 只要是兩表出現的都會返回
FULL JOIN 關鍵字會從左表 (Persons) 和右表 (Orders) 那裏返回所有的行
29、union用於連接表查詢的結果集
規範:UNION 內部的 SELECT 語句必須擁有相同數量的列。列也必須擁有相似的數據類型。同時,每條 SELECT 語句中的列的順序必須相同
UNION 命令只會選取不同的值,而union all會列出所有的相同值
30、select into 語句用於從一個表中選取數據,然後把數據插入另一個表中
IN 子句可用於向另一個數據庫中拷貝表
SELECT *
INTO Persons IN 'Backup.mdb'
FROM Persons 直接用於數據庫表的拷貝
31、create datebase用於直接創建數據庫
create table xxx 用於直接創建數據庫表,需要指定字段名稱和字段類型
CREATE TABLE Persons
(
Id_P int,
LastName varchar(255),
FirstName varchar(255),
Address varchar(255),
City varchar(255)
)
32、constraints增加表的約束條件 可以在創建表的時候進行添加,也可以在之後進行alter table進行修改
NOT NULL 直接在需要進行約束的字段後面添加即可
Plain Text
UNIQUE 可以直接在需要約束字段後面添加,或者最後添加unique(字段) 後面直接使用進行多字段約束 CONSTRAINT uc_PersonID UNIQUE (Id_P,LastName)
musql:DROP INDEX uc_PersonID 用於撤銷響應的約束條件 其他:DROP CONSTRAINT uc_PersonID
PRIMARY KEY 直接創建添加主鍵,主鍵需要滿足唯一,不爲空
FOREIGN KEY
CREATE TABLE Orders
(
Id_O int NOT NULL,
OrderNo int NOT NULL,
Id_P int,
PRIMARY KEY (Id_O),
FOREIGN KEY (Id_P) REFERENCES Persons(Id_P) 指定外鍵然後添加連接
)
CHECK 可以直接在需要進行檢查的字段後面添加,多個字段需要指定別名
CONSTRAINT chk_Person CHECK (Id_P>0 AND City='Sandnes')
DEFAULT 指定默認值
32、create index 用於爲表創建索引,作用是不讀取整個表的情況下,索引使數據庫應用程序可以更快地查找數據
CREATE INDEX index_name
ON table_name (column_name) 直接指定需要索引的列
unique指定索引的唯一性 唯一的索引意味着兩個行不能擁有相同的索引值
刪除索引 DROP INDEX index_name ON table_name 或者 table.index
33、alter用於改變表的字段或者其他的屬性
34、Auto-increment 會在新記錄插入表中時生成一個唯一的數字
P_Id int NOT NULL AUTO_INCREMENT, 自動生成主鍵
MS SQL 使用 IDENTITY 關鍵字來執行 auto-increment 任務。
默認地,IDENTITY 的開始值是 1,每條新記錄遞增 1
如:P_Id int PRIMARY KEY IDENTITY,
35、視圖view 視圖是基於 SQL 語句的結果集的可視化的表
CREATE VIEW [Current Product List] AS
SELECT ProductID,ProductName
FROM Products
WHERE Discontinued=No
36、date()函數 https://www.w3school.com.cn/sql/sql_dates.asp
37、NULL特殊的數據格式 必須使用 IS NULL 和 IS NOT NULL 操作符
38、數據類型 https://www.w3school.com.cn/sql/sql_datatypes.asp
39、UCASE 函數把字段的值轉換爲大寫 lcase函數把字段的值轉換成小寫
SELECT UCASE(LastName) as LastName,FirstName FROM Persons
40、MID 函數用於從文本字段中提取字符
SELECT MID(City,1,3) as SmallCity FROM Persons 提取每個字段的前三個字符