mysql行级视图与列级视图_[数据库]--DML、DDL、TCL语言
DML語言(數據操作語言)
1.插入語句insert
語法1:
insert into 表名(列名...) values(值...)
注意:
1.插入的值的字段必須和值匹配
2.插入的值的類型必須和字段的數據類型一致
3.不可以為null(非空)的列必須插入值
可以為null的列如何插入數據信息
(1)給出列名并填寫null值
(2)列名和值名都不寫
4.列的順序可以進行調換(數值順序也要跟隨列內容調換)
5.列數和值的個數一致與否
6.可以省略列名,默認所有列,
一定要注意插入信息列的順序和表中的列的順序一致
語法2:
insert into 表名 set 列名=值,......
兩種寫法的區別,第一種插入數據寫法支持:
1.批量添加數據
2.支持子查詢
2.修改語句update
修改表記錄
(1)修改單表記錄
對于單個或者多個列名都可以修改相應的值
語法:
update 表名
set 列名=值,列名=值...
where 篩選條件;
(2)修改多表記錄
注意:表必須寫別名
語法:
sql92標準:
update 表1 別名,表2 別名
set 列=值......
where 連表條件
and 篩選條件;
sql99標準:
update 表1 別名
inner/left/right 表2 別名
on 連表條件
set 列=值......
where 篩選條件;
3.刪除語句delete、truncate
(1)delete:整行刪除,一刪一行
1.1單表刪除
語法:
delete from 表名 where 篩選條件;
1.2多表刪除
語法:
sql92標準:
delete 表1 別名,表2 別名
from 表名
where 連表條件
and 篩選條件;
sql99標準:
delete 表1 別名,表2 別名
from 表1 別名,
inner/left/right 表2 別名
on 連表條件
where 篩選條件;
(2)truncate:整表刪除(清空整表)
語法:
TRUNCATE TABLE 表名;
delete和truncate的區別:
1.delete可以加where 篩選條件,truncate不能加
2.truncate刪除的效率高
3.假如需要刪除的表中有自增長列
如果用delete刪除后,再插入數據,自增長列的值從斷點開始。
用truncate刪除后,再插入數據,自增長列的值從1開始
4.truncate刪除沒有返回值,delete刪除有返回值
5.truncate刪除不能回滾,delete刪除能回滾
DDL語言(數據定義語言)
創建 create
修改 alter
刪除 drop
1.庫的管理
創建
CREATE DATABASE IF NOT EXISTS books;
修改庫名
RENAME DATABASE 舊庫名 TO 新庫名;
修改庫的字符集
ALTER DATABASE 庫名 CHARACTER SET 字符集;
刪除
DROP DATABASE 庫名;
2.表的管理
創建
語法:
CREATE TABLE 表名(
列名 列的類型[(長度),約束]
列名 列的類型[(長度),約束]
列名 列的類型[(長度),約束]
......);
修改
(1)修改表名
ALTER TABLE 舊表名 RENAME TO 新表名;
(2)修改列名
ALTER TABLE 表名 CHANGE COLUMN 舊列名 新列名 列的類型;
(3)修改列的類型
ALTER TABLE 表名 MODIFY COLUMN 列名 新類型;
(4)添加新列add
ALTER TABLE 表名 ADD COLUMN 新列名 類型;
(5)刪除列drop
ALTER TABLE 表名 DROP COLUMN 列名;
刪除表
DROP TABLE IF EXISTS 表名;
復制
復制表的結構
CREATE TABLE copy LIKE 表名;
復制表的結構和數據
CREATE TABLE copy2 SELECT * FROM 表名;
復制表的部分數據
CREATE TABLE copy3 SELECT 字段1,字段2 FROM 表名 WHERE nation='中國';
復制表的部分字段
CREATE TABLE copy4 SELECT 字段1,字段2 FROM 表名 WHERE 1=2;
3.完整性約束:
3.1主鍵約束
表中有一列或者多列的組合,要求主鍵字段的數據的唯一性,并且不能為空。
單字段約束:
在定義字段的同時定義主鍵
字段名 數據類型 primary key
->字段名1 數據類型(字段約束條件) primary key,
在定義完字段后定義主鍵
primary key(字段名);
多字段約束:
primary key(字段名1,字段名2,...)
3.2主鍵自增約束:
每次插入新的信息時,系統會自動遞增生成字段的主鍵值
在一個表上自動遞增的字段只有一個
字段名 數據類型 primary key auto_increment;
3.3外鍵約束:
外鍵就是在不同的表之間建立鏈接,一個表可以有一個或者多個外鍵
外鍵不一定是本表的主鍵,但對應的是另一個表的主鍵
與外鍵關聯的字段不允許被刪除,如果必須要刪除首先要將外鍵撤銷
foreing key(字段名) reference 主表名(主鍵字段);
3.4非空約束:
字段值不能為空
字段名 數據類型 not null;
3.5唯一性約束:
對某字段使用此約束,允許為空,但是只出現一個空值
字段名 數據類型 unique;
4.約束
含義:一種限制,用來限制表中的數據,為了保證數據的可靠性和準確性
常見約束(六大約束)
NOT NULL:非空約束,用來保證該字段對應的值不能為空(姓名、學號)
DEFAULT:默認約束,用來保證該字段有默認值(性別)
PRIMARY KEY:主鍵約束,用來保證該字段的值具有唯一性,并且非空(員工編號),約束性最強
UNIQUE:唯一約束,保證該字段的值具有唯一性,對應的值能為空(座位號)
CHECK:檢查約束,【mysql中不支持check約束】(性別) 約束性條件
FOREIGN KEY:外鍵約束,用來限制兩個表的關系
要有保證兩表連接的字段
用來保證該字段的值必須來自于主表的關聯列
CREATE TABLE 表名(
字段名1 字段類型 列級約束
字段名2 字段類型 列級約束
表級約束
)
4.1添加約束的時機:
1.創建表時
2.修改表時
4.2約束的分類:
1.列級約束
支持六大約束,外鍵約束沒有效果
2.表級約束
除了非空、默認約束以外其他都支持
4.3創建表時添加約束:
4.3.1列級約束:直接在字段名和類型后面追加約束類型
支持默認、非空、唯一、主鍵
4.3.2表級約束:在所有字段的最后面
CONSTRAINT 約束名 約束類型(字段名)
4.4修改表時添加約束:
4.4.1列級約束:
ALTER TABLE 表名 MODIFY COLUMN 字段 字段類型 新約束;
4.4.2表級約束:
ALTER TABLE 表名 ADD 新約束(字段);
4.5修改表時刪除約束
4.5.1刪除外鍵約束
ALTER TABLE 表名 DROP FOREIGN KEY 外鍵連接名;
5.標識列
含義:類似于約束的自增長列
可以不用手動插入值,系統提供默認的序列值
auto_increment_increment 每次增長的步長值
auto_increment_offset 偏移量(起始值)
特點:1.一個表里的標識列至多只有一個
2.標識列不一定和主鍵一起使用
標識列必須和約束一起使用
3.標識列可以進行數據設置
SET auto_increment_increment=步長值
添加標識列的時機:
1.創建表時
CREATE TABLE tab_indentity(
id INT PRIMARY KEY auto_increment,
NAME VARCHAR(20)
);
2.修改表時
ALTER TABLE 表名 MODIFY COLUMN 字段 約束 auto_increment;
3.修改表時刪除標識列
ALTER TABLE 表名 DROP 約束 auto_increment;
TCL語言(事務控制語言)
1.事務:一個或者一組sql語句組成一個執行單元,這個執行單元
要么全部不執行,相互依賴
2.事務處理
數據庫的存儲引擎
回滾:事務執行失敗,所有受到影響的數據將回到事物開始之前的狀態
反之如果單元中的所有sql語句都執行成功,則事務被順利執行
3.事務的特性ACID:
3.1原子性(Atomicity)
一個事物不可分割,執行單元要么全部執行,要么全部不執行
3.2一致性(Consistency)
一個事物會使數據從一個統一狀態切換到另一個統一狀態
3.3隔離性(Isolation)
事物之間的各自sql語句執行過程不受其他事物打擾
3.4持久性(Durability)
一個事物一旦提交,則會永久的改變數據庫的數據
4.事物創建
檢查事務提交的狀態
4.1隱式事務的創建:事務沒有明顯的開啟和結束的標記
insert update delete
4.2顯式事務的創建:事務有明顯的開啟和結束的標記
1.注意,顯式事務的創建之前必須禁用自動提交功能
SET autocommit=0;
2.開啟事務
SET autocommit=1;
START TRANSACTION;(可選)
3.編寫事務中sql語句(select insert update delete)
語句一;
語句二;
......
4.結束事務
Rollback;回滾
Commit;提交
Savepoint;設置節點保存
5.視圖的講解
含義:虛擬的表,和數據庫中普通表一樣使用
創建:
create view 視圖名
as
查詢語句;
刪除:
DROP VIEW 視圖名
本文地址:https://blog.csdn.net/qq_45207305/article/details/107419072
如您對本文有疑問或者有任何想說的,請點擊進行留言回復,萬千網友為您解惑!
總結
以上是生活随笔為你收集整理的mysql行级视图与列级视图_[数据库]--DML、DDL、TCL语言的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mysql php遍历数据6_PHP 循
- 下一篇: linux cmake编译源码,linu