標籤:employee rem 資料類型 ODB key trace inner enc 相同
一、常用sql語句
1.建立資料庫
create database test;
2.刪除資料庫
drop database test;
3.使用資料庫
use test;
4.建立資料表
create table sys_role(
id int(4) not null primary key ,
available char(20) not null,
description char(20) not null,
role char(20) not null
) engine=InnoDB default charset=utf8;
5.刪除資料表
drop table if exists sys_role;
6.插入資料
insert into sys_role values(1,‘0‘,‘管理員‘,‘admin‘);
7.查詢資料
select * from sys_role;
8.修改資料
update sys_role set role=‘user‘ where id=1;
9.刪除資料
delete from sys_role where id=1;
二、關鍵字及符號
0. Constraints :SQL 約束
約束用於限制加入表的資料的類型。
可以在建立表時規定約束(通過 CREATE TABLE 語句),或者在表建立之後也可以(通過 ALTER TABLE 語句)。
比如,not null,unique,primary key,foreign key,default都屬於約束
可以用CONSTRAINT 命名約束。如下,命名外鍵約束為fk_PerOrders。
CREATE TABLE Orders
(
Id_O int NOT NULL,
OrderNo int NOT NULL,
Id_P int,
PRIMARY KEY (Id_O),
CONSTRAINT fk_PerOrders FOREIGN KEY (Id_P)
REFERENCES Persons(Id_P)
)
1.primary key 主鍵
主鍵表示該列值在表中是唯一的,不可以有重複。
主鍵必須包含唯一的值。主鍵列不能包含 NULL 值。
每個表都應該有一個主鍵,並且每個表只能有一個主鍵。
2.auto_increment 自增
auto_increment 就是對主鍵自動增加編號的。
3.unsigned 無符號
unsigned是無符號的意思,代表該欄位沒有正負。
4.欄位資料類型中,varchar和char的區別是什嗎?
varchar長度是可變的,能夠節省空間的。比如說儲存"abc",CHAR(10)需要10個字元的空間來儲存,而VARCHAR(10)只需要3個字元的空間。
5.FOREIGN KEY 外鍵約束
一個表中的 FOREIGN KEY 指向另一個表中的 PRIMARY KEY。
如下示,Id_P是Orders表的外鍵,也是Persons表的主鍵。可以用CONSTRAINT 命名約束。命名外鍵約束為fk_PerOrders。
CREATE TABLE Orders
(
Id_O int NOT NULL,
OrderNo int NOT NULL,
Id_P int,
PRIMARY KEY (Id_O),
CONSTRAINT fk_PerOrders FOREIGN KEY (Id_P)
REFERENCES Persons(Id_P)
)
6. % 萬用字元,表示一個或多個字元
如下示,查詢170開頭的電話號碼。
select * from phone_info where phoneNumber like "170%"
7. JOIN 用於根據兩個或多個表中的列之間的關係,從這些表中查詢資料。通過Inner Join ... On 實現。
如下示,尋找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
各種join的區別:
JOIN: 如果表中有至少一個匹配,則返回行
INNER JOIN 與 JOIN 是相同的。
LEFT JOIN: 即使右表中沒有匹配,也從左表返回所有的行
RIGHT JOIN: 即使左表中沒有匹配,也從右表返回所有的行
FULL JOIN: 只要其中一個表中存在匹配,就返回行
8. UNION 聯表查詢
UNION 操作符用於合并兩個或多個 SELECT 語句的結果集。
請注意,UNION 聯合的 SELECT 語句必須擁有相同數量的列。列也必須擁有相似的資料類型。
同時,每條 SELECT 語句中的列的順序必須相同。
如下示:
SELECT Employee_Name FROM Employees_China
UNION SELECT Employee_Name FROM Employees_USA
另外,UNION和UNION ALL區別:
預設地,UNION 操作符選取不同的值。如果允許重複的值,請使用 UNION ALL。
9.UNIQUE 約束, 使資料庫表中的某一列或某幾列的裡面的內容不重複
10.SELECT INTO 查詢並插入
SELECT INTO 語句從一個表中選取資料,然後把資料插入另一個表中。
SELECT INTO 語句常用於建立表的備份複件或者用於對記錄進行存檔。
SELECT LastName,FirstName
INTO Persons_backup
FROM Persons
11.Group By 分組
將查詢結果按某一列或多列的值分組
如下示:
select Cno,count(sno)
from course
group by Cno;
一張表,一旦分組完成後,查詢後只能得到組相關的資訊。可以通過count,sum,max,min,avg統計。
--統計分組後各種情況的數量
select count(*),age,sex from staff where 1=1
and create_date>=‘2018-05-07 00:00:00‘
group by age,sex
order by age asc
12.Having
對由sum()或其它集合函數運算結果的輸出進行限制。如下示:
SELECT store_name, SUM(sales)
FROM Store_Information
GROUP BY store_name
HAVING SUM(sales) > 1500
13.COUNT(column_name) 函數返回指定列的值的數目
COUNT(DISTINCT column_name) 函數返回指定列的不同值的數目:
14.Case ... When 可以作為COUNT的條件
比如,count( CASE WHEN ERRSTR is not null THEN 1 ELSE NULL END )表示如果ERRSTR不是空那麼就計數1,用於計算ERRSTR不為空白的數量
類似於程式設計語言中的if else。是判斷語句
比如:
select MOND_ID,INTERFACE_CODE,count(*) as REQUEST_COUNT, count( CASE WHEN ERRSTR is not null THEN 1 ELSE NULL END ) as FAILURE_COUNT
from vbase.ESB_TRACE_20180428 where 1=1
and CREATE_DATE>=‘2018-04-28 09:00:00‘
and CREATE_DATE<‘2018-04-28 09:30:00‘
and INTERFACE_CODE=‘Svc_ProvisionRet‘
group by MOND_ID,INTERFACE_CODE
order by MOND_ID asc
四、Index 索引
索引對於操作者,僅僅提供建立、刪除和修改的功能。操作者在增刪改查過程中,系統會自動調用索引。
可以在表中建立索引,以便更加快速高效地查詢資料。通過Create Index ... On實現。
建立一個簡單的索引,名為 "PersonIndex",在 Person 表的 LastName 列,如下示:
CREATE INDEX PersonIndex
ON Person (LastName)
九、附錄。 思考:
mysql常用語句及關鍵字