關於Mysql服務的一點積累-Mysql基礎

Mysql數據庫大體上分爲以下幾個關鍵點
1.基礎的語言部分
數據定義語言(DDL)用來定義數據庫對象,對數據庫,表等結構性對象的增刪改操作。
數據操縱語言(DML)用來定義數據庫記錄,對錶中記錄的增刪改操作。
數據查詢語言(DQL)用來查詢記錄,對錶中數據的查詢。
數據控制語言(DCL)用來定義訪問權限和安全等級,對用戶創建和授權。
語言分類中,查詢(DQL)是最常用,也是最需優化功底的。控制(DCL)是安全策略的最基礎部分權限控制的實現手段。
操縱(DML)是數據治理中的常規使用手段,定義(DDL)是數據庫服務設計的基礎。
2.數據庫的理解:
RDBMS=管理員(manager)+倉庫(database)
database=N個table
table:
表結構:定義表的列名和列類型
表記錄:一行一行的記錄
3.安裝MySQL數據庫
1.MySQL安裝成功後會在兩個目錄中存儲文件:
C:\ProgramData\MySQL\MySQL Server 5.5\data:DBMS數據庫文件(卸載MySQL時不會刪除這個目錄,需要自己手動刪除);
D:\Program Files\MySQL\MySQL Server 5.5:DBMS管理程序
2.MySQL重要文件
D:\Program Files\MySQL\MySQL Server 5.5\bin\mysql.exe:客戶端程序,用來操作服務器。但必須保證服務器已開啓才能連接上;
D:\Program Files\MySQL\MySQL Server 5.5\bin\mysqld.exe:服務器程序,必須先啓動它,客戶端才能連接上服務器;
D:\Program Files\MySQL\MySQL Server 5.5\bin\my.ini:服務器配置文件;
3.C:\ProgramData\MySQL\MySQL Server 5.5\dat
該目錄下的每個目錄表示一個數據庫,例如該目錄下有一個mysql目錄,那麼說明你的DBMS中有一個名爲mysql的database;
在某個數據庫目錄下回有0–n個擴展名爲frm的文件,每個frm文件表示一個table,不要用文本編輯器打開它,它是有DBMS來讀寫的;
4.my.ini,MySQL最爲重要的配置文件
配置MySQL的端口,默認爲3306,沒有必要時不要修改;
配置字符編碼:
[client]下配置客戶端編碼:default-character-set=gbk
[mysqld]下配置服務器編碼:character-set-server=utf8
配置二進制數據大小上限:
在[mysqld]下配置:max_allowed_packet=8M
5.服務器操作
開啓服務器(必須保證mysql爲windows服務):net start mysql
查看進程表中是否存在:mysqld.exe進程(存在)
關閉服務器(必須保證mysql爲windows服務):net stop mysql
查看進程表中是否存在:mysqld.exe進程(不存在)
6.客戶端操作
打開運行窗口輸入“cmd”
1、登錄服務器:mysql -uroot -proot -hlocalhost
-u:後面跟隨用戶名
-p:後面跟隨密碼
-h:後面跟隨數據庫服務器IP地址,localhost和127.0.0.1表示本機服務器
退出服務器:exit或quit
4、SQL操作
4.1、DDL語句
1.數據庫
查看所有數據庫:SHOW DATABASES
切換(選擇要操作的)數據庫:USE 數據庫名
創建數據庫:CREATE DATABASE [IF NOT EXISTS] mydb1 [CHARSET=utf8]
刪除數據庫:DROP DATABASE [IF EXISTS] mydb1
修改數據庫編碼:ALTER DATABASE mydb1 CHARACTER SET utf8
3、表
創建表:
CREATE TABLE [IF NOT EXISTS] 表名(
列名 列類型,
列名 列類型,
……
列名 列類型
);
查看當前數據庫中所有表名稱:SHOW TABLES;
查看指定表的創建語句:SHOW CREATE TABLE 表名;
查看錶結構:DESC 表名;
刪除表:DROP TABLE 表名;
修改表:前綴爲 ALTER TABLE 表名
a)添加列:
ALTER TABLE 表名 ADD(
列名 列類型,
列名 列類型,
……
);
b)修改類類型(如果被修改的列已存在數據,那麼新的類型可能會影響到已存在數據):ALTER TABLE 表名 MODIFY 列名 列類型;
c)修改列名:ALTER TABLE 表名 CHANGE 原列名 新列名 列類型;
d)刪除列:ALTER TABLE 表名 DROP 列名;
e)修改表名稱:ALTER TABLE 原表名 RENAME TO 新表名;
4.2、DML語句
1.插入數據
INSERT INTO 表名(列名1,列名2,…) VALUES(值1,值2,…);
在表名後給出要插入的列名,其他沒有指定的列等同於插入null值。所以插入記錄總是插入一行;
在VALUES後給出列值,值的順序和個數必須與前面指定的列對應;
在數據庫中所有的字符類型,必須使用單引號,不能使用雙引號,日期類型也要使用單引號
INSERT INTO 表名 VALUES(列值1,值2);
沒有給出要插入的列,那麼表示插入的所有列;
值的個數必須是該表列的個數;
值的順序,必須與表創建時給出的列的順序相同。
2.修改數據
UPDATE 表名 SET 列名1=列值1,列名2=列值2,… [WHERE 條件]
條件(條件可選):
條件必須是一個boolean類型的值或表達式:UPDATE t_person SET gender=‘男’, age=age+1 WHERE sid=‘1’;
運算符:=,!=,<>,>,<,>=,<=,BETWEEN…AND,IN(…),IS NULL,NOT,OR,AND
3.刪除數據
DELETE FROM 表名 [WHERE 條件];
TRUNCATE TABLE 表名:TRUNCATE是DDL語句,它是先刪除drop該表,再create該表,而且無法回滾。
4.3、DCL語句
1.創建用戶
CREATE USER 用戶名@IP地址 IDENTIFIED BY ‘密碼’;
用戶只能在指定的IP地址上登錄
CREATE USER 用戶名@’%’ IDENTIFIED BY ‘密碼’;
用戶可以在任意IP地址上登錄
2.給用戶授權
GRANT 權限1,……,權限n ON 數據庫.* TO 用戶名@IP地址;
給用戶分派在指定的數據庫上的指定權限
例如:GRANT CREATE,ALTER,DROP,INSERT,UPDATE,DELETE,SELECT ON mydb1.* TO user1@localhost;
給user1用戶分派在mydb1數據庫上的CREATE、ALTER、DROP、INSERT、UPDATE、DELETE、SELECT權限
GRANT ALL ON 數據庫.* TO 用戶名@IP地址;
給用戶分派指定數據庫上的所有權限
3.撤銷授權
REVOKE 權限1,……,權限n ON 數據庫.* FROM 用戶名@IP地址;
撤銷指定用戶在指定數據庫上的指定權限
例如:REVOKE CREATE,ALTER,DROP ON mydb1.* FROM user1@localhost;
撤銷user1用戶在mydb1數據庫上的CREATE、ALTER、DROP權限
4.查看權限
SHOW GRANTS FOR 用戶名@IP地址;
查看指定用戶的權限
5.刪除用戶
DROP USER 用戶名@IP地址;
4.4、DQL語句(重點)
DQL語句只會對數據庫查詢,不會修改數據。
1.基本查詢
字段(列)控制
查詢所有列
SELECT * FROM 表名;
其中“”表示所有列
查詢指定列
SELECT 列1[,列2,……列n] FROM 表名;
完全重複的記錄只顯示一次
當查詢結果中的多行記錄完全一樣時,只顯示一行,一般用於查詢某個字段中一共有幾種類型的值。
SELECT DISTINCT * | 列1[,列2,……,列n] FROM 表名;
例如:SELECT DISTINCT sal FROM emp;
查詢員工表的工資,如果存在相同的工資只顯示一次
列運算
數量類型的列可以做加、減、乘、除運算
SELECT ,sal1.5 FROM emp;
字符串做算術運算時,會被當做0來進行運算,在字符串中+號不代表拼接
字符串類型可以做連續運算
SELECT CONCAT(’$’,sal) FROM emp;
轉換NULL值
有時需要把NULL轉換成其他值,例如com+1000時,如果com列存在NULL值,那麼NULL+1000還是NULL,而我們這是希望把NULL當做0來運算。
SELECT IFNULL(comm,0)+1000 FROM emp;
IFNULL(comm,0):如果comm中存在NULL值,那麼當成0來運算;
給列起別名
當使用列運算後,查詢出的結果集中的列名稱不好看,這時我們需要給列名起個別名,這樣在結果集中列名就顯示別名了。
SELECT IFNULL(comm,0)+1000 AS 獎金 FROM emp;
其中AS可以省略
2.條件控制
條件查詢
與前面介紹的UPDATE和DELETE語句一樣,SELECT語句也可以使用WHERE子句來控制記錄。
SELECT empno,ename,sal,comm FROM emp WHERE sal > 1000 AND comm IS NOT NULL;
SELECT empno,ename,sal FROM emp WHERE sal BETWEEN 20000 AND 30000;
SELECT empno,ename,job FROM emp WHERE job IN(‘經理’,‘董事長’);
模糊查詢
當你想查詢姓張,並且姓名一共兩個字的員工時,就可以使用模糊查詢
SELECT * FROM emp WHERE ename LIKE ‘張_’;
模糊查詢需要使用運算符:LIKE,其中匹配一個任意字符,注意,只匹配一個字符而不是多個。
上面語句查詢的是姓張,名字由兩個字組成的員工。
下劃線“_”可以匹配1個字符,如果要匹配0-n個字符,需要用“%”;
SELECT * FROM emp WHERE ename LIKE ‘%剛’;
查詢名字結尾是帶“剛”字的員工。
3.排序查詢
升序
SELECT * FROM emp ORDER BY sal ASC;
按sal排序,ASC升序,DESC降序,其中ASC是可以省略的
降序
SELECT * FROM emp ORDER BY comm DESC;
按comm降序排序查詢
使用多列作爲排序條件
SELECT * FROM emp ORDER BY sal ASC, comm DESC;
使用sal升序排序,如果sal相等,再按照comm降序排序
4.聚合函數
聚合函數用來做某列的縱向運算
COUNT()函數
SELECT COUNT(
) FROM emp;
計算emp表中所有列都不爲NULL的記錄的行數
SELECT COUNT(comm) FROM emp;
計算emp表中comm列不爲NULL的記錄的行數
MAX()函數
SELECT MAX(sal) FROM emp;
查詢最高工資
MIN()函數
SELECT MIN(sal) FROM emp;
查詢最低工資
SUM()函數
SELECT SUM(sal) FROM emp;
查詢所有員工工資的總和
AVG()函數
SELECT AVG(sal) FROM emp;
查詢平均工資
5.分組查詢
分組查詢是把記錄使用某一列進行分組,然後查詢組信息。
例如:查看所有部門的記錄數。
SELECT deptno,COUNT() FROM emp GROUP BY deptno;
使用deptno分組,查詢部門編號和每個部門的記錄數
SELECT job,MAX(sal) FROM emp GROUP BY job;
使用job分組,查詢每種工作的最高工資
組條件
以部門分組,查詢每組記錄數,條件爲記錄數大於3
SELECT deptno,COUNT(
) FROM emp GROUP BY deptno HAVING COUNT() > 3;
6.LIMIT子句(方言)
LIMIT用來限定查詢結果的起始行,以及總行數。
例如:查詢起始行爲第5行,一共查詢3行記錄
SELECT * FROM emp LIMIT 4,3;
其中4表示從第5行開始,其中3表示一共查詢3行。即第5/6/7行記錄。
分頁查詢中計算起始頁的公式:(當前頁-1)每頁記錄數;
例如:每頁顯示10條記錄,查詢第3頁
SELECT * FROM emp LIMIT 20,10;
4.5、DQL語句樣例
查詢出部門編號爲30的所有員工
select * from emp where deptno=30;
查詢所有銷售員的姓名、編號和部門編號
select ename,empno,deptno from emp where job=‘銷售員’;
查詢獎金高於工資的員工
select ename from emp where comm > sal;
查詢獎金高於工資60%的員工
select ename from emp where comm > sal
0.6;
查詢部門編號爲10中所有經理,和部門編號爲20中所有銷售員的詳細資料
select * from emp where (deptno = 10 and job=‘經理’) or (deptno=20 and job=‘銷售員’);
查詢部門編號爲10中所有經理,部門編號爲20中所有銷售員,還有既不是經理又不是銷售員但其工資大於或等於20000的所有員工資料
select * from emp where (deptno = 10 and job=‘經理’) or (deptno=20 and job=‘銷售員’) or (job not in (‘經理’,‘銷售員’) and sal>20000);
查詢無獎金或獎金低於1000的員工
select * from emp where comm is null or comm<1000;
查詢名字由三個字組成的員工
select * from emp where ename like ‘___’;
查詢2000年入職的員工
select * from emp where hiredate like ‘2000-%’;
查詢所有員工詳細信息,用編號升序排序
select * from emp order by empno asc;
查詢所有員工詳細信息,用工資降序排序,如果工資相同使用入職日期升序排序
select * from emp order by sal desc,hiredate asc;
查詢每個部門的平均工資
select deptno,avg(
) 平均工資 from emp group by deptno;
查詢每個部門的僱員數量
select deptno,count() 數量 from emp group by deptno;
查詢每種工作的最高工資、最低工資、人數
select job,max(
) 最高工資,min() 最低工資,count() 人數 from emp group by job;
4、MySQL編碼問題(瞭解)
4.1、查看MySQL數據庫編碼
SHOW VARIABLES LIKE ‘char%’;
4.2、編碼解釋
character_set_client:MySQL使用該編碼來解讀客戶端發送過來的數據,例如該編碼爲utf8,那麼如果客戶端發送過來的數據不是utf8,就會出現亂碼;
character_set_results:MySQL會把數據轉換成該編碼後,在發送給客戶端,例如該編碼爲utf8,那麼如果客戶端不使用utf8來解讀,就會出現亂碼;
4.3、控制檯亂碼問題
插入或修改時出現亂碼:
這是因爲cmd下默認使用GBK,而character_set_client不是GBK的原因,我們只需讓這兩個編碼相同即可;
因爲修改cmd的編碼不方便,所以我們去設置character_set_client爲GBK即可。
查詢出的數據爲亂碼:
這是因爲character_set_results不是GBK,而cmd默認使用GBK的原因,我們只需讓這兩個編碼相同即可;
因爲修改cmd的編碼不方便,所以我們去設置character_set_results爲GBK即可。
設置變量的語句:
set character_set_client=gbk
set character_set_results=gbk
這裏需要注意的是,設置變量只對當前連接有效,當退出窗口後,再次登錄mysql,還需要再次設置變量。爲了一勞永逸,可以在my.ini中設置: default-character-set=gbk
指定默認編碼
我們在安裝MySQL時已經指定了默認編碼爲utf8,所以我們在創建數據庫、創建表時,都無需再次指定編碼。爲了一勞永逸,可以在my.ini中設置:character-set-server=utf8
5、MySQL備份與恢復
5.1、數據庫導出SQL腳本(備份數據庫內容)
mysqldump -u用戶名 -p密碼 數據庫名>生成的腳本文件路徑
例如:mysqldump -uroot -proot mydb1>D:\mydb1.sql
注意,不要分號,不要登錄mysql,直接在cmd下運行,生成的腳本文件中不包含create database語句
5.2、執行SQL腳本(恢復數據)
第一種方式
mysql -u用戶名 -p密碼 數據庫<腳本文件路徑
先刪除mydb1庫,再重新創建mydb1庫,然後執行語句:
mysql -uroot -proot mydb1<D:\mydb1.sql
注意,不要使用分號,不要登錄數據庫,直接在cmd下運行
第二種方式
登錄mysql
source SQL腳本路徑
先刪除mydb1庫,再重新創建mydb1庫,切換到mydb1庫,然後執行語句:source c:\mydb1.sql
6、MySQL約束
約束是添加在列上的,用來約束列的。
6.1、主鍵約束
主鍵約束的特點有:非空、唯一、被引用
當表的某一列被指定爲主鍵後,該列就不能爲空,不能有重複值出現。
1.創建表時指定主鍵的兩種方式:
方法一:
CREATE TABLE stu(
sid CHAR(6) PRIMARY KEY,
snam VARCHAR(20),
age INT,
gender VARCHAR(10)
);
方法二:
指定sid列爲主鍵列,即爲sid列添加主鍵約束
CREATE TABLE stu(
sid CHAR(6),
sname VARCHAR(20),
gender VARCHAR(10),
PRIMARY KEY(sid)
);
指定sid列爲主鍵列,即爲sid列添加主鍵約束
修改表時指定主鍵:ALTER TABLE stu ADD PRIMARY KEY(sid);
刪除主鍵:ALTER TABLE stu DROP PRIMARY KEY;
2.主鍵自增長
因爲主鍵列的特點是:必須唯一,不能爲空,所以我們通常會指定主鍵類爲整型,然後設置其自動增長,這樣可以保證在插入數據時主鍵列的唯一和非空特性。
創建表時指定主鍵自增長
CREATE TABLE stu(
sid INT PRIMARY KEY ATUO_INCREMENT,
sname VARCHAR(20),
age INT,
gender VARCHAR(10)
);
修改表時設置主鍵自增長:ALTER TABLE stu CHANGE sid sid INT AUTO_INCREMENT;
修改表時刪除主鍵自增長:ALTER TABLE stu CHANGE sid sid INT;
測試主鍵自增長:
INSERT INTO stu VALUES(NULL,‘zhangsan’,23,‘male’);
INSERT INTO stu(sname,age,gender) VALUES(‘zhangsan’,23,‘male’);
6.2、非空約束
因爲某些列不能設置爲NULL值,所以可以對列添加非空約束。
例如:
CREATE TABLE stu(
sid INT PRIMARY KEY AUTO_INCREMENT,
sname VARCHAR(20) NOT NULL,
age INT,
gender VARCHAR(10)
);
對sname列設置非空約束
6.3、唯一約束
車庫某些列不能設置重複的值,所以可以對列添加唯一約束。
例如:
CREATE TABLE stu(
sid INT PRIMARY KEY AUTO_INCREMENT,
sname VARCHAR(20) NOT NULL UNIQUE,
age INT,
gender VARCHAR(10)
);
對sname列設置了非空約束
6.4、概念模型
當我們要完成一個軟件系統時,需要把系統中的實體抽取出來,形成概念模型。
例如部門、員工都是系統中的實體。概念模型中的實體最終會成爲Java中的類、數據庫中的表。
對象模型就是java中的class,關係(數據)模型就是指數據庫中的表。
在java中的三種關係是:is a、has a、use a
實體之間還存在着關係,關係有三種:
一對多:例如每個員工都從屬於一個部門,而一個部門可以有多個員工,其中員工是多方,部門是一方;
一對一:列如夫妻關係,只能是一夫一妻;
多對多:例如老師與學生的關係,一個老師可以有多個學生,一個學生可以有多個老師。
概念模型在Java中成爲實體類(JavaBean)
類就使用成員變量來完成關係,一般都是雙向關聯,在多對一雙向中關聯,即部門中關聯員工,員工中也關聯部門。
Java的一對多
class Employee{//多方關聯一方

private Department department;
}
class Deparment{//一方關聯多方

private List empList;
}
Java的一對一
class Husband{

private Wife wife;
}
class Wife{

private Husband husband;
}
Java多對多
class Student{

private List teaList;
}
class Teacher{

private List stuList;
}
對象模型:可以雙向關聯,而且引用的是對象,而不是一個主鍵;
關係模型:只能多方引用一方,而且引用的只是主鍵,而不是一整行記錄。
6.5、外鍵約束
外鍵必須是另一張表(或本表)的主鍵的值,外鍵要引用主鍵;
外鍵可以重複;
外鍵可以爲空;
一張表中可以有多個外鍵;
數據庫多對一關係
從表中的外鍵關聯主表的主鍵
創建主表
CREATE TABLE dept(
deptno INT PRIMARY KEY AUTO_INCREMENT,
dname VARCHAR(50)
);
創建從表
CREATE TABLE emp(
empno INT PRIMARY KEY AUTO_INCREMENT,
ename VARCHAR(50),
dno INT,
CONSTRAINT fk_emp_dept FOREIGN KEY(dno) REFERENCES dept(deptno)
);
數據庫一對一關係
在表中建立一對一關係比較特殊,需要讓從表的主鍵,即是主鍵又是外鍵。
創建主表
CREATE TABLE hasband(
hid INT PRIMARY KEY AUTO_INCREMENT,
hname VARCHAR(50)
);
創建從表
CREATE TABLE wife(
wid INT PRIMARY KEY AUTO_INCREMENT,
wname VARCHAR(50),
CONSTRAINT fk_wife_hasband FOREIGN KEY(wid) REFERENCES hasband(hid)
);
數據庫多對多關係
在表中建立多對多關係需要使用中間表,即需要三張表,在中間表中使用兩個外鍵,分別引用其他兩個表的主鍵。
學生表
CREATE TABLE student(
sid INT PRIMARY KEY AUTO_INCREMENT,

);
老師表
CREATE TABLE teacher(
tid INT PRIMARY KEY AUTO_INCREMENT,

);
中間表
CREATE TABLE stu_tea(
sid INT,
tid INT,
CONSTRAINT fk_stu_tea_sid FOREIGN KEY(sid) REFERENCES student(sid),
CONSTRAINT fk_stu_tea_tid FOREIGN KEY(tid) REFERENCES teacher(tid)
);
7、多表查詢
7.1、多表查詢的分類
合併結果集
連接查詢
子查詢
7.2、合併結果集
要合併的表的結果集,列類型和列數相同
UNION:去除重複行
UNION ALL:不去除重複行
例如:
SELECT * FROM ab
UNION ALL
SELECT * FROM cd;
7.3、連接查詢
1.分類
內連接
外連接
左外連接
右外連接
全外連接(MySQL不支持)
自然連接
2.內連接
直接查詢兩張表會得到笛卡爾集表
方言:SELECT * FROM 表1 別名1,表2 別名2 WHERE 別名1.xx=別名2.xx
標準:SELECT * FROM 表1 別名1 INNER JOIN 表2 別名2 ON 別名1.xx=別名2.xx
自然:SELECT * FROM 表1 別名1 NATURAL JOIN 表2 別名2
內連接查詢出的所有記錄都滿足條件
3.外連接
左外:SELECT * FROM 表1 別名1 LEFT OUTER JOIN 表2 別名2 ON 別名1.xx=別名2.xx
左外即左表爲主,左表記錄無論是否滿足條件都會查詢出來,而右表只有滿足條件才能出來。左表不滿足條件的記錄,右表部分都爲NULL
左外自然:SELECT * FROM 表1 別名1 NATURAL LEFT OUTER JOIN 表2 別名2 ON 別名1.xx=別名2.xx
右外:SELECT * FROM 表1 別名1 RIGHT OUTER JOIN 表2 別名2 ON 別名1.xx=別名2.xx
右表記錄無論是否滿足條件都會查詢出來,而左表只有滿足條件才能查詢出來。右表不滿足條件的記錄,其左表部分都爲NULL
右外自然:SELECT * FROM 表1 別名1 NATURAL RIGHT OUTER JOIN 表2 別名2 ON 別名1.xx=別名2.xx
全連接:
在其他數據庫中使用FULL OUTER JOIN實現全連接,但是MySQL不支持,我們可以使用UNION來完成全連接;
在左外查詢語句和右外查詢語句之間加上UNION,得到左外和右外的結果集,可以間接實現全連接。
7.4、子查詢
子查詢即查詢中包含了查詢
1.出現的位置
WHERE後作爲條件存在
例如:查詢工資最高的員工的詳細信息
SELECT * FROM emp WHERE sal=(SELECT MAX(sal) FROM emp);
FROM後作爲表存在(多行多列)
查詢30號部門員工的編號和姓名
SELECT e.empno,e.ename FROM (SELECT * FROM emp WHERE deptno=30) e;
2.條件
單行單列:SELECT * FROM 表1 別名1 WHERE 列1 [=、>、<、>=、<=、!=] (SELECT 列 FROM 表2 別名2 WHERE 條件);
例如:查詢大於平均工資的所有員工信息
SELECT * FROM emp WHERE sal > (SELECT AVG(sal) FROM emp);
多行單列:SELECT * FROM 表1 別名1 WHERE 列1 [IN、ALL、ANY] (SELECT 列 FROM 表2 別名2 WHERE 條件);
例如:查詢大於30部門所有人工資的員工信息
SELECT * FROM emp WHERE sal > ALL (SELECT sal FROM emp WHERE deptno=30);
單行多列:SELECT * FROM 表1 別名1 WHERE (列1,列2) IN (SELECT 列1,列2 FROM 表2 別名2 WHERE 條件);
例如:查詢公司裏和某員工在用一個部門並且崗位和工資都相同的員工信息
SELECT * FROM emp WHERE (job,deptno,sal) IN (SELECT job,deptno,sal FROM emp WHERE ename=‘張三’);
多行多列:SELECT * FROM 表1 別名1,(SELECT …) 別名2 WHERE 條件;

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章