mysql www.school.com_MySQL 基础学习
1、limit x,y 或 limit z? :選取從x開始的y條數(shù)據(jù)? 或? 選取最開始的 z條數(shù)據(jù)
select * from product limit 0,10
select * from product limit 10
2、like '%N%' : 模糊查詢 查找出含有 ‘N’ 的數(shù)據(jù)
select * from product where product_name like '%餅%'
3、in ('x','y') : 查詢指定字段為x或者y的數(shù)據(jù)
select * from product where warehouse in ('二院店','農(nóng)夫店')
4、between 'x' and 'y' :查詢指定字段間于x,y之間的值 (這些值可以是數(shù)值、文本或者日期)
select * from storage where last_time between '1460937599' and '1460937601' /*在此范圍的*/
select * from storage where last_time not between '1460937599' and '1460937601' /*不在此范圍的*/
5、as : 組合查詢 設置別名
select s.bar_code as bar_code,s.warehouse,s.num as stock,s.last_time,p.supplier from storage as s,product as p where s.bar_code = p.bar_code
6、join :
INNER JOIN,JOIN: 如果表中有至少一個匹配,則返回行
LEFT JOIN: 即使右表中沒有匹配,也從左表返回所有的行
RIGHT JOIN: 即使左表中沒有匹配,也從右表返回所有的行
FULL JOIN: 只要其中一個表中存在匹配,就返回行
inner join:
select s.bar_code as bar_code,s.warehouse,s.num as stock,s.last_time,p.supplier from storage as s inner join product as p on (s.bar_code = p.bar_code)
left join:
select s.bar_code as bar_code,s.warehouse,s.num as stock,s.last_time,p.supplier from storage as s left join product as p on (s.bar_code = p.bar_code)
right join :
select s.bar_code as bar_code,s.warehouse,s.num as stock,s.last_time,p.supplier from storage as s right join product as p on (s.bar_code = p.bar_code)
full join : MySQL 不支持? 可以用 LEFT JOIN ?+ ? UNION ?+ ?RIGHT JOIN 來實現(xiàn)
select s.bar_code as bar_code,s.warehouse,s.num as stock,s.last_time,p.supplier from storage as s left join product as p on(s.bar_code =p.bar_code)union all
select s.bar_code as bar_code,s.warehouse,s.num as stock,s.last_time,p.supplier from storage as s right join product as p on(s.bar_code = p.bar_code)
7、union :?UNION 操作符用于合并兩個或多個 SELECT 語句的結(jié)果集。UNION 內(nèi)部的 SELECT 語句必須擁有相同數(shù)量的列。列也必須擁有相似的數(shù)據(jù)類型。同時,每條 SELECT 語句中的列的順序必須相同。例子如 上面的full join
注釋:默認地,UNION 操作符選取不同的值。如果允許重復的值,請使用 UNION ALL。
8、select into : 用于創(chuàng)建備份表
select s.bar_code as bar_code,s.warehouse,s.num as stock,s.last_time,p.supplier into storage_product_backup from storage as s inner join product as p where s.bar_code = p.bar_code /*未測試*/
9、create database : 如果沒有則創(chuàng)建新的數(shù)據(jù)庫
create database if not exists database_name
10、create table : 如果沒有則創(chuàng)建新的表
create tableif not existsPersons
(
Id_Pint,
LastNamevarchar(255),
FirstNamevarchar(255),
Addressvarchar(255),
Cityvarchar(255)
)
SQL約束
NOT NULL
UNIQUE
PRIMARY KEY
FOREIGN KEY
CHECK
DEFAULT
NOT NULL :不為空
UNIQUE 和 PRIMARY KEY:UNIQUE 約束唯一標識數(shù)據(jù)庫表中的每條記錄。UNIQUE 和 PRIMARY KEY 約束均為列或列集合提供了唯一性的保證。PRIMARY KEY 擁有自動定義的 UNIQUE 約束。請注意,每個表可以有多個 UNIQUE 約束,但是每個表只能有一個 PRIMARY KEY 約束。
CREATE TABLEPersons
(
Id_Pint NOT NULL,
LastNamevarchar(255) NOT NULL,
FirstNamevarchar(255),
Addressvarchar(255),
Cityvarchar(255),UNIQUE(Id_P)
)
如果需要命名 UNIQUE 約束,以及為多個列定義 UNIQUE 約束,請使用下面的 SQL 語法:
ALTER TABLEPersonsADD CONSTRAINT uc_PersonID UNIQUE (Id_P,LastName)
對已存在的表添加約束 ADD UNIQUE
ALTER TABLEPersons
ADD UNIQUE (Id_P)
撤銷 UNIQUE 約束
ALTER TABLEPersonsDROP INDEX uc_PersonID
PRIMARY KEY : 主鍵 ?等價于 唯一 (UNIQUE) 且 非空 (NOT NULL)
FOREIGN KEY :外鍵 一張表的外鍵關聯(lián)另外一張表的主鍵。如果想要在MySQL中根據(jù)參照完整性來建立表并且希望在此基礎上保持良好的性能,最好選擇表結(jié)構(gòu)為innoDB類型。
CHECK : 條件約束
DEFAULT : 默認值
11、Create Index :創(chuàng)建索引
CREATE INDEXPersonIndexON Person (LastName, FirstName)
Drop Index : 刪除索引
12、Alter Table :語句用于在已有的表中添加、修改或刪除列。
13、AUTO INCREMENT :每次插入新記錄時,自動地創(chuàng)建主鍵字段的值。 可以設置起始值(例:100)
CREATE TABLEPersons
(
P_Idint NOT NULLAUTO_INCREMENT=100,
LastNamevarchar(255) NOT NULL,
FirstNamevarchar(255),
Addressvarchar(255),
Cityvarchar(255),PRIMARY KEY(P_Id)
)
14、View : 視圖
/*創(chuàng)建視圖*/
CREATE VIEW view_name AS
SELECTcolumn_name(s)FROMtable_nameWHEREcondition/*更新視圖*/SQLCREATE OR REPLACE VIEWSyntaxCREATE OR REPLACE VIEW view_name AS
SELECTcolumn_name(s)FROMtable_nameWHEREcondition/*刪除視圖*/SQLDROP VIEWSyntaxDROP VIEW view_name
15、SQL 日期:date
下面的表格列出了 MySQL 中最重要的內(nèi)建日期函數(shù):
函數(shù)描述
返回當前的日期和時間
提取日期或日期/時間表達式的日期部分
返回日期/時間按的單獨部分
給日期添加指定的時間間隔
從日期減去指定的時間間隔
返回兩個日期之間的天數(shù)
用不同的格式顯示日期/時間
MySQL 使用下列數(shù)據(jù)類型在數(shù)據(jù)庫中存儲日期或日期/時間值:
DATE - 格式 YYYY-MM-DD
DATETIME - 格式: YYYY-MM-DD HH:MM:SS
TIMESTAMP - 格式: YYYY-MM-DD HH:MM:SS
YEAR - 格式 YYYY 或 YY
16、NULLS:IS NULL 和 IS NOT NULL 用于判斷數(shù)據(jù)表字段NULL值
SELECT LastName,FirstName,Address FROMPersonsWHERE Address IS (NOT) NULL
17、IFNULL()? COALESCE(): 判斷NULL并取值 如果是NULL則取指定值
/*我們可以使用 IFNULL() 函數(shù),就像這樣:*/
SELECT ProductName,UnitPrice*(UnitsInStock+IFNULL(UnitsOnOrder,0))FROMProducts/*或者我們可以使用 COALESCE() 函數(shù),就像這樣:*/
SELECT ProductName,UnitPrice*(UnitsInStock+COALESCE(UnitsOnOrder,0))FROM Products
18、MYSQL 數(shù)據(jù)類型
在 MySQL 中,有三種主要的類型:文本、數(shù)字和日期/時間類型。
Text 類型:
數(shù)據(jù)類型描述
CHAR(size)
保存固定長度的字符串(可包含字母、數(shù)字以及特殊字符)。在括號中指定字符串的長度。最多 255 個字符。
VARCHAR(size)
保存可變長度的字符串(可包含字母、數(shù)字以及特殊字符)。在括號中指定字符串的最大長度。最多 255 個字符。
注釋:如果值的長度大于 255,則被轉(zhuǎn)換為 TEXT 類型。
TINYTEXT
存放最大長度為 255 個字符的字符串。
TEXT
存放最大長度為 65,535 個字符的字符串。
BLOB
用于 BLOBs (Binary Large OBjects)。存放最多 65,535 字節(jié)的數(shù)據(jù)。
MEDIUMTEXT
存放最大長度為 16,777,215 個字符的字符串。
MEDIUMBLOB
用于 BLOBs (Binary Large OBjects)。存放最多 16,777,215 字節(jié)的數(shù)據(jù)。
LONGTEXT
存放最大長度為 4,294,967,295 個字符的字符串。
LONGBLOB
用于 BLOBs (Binary Large OBjects)。存放最多 4,294,967,295 字節(jié)的數(shù)據(jù)。
ENUM(x,y,z,etc.)
允許你輸入可能值的列表。可以在 ENUM 列表中列出最大 65535 個值。如果列表中不存在插入的值,則插入空值。
注釋:這些值是按照你輸入的順序存儲的。
可以按照此格式輸入可能的值:ENUM('X','Y','Z')
SET
與 ENUM 類似,SET 最多只能包含 64 個列表項,不過 SET 可存儲一個以上的值。
Number 類型:
數(shù)據(jù)類型描述
TINYINT(size)
-128 到 127 常規(guī)。0 到 255 無符號*。在括號中規(guī)定最大位數(shù)。
SMALLINT(size)
-32768 到 32767 常規(guī)。0 到 65535 無符號*。在括號中規(guī)定最大位數(shù)。
MEDIUMINT(size)
-8388608 到 8388607 普通。0 to 16777215 無符號*。在括號中規(guī)定最大位數(shù)。
INT(size)
-2147483648 到 2147483647 常規(guī)。0 到 4294967295 無符號*。在括號中規(guī)定最大位數(shù)。
BIGINT(size)
-9223372036854775808 到 9223372036854775807 常規(guī)。0 到 18446744073709551615 無符號*。在括號中規(guī)定最大位數(shù)。
FLOAT(size,d)
帶有浮動小數(shù)點的小數(shù)字。在括號中規(guī)定最大位數(shù)。在 d 參數(shù)中規(guī)定小數(shù)點右側(cè)的最大位數(shù)。
DOUBLE(size,d)
帶有浮動小數(shù)點的大數(shù)字。在括號中規(guī)定最大位數(shù)。在 d 參數(shù)中規(guī)定小數(shù)點右側(cè)的最大位數(shù)。
DECIMAL(size,d)
作為字符串存儲的 DOUBLE 類型,允許固定的小數(shù)點。
* 這些整數(shù)類型擁有額外的選項 UNSIGNED。通常,整數(shù)可以是負數(shù)或正數(shù)。如果添加 UNSIGNED 屬性,那么范圍將從 0 開始,而不是某個負數(shù)。
Date 類型:
數(shù)據(jù)類型描述
DATE()
日期。格式:YYYY-MM-DD
注釋:支持的范圍是從 '1000-01-01' 到 '9999-12-31'
DATETIME()
*日期和時間的組合。格式:YYYY-MM-DD HH:MM:SS
注釋:支持的范圍是從 '1000-01-01 00:00:00' 到 '9999-12-31 23:59:59'
TIMESTAMP()
*時間戳。TIMESTAMP 值使用 Unix 紀元('1970-01-01 00:00:00' UTC) 至今的描述來存儲。格式:YYYY-MM-DD HH:MM:SS
注釋:支持的范圍是從 '1970-01-01 00:00:01' UTC 到 '2038-01-09 03:14:07' UTC
TIME()
時間。格式:HH:MM:SS 注釋:支持的范圍是從 '-838:59:59' 到 '838:59:59'
YEAR()
2 位或 4 位格式的年。
注釋:4 位格式所允許的值:1901 到 2155。2 位格式所允許的值:70 到 69,表示從 1970 到 2069。
* 即便 DATETIME 和 TIMESTAMP 返回相同的格式,它們的工作方式很不同。在 INSERT 或 UPDATE 查詢中,TIMESTAMP 自動把自身設置為當前的日期和時間。TIMESTAMP 也接受不同的格式,比如 YYYYMMDDHHMMSS、YYMMDDHHMMSS、YYYYMMDD 或 YYMMDD。
19、函數(shù)
AVG() : 返回數(shù)值列的平均值。NULL 值不包括在計算中。
SELECT AVG(OrderPrice) AS OrderAverage FROMOrdersSELECT Customer FROMOrdersWHERE OrderPrice>(SELECT AVG(OrderPrice) FROM Orders)
COUNT() : 返回指定列的值的數(shù)目(NULL 不計入)
FIRST() : 返回指定的字段中第一個記錄的值。提示:可使用 ORDER BY 語句對記錄進行排序。
LAST() :返回指定的字段中最后一個記錄的值。提示:可使用 ORDER BY 語句對記錄進行排序。
MAX()? :返回一列中的最大值。NULL 值不包括在計算中。
MIN()? :返回一列中的最小值。NULL 值不包括在計算中。
SUM() :返回數(shù)值列的總數(shù)(總額)
GROUP BY() :用于結(jié)合合計函數(shù),根據(jù)一個或多個列對結(jié)果集進行分組。消除完全相同的結(jié)果行。
HAVING :在使用GROUP BY()時,由于不能與WHERE一起使用,因此使用HAVING替代WHERE。
UCASE() :?把字段的值轉(zhuǎn)換為大寫。
LCASE()? :?把字段的值轉(zhuǎn)換為小寫。
MID() :?用于從文本字段中提取字符,類似截取字符串
SELECT MID(column_name,start[,length]) FROM table_name
參數(shù)描述
column_name
必需。要提取字符的字段。
start
必需。規(guī)定開始位置(起始值是 1)。
length
可選。要返回的字符數(shù)。如果省略,則 MID() 函數(shù)返回剩余文本。
LEN() :?返回文本字段中值的長度
NOW() : 返回當前的日期和時間。
FORMAT() : 用于對字段的顯示進行格式化。
SELECT ProductName, UnitPrice, FORMAT(Now(),'YYYY-MM-DD') asPerDateFROM Products
SELECT FORMAT(column_name,format) FROM table_name
參數(shù)描述
column_name
必需。要格式化的字段。
format
必需。規(guī)定格式。
ROUND() : 用于把數(shù)值字段舍入為指定的小數(shù)位數(shù)。
SELECT ROUND(column_name,decimals) FROM table_name
參數(shù)描述
column_name
必需。要舍入的字段。
decimals
必需。規(guī)定要返回的小數(shù)位數(shù)。
總結(jié)
以上是生活随笔為你收集整理的mysql www.school.com_MySQL 基础学习的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 修复划痕多少钱啊?
- 下一篇: 类似《八十天环游世界》的(小说、书籍、影