MySQL_第三章

來源:互聯網
上載者:User

標籤:null   ted   單行   demo   表結構   最小值   之間   關鍵字   隨機數   

第三章:進階查詢(-)3.1:修改表

3.1.1:修改表

文法:

Alter table <舊錶名> rename [ TO] <新表名>;

例子:Alter table `demo01` rename `demo02`;

3.1.2:添加欄位

文法:

Alter Table 表名 ADD 欄位名  資料類型  [屬性];

 

例子:Alter Table `Demo02` ADD `passWord`  varchar(50) not null;

 

3.1.3:修改欄位

文法:

Alter table 表名 change  原欄位名  新欄位名  資料類型 [屬性];

 

%修改欄位名%

Alter Table  `Demo02`  change  `name`  `username`  char(10)  NOT  NULL;

 

 

3.1.4 刪除欄位

刪除欄位是將資料表中的某個欄位從表中移除:

文法:  ALTER TABLE  表名  DROP 欄位名;

 

 

3.1.5 添加主外鍵

添加主鍵約束

文法:  ALTER TABLE 表名 ADD CONSTRAINT 主鍵名 PRIMARY KEY 表名(主鍵欄位);

添加外鍵約束

文法: ALTER TABLE 表名 ADD CONSTRAINT 外鍵名 FOREIGN KEY (外鍵欄位) REFERENCES 關 聯表名(關聯欄位);

 

3.2 DML語句回顧

3.2.1 插入資料記錄

插入單行資料

文法: INSERT INTO 表名 [(欄位名列表)]  VALUES (值列表);

插入多行資料

文法:INSERT INTO 新表 (欄位名列表) VALUES (值列表1), (值列表2), ......, (值列表n);

 

注意:在是INSERT語句插入記錄時,如果不包含欄位名稱,VALUES後值列表中各欄位的順序必須和表定義中各欄位的順序相同,如果表結構變了(如執行了添加資料操作) 則值列表也要變化,否則會出現錯誤.如果指定了插入的欄位名,就會避免這個問題,因此,建議在插入資料時指定具體欄位名.

 

將查詢結構插入到新表

文法1:

INSERT INTO 新表(欄位1,欄位2,......)

SELECT 欄位1,欄位2,......

FROM 原表;

文法2:

CREATE TABLE 新表 (SELECT 欄位1,欄位2, ........FROM 原表);

 

3.2.2 更新資料記錄

文法:  UPDATE 表名 SET 欄位1=值1,欄位2=值2,........欄位n=值n [WHERE 條件];

 

 

 

3.2.3 刪除資料記錄

文法: DELETE  FROM 表名  [WHERE條件];

文法: TRUNCATE TABLE 表名;

 

3.3 資料查詢

3.3.1 DQL語句回顧

SQL Server中資料查詢語句:

文法: SELECT<欄位名列表>

FROM<表名或視圖>

[WHERE <查詢條件>]

[GROUP  BY  <分組的欄位名>]

[HAVING <條件>]

[ORDER BY  <排序的欄位名> [ASC 或  DESC]];

 

3.3.2 LIMIT子句

文法: SELECT<欄位名列表>

FROM<表名或視圖>

[WHERE <查詢條件>]

[GROUP  BY  <分組的欄位名>]

[ORDER BY  <排序的欄位名> [ASC 或  DESC]]

[LIMIT  [位置位移量, ]行數];

其中:1.位置位移量指從結果集中第幾條資料開始顯示(第一條記錄的位置位移量是0,第2條 是1,....),當省略時從第一條記錄開始顯示.

行數值顯示記錄的條數

3.3.3 常用函數

常用彙總函式:

AVG()  

返回某欄位的平均值

COUNT()

 返回某欄位的行數

MAX()

返回某欄位的最大值

 MIN( )

返回某欄位的最小值

SUM( )

返回某欄位的和

函數名

作用

 

常用的字串函數

函數名

作用

舉例

CONCAT(str1,str2,...,strn)

連接字串str1,str2,...,strn為一個完整字串

SELECT CONCAT(‘My’,’S’,’QL’);

返回:MySQL

INSERT(str,pos,len,newstr)

將字串str從pos位置開始,len個字元長的子串替換為字串newstr

SELECT INSERT(‘這是SQL SERVER資料庫’,3,10,’MySQL’);

返回:這是MySQL資料庫

LOWER(str)

將字串str中所有字元變為小寫

 

UPPER(str)

將字串str中所有字串變為大寫

SELECT UPPER(‘MySQL’);

返回: MYSQL

SUBSTRING(str,num,len)

返回字串str的第num個位置開始長度為len的子字串

 

 

3.時間日期函數

函數名

作用

舉例

CURDATE()

擷取當前日期

SELECT CURDATE();

CURTIME()

擷取目前時間

 

NOW()

擷取當前日期和時間

 

WEEK(date)

返回日期date為一年的第幾周

 

YEAR(date)

返回日期date的年份

 

HOUR(time)

返回時間Time的小時值

 

MINUTE(time)

返回時間Time的分鐘值

 

DATEDIFF(date1,date2)

返回日期參數date1和date2之間相隔的天數

 

ADDDATE(date,n)

計算日期參數date加上n天后的日期

 

 

 

數字函數

函數名

作用

舉例

CEIL(x)

返回大於或等於數值x的最小整數

SELECT CEIL(2.3)

返回:3

FLOOR(x)

返回小於或等於數值x的最大整數

 

RAND()

返回0~1間的隨機數

 

 

3.4 子查詢

3.4.1 簡單子查詢

文法:SELECT ...FROM 表1 WHERE 欄位1 比較子(子查詢);

 

使用AS關鍵字,符合ANSI標準

 SELECT 欄位列表 FROM 表名 AS 表的別名;

使用空格,簡便的方法

 SELECT 欄位列表 FROM 表名 表的別名;

 

3.5 IN和NOT IN 子查詢

3.5.1 IN子查詢

使用子查詢 當返回結果有多條記錄時,則把條件的 =改為 in

IN子查詢後面可跟隨返回多條記錄的子查詢,用於檢測某欄位的值是否存在於某個範圍中.

 

3.5.2  NOT IN子查詢

不在IN子查詢範圍內的其他資料.

MySQL_第三章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.