sql语句增删改查与子查询
修改表
修改表
語法:
Alter table <舊表名> rename [ TO] <新表名>;
例子:Alter table `demo01` rename `demo02`;
添加字段
語法:
Alter Table 表名 ADD 字段名? 數據類型? [屬性];
?
例子:Alter Table `Demo02` ADD `passWord`? varchar(50) not null;
?
修改字段
語法:
Alter table 表名 change? 原字段名? 新字段名? 數據類型 [屬性];
?
%修改字段名%
Alter Table? `Demo02`? change? `name`? `username`? char(10)? NOT? NULL;
?
?
?刪除字段
刪除字段是將數據表中的某個字段從表中移除:
語法:? ALTER TABLE? 表名? DROP 字段名;
?
?
添加主外鍵
1.添加主鍵約束
語法:? ALTER TABLE 表名 ADD CONSTRAINT 主鍵名 PRIMARY KEY 表名(主鍵字段);
2.添加外鍵約束
語法: ALTER TABLE 表名 ADD CONSTRAINT 外鍵名 FOREIGN KEY (外鍵字段) REFERENCES 關?? 聯表名(關聯字段);
?
DML語句回顧
?插入數據記錄
1.插入單行數據
語法: INSERT INTO 表名 [(字段名列表)]? VALUES (值列表);
2.插入多行數據
語法:INSERT INTO 新表 (字段名列表) VALUES (值列表1), (值列表2), ......, (值列表n);
?
注意:在是INSERT語句插入記錄時,如果不包含字段名稱,VALUES后值列表中各字段的順序必須和表定義中各字段的順序相同,如果表結構變了 (如執行了添加數據操作) 則值列表也要變化,否則會出現錯誤.如果指定了插入的字段名,就會避免這個問題,因此,建議在插入數據時指定具體字段名.
?
3.將查詢結構插入到新表
語法1:????
INSERT INTO 新表(字段1,字段2,......)
SELECT 字段1,字段2,......
FROM 原表;
語法2:
CREATE TABLE 新表 (SELECT 字段1,字段2, ........FROM 原表);
?
?更新數據記錄
語法:? UPDATE 表名 SET 字段1=值1,字段2=值2,........字段n=值n [WHERE 條件];
?
?
?
?刪除數據記錄
語法: DELETE? FROM 表名? [WHERE條件];
語法: TRUNCATE TABLE 表名;
?
數據查詢
DQL語句回顧
SQL Server中數據查詢語句:
語法:??????? SELECT<字段名列表>
FROM<表名或視圖>
[WHERE <查詢條件>]
[GROUP? BY? <分組的字段名>]
[HAVING <條件>]
[ORDER BY? <排序的字段名> [ASC 或? DESC]];
?
LIMIT子句
語法:??????? SELECT<字段名列表>
FROM<表名或視圖>
[WHERE <查詢條件>]
[GROUP? BY? <分組的字段名>]
[ORDER BY? <排序的字段名> [ASC 或? DESC]]
[LIMIT? [位置偏移量, ]行數];
其中:1.位置偏移量指從結果集中第幾條數據開始顯示(第一條記錄的位置偏移量是0,第2條?? 是1,....),當省略時從第一條記錄開始顯示.
2.行數值顯示記錄的條數
常用函數
常用聚合函數:
| 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天后的日期 | ? |
?
?
4.數字函數
| 函數名 | 作用 | 舉例 |
| CEIL(x) | 返回大于或等于數值x的最小整數 | SELECT CEIL(2.3) 返回:3 |
| FLOOR(x) | 返回小于或等于數值x的最大整數 | ? |
| RAND() | 返回0~1間的隨機數 | ? |
?
?子查詢
?簡單子查詢
語法:SELECT ...FROM 表1 WHERE 字段1 比較運算符(子查詢);
?
使用AS關鍵字,符合ANSI標準
?SELECT 字段列表 FROM 表名 AS 表的別名;
使用空格,簡便的方法
?SELECT 字段列表 FROM 表名 表的別名;
?
?IN和NOT IN 子查詢
?IN子查詢
使用子查詢 當返回結果有多條記錄時,則把條件的 =改為 in
IN子查詢后面可跟隨返回多條記錄的子查詢,用于檢測某字段的值是否存在于某個范圍中.
?
?NOT IN子查詢
不在IN子查詢范圍內的其他數據.
轉載于:https://www.cnblogs.com/invincibleDeng/p/7605111.html
總結
以上是生活随笔為你收集整理的sql语句增删改查与子查询的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: LeetCode 445 分发饼干
- 下一篇: python中获取目录下所有文件名以及读