推薦學習:
#首先簡單的建立一個student表為後序操作做準備 use test; create table student ( id int, name varchar(8), age tinyint ) engine = innodb default charset = utf8mb4; desc student;
alter table student add addr varchar(20); #新增一個addr列出來
alter table student modify addr varchar(15); #修改student表中addr列的資料型別 (長度修改) alter table student modify addr char(20); #修改student表中addr列的資料型別 (型別修改為char(20))
alter table student change addr stu_addr varchar(20); # change 相比 modify 而言功能更加強大可以修改列名字. # modify不可以修改列名
alter table student drop stu_addr; # 刪除student表中的stu_addr列
insert into student(id, name, age) values(1000, '張三', 18); # 向student表中插入一條id 為1000 name 為張三, age 18的記錄
insert into student(id, name, age) values(1001, '李四', 20), (1002, '王五', 22), (1003, '胖子', 25); #還可以支援values後面跟上多條記錄 #每條記錄之間使用,隔開
insert into student values(1004, '李四他爸', 47), (1005, '王五它媽', 40), (1006, '胖子它老特', 20); #可以向這樣不指定任何欄位,預設順序插入所有欄位
小結插入操作注意事項:
update student set name = '胖子他爹' where id = 1005; # 跟新student表中id = 1005這條記錄的name為胖子他爹
update student set name = '我是你爸', age = 100 where id = 1005; # 跟新student表中id = 1005這條記錄的name為我是你爸, age為100
小結跟新記錄操作注意事項:
delete from student where id = 1005; # 從student 表中刪除id=1005這條記錄
delete from student where name = '胖子' # 從student 表中刪除name=胖子這條記錄
記錄的增刪改查操作還是有好好練習的必要性的, 因為關於資料庫特定記錄的修改刪除增添等操作還是蠻常見的
#模擬這樣一個場景, 每一頁5條資料 select * from student limit 0, 5; # 第一頁 select * from student limit 5, 5; # 第二頁 select * from student limit 10, 5; # 第三頁
-- 後臺計算出頁碼、頁數(頁大小) -- 分頁需要的相關資料結果分析如下, -- 注意:下列是虛擬碼不用於執行 int curPage = 2; -- 當前頁數 int pageSize = 5; -- 每頁顯示數量 int startRow = (curPage - 1) * pageSize; -- 當前頁, 記錄開始的位置(行數)計算
create table user_table( id int primary key, #新增主鍵約束 name varchar(10), age tinyint ) engine = innodb charset = utf8mb4;
insert into user_table values(1001, '翠花', 18); #插入第一條記錄翠花是沒有問題的 insert into user_table values(1001, '王五', 20); #插入這條記錄應當是報錯, 重複插入主鍵了 # [Err] 1062 - Duplicate entry '1001' for key 'PRIMARY' # 重複加入1001 作為主鍵
insert into user_table values(null, '大胖', 30); # 區別唯一約束, 主鍵約束不可以為null #[Err] 1048 - Column 'id' cannot be null
create table persons ( pid int, lastname varchar(255), firstname varchar(255), address varchar(255), constraint persons_pk primary key(lastname, firstname) #通過constraint 增添聯合主鍵 ) engine = innodb default charset = utf8mb4;
alter table user_table add constraint name_id_pk primary key(name, id); # 向user_table表中增加一個name + id的聯合主鍵
alter table user_table drop primary key; # 刪除user_table表中的主鍵約束
格式: 欄位名 整數型別[長度][約束] auto_increment
create table test( id int primary key auto_increment, # 新增一個主鍵約束, 設定自動增長. 預設增長為1 age tinyint, name varchar(20) ) engine = innodb default charset = utf8mb4;
insert into test values(null, 18, '小呼嚕'); # 我們設定了主鍵自動遞增可以不再需要傳入主鍵欄位 # 或者主鍵傳入null 他會自動設定從1開始預設增量1
drop table test; create table test( id int primary key auto_increment, name varchar(10) not null,#設定非null 插入資料不能傳入null age tinyint ) engine = innodb auto_increment = 10 default charset = utf8mb4; # 我們還可以向這般指定auto_increment的值
insert test values(null, null, 28); # 會出錯, 第二個欄位增加了not null 約束 # 傳空會報錯[Err] 1048 - Column 'name' cannot be null
alter table test modify name varchar(10); # 非常簡單的方式, 直接更改資料型別的不加null約束即可 desc test;
注意:
drop table test; create table test ( id int unique, # 新增一個唯一約束 name varchar(20) not null, age tinyint ) engine = innodb default charset = utf8mb4; desc test;
insert into test values(null, '張三', 19); # 允許傳入null 區別primary key insert into test values(1, '李四', 30), (1, '王五', 38); #報錯[Err] 1062 - Duplicate entry '1' for key 'id'
CREATE TABLE persons ( pid INT, lastname VARCHAR(255), firstname VARCHAR(255), address VARCHAR(255) DEFAULT '香港' -- 新增預設約束 )engine = innodb default charset = utf8mb4;
# 傳入null 則會按照default 賦值 insert into persons(pid, lastname, firstname) values(2, '德華', '劉'); # 或者指定欄位, default欄位可以不用傳入val
alter table 表名 add 列名 型別(長度) 新增一列
alter table 表名 modify 列名 oldtype newtype 針對一列僅僅只做型別修改
alter table 表名 change old列名 new列名 oldtype newtype 針對一列可做型別 + 列明修改
alter table 表名 drop 列名; 針對一列做刪除操作
insert into 表名(指定欄位) values(指定值), (指定值); 指定插入欄位值 (插入記錄)
insert into 表名 values(所有欄位順序寫入值); 按照建表欄位順序插入欄位值
update 表名 set 欄位 = 值 where 條件指定記錄 更改記錄
delete from 表名 where 條件指定記錄 從指定表中刪除滿足條件的記錄
約束就是一種限制
主鍵約束 (相當於是 unique 約束 + 非 null約束的結合), 用來唯一標識表中的記錄
unique 約束, 也是保持不可重複, 列欄位值唯一, 但是允許為null
非 null 約束. 就是不允許為null 不可以傳入null作為引數
預設約束, 如果傳入null 就預設欄位值為初始預設值
朋友們,雖然今日介紹的東西不難, 但是簡單的東西我們需要下細的掌握, 可以的話還是儘量測試一下, 祝大家學業有成,工作升職加薪
推薦學習:
以上就是mysql總結分享之DML進階、分頁查詢、SQL約束及多表操作的詳細內容,更多請關注TW511.COM其它相關文章!