mysql 可視化界面操作指令


1.讓自增長從新開始

ALTER TABLE users auto_increment =1;//讓表中的自增長從新從0開始

2.條件查詢

SELECT name from  users WHERE id =1;//查詢users表中ID為1的數據

3.增加字段

ALTER  table  users add city  char (20);// 在users 表中增加city字段

4.在一個字段前面添加一個字段(在name后面添加一個字段)

ALTER  table  users add province  char (20) AFTER name;

5.增加時間字段

選擇datetime類型

6.外鍵的約束

a.可以明確聲明表與表之間的參照關系,是數據庫幫我們維護這種關系,

b.如果后序操作破壞這種外鍵約束,這時候數據庫就會阻止這中情況執行。

c.(1.字表中插入一條數據,如果引用字段在父表中不存在,會被阻止。2.刪除父表中的某一條記錄,如果字表中存在該記錄的引用,則刪除會被阻止。)

————references 引用(參照)

————子表:引用表(emp 是子表)

————父表:被引用表(dep 是父表)

7.通過創建表加外鍵

create table dep(//父表

   id int primary key auto_increment,

   name varchar(30)

);

create table emp(//子表

   id int primary key auto_increment,

   name varchar(30),

   dep_id int ,

   foreign key (dep_id)references dep(id)

);

insert into dep values (null,"財務部"),(null,"人事部"),(null,"行政部"),(null,"科技部");

insert into emp values (null,"張三",1),(null,"李四",2),(null,"王五",3),(null,"周六",4),(null,"張全蛋",5);

8.通過修改表加外鍵

create table emp(

    id int primary key auto_increment,

    name varchar(30),

    dep_id int

);

//添加外鍵

alter table emp add constraint fk_name foreign key (dep_id)references dep (id);

9.查詢外鍵名稱

show create table emp;//emp是子表

10.刪除外鍵

alter table emp drop foreign key (fk_name);

11.關系設計(數據表與數據表)

一對一:教室 & 班級   可以在任意一方保存另一方的主鍵作為外鍵。

一對多 : 學生& 班級  在多的一方,設計外鍵保存另一方的ID

多對多 : 學生& 老師  需要一個第三方關系表來存儲兩張表的主鍵,用於表示它們之間的對應關系

12.查詢兩張表的笛卡爾積

select * from emp,dep;

13.內連接查詢

select  * from emp, dep where dep.id = emp.dep_id;

select * from emp inner join dep on dep.id =emp.dep_id; 

select * from emp inner join dep where dep.id =emp.dep_id;

14.左外連接查詢(在內連接的基礎上增加上左邊表有而右邊表沒有的記錄)

select * from emp left join dep on dep.id = emp.dep_id;

15.右外連接查詢(在內連接的基礎上增加上右邊表有而左邊表沒有的記錄)

select * from emp right join dep on dep.id = emp.dep_id;

16.全外連接查詢(內連接以外的)mysql 不支持該語法

select * from emp full join dep on dep.id = emp.dep_id;

17.mysql 全外使用union 操作完成

select * from emp lefe join dep on dep.id = emp.dep_id

union 

select * from emp right join dep on dep.id = emp.dep_id;

 18.帶in關鍵字的子查詢

例:查詢存在年齡為20 的員工的部門名稱

//如果部門id 在in后面的集合里面,就查詢出該id對應的部門名稱

//select dep_id from emp where age=20查詢出年齡=20的員工部門id的集合

select d.name as '部門名稱' from department as d where id in(select dep_id from emp where age=20);

19.帶not in關鍵字的子查詢

例:查詢不存在年齡為20的員工的部門名稱

select d.name as '部門名稱' from department as d where id not in(select dep_id from emp where age=20);

20.帶exists關鍵字的子查詢

例:查詢是否存在年齡小於18的 員工,如果有則查詢department表中的所有記錄

//如果說括號里面查詢出來的結果不為空,就會執行前面的查詢,否則不執行。

select * from department where exists (select * from employee where age<18);

21.帶any 關鍵字的子查詢

例:查詢department表中的id 大於employee 表中所有記錄dep_id 至少一個的所有記錄

//只有括號查詢結果里面有至少一個小於,就要執行前面的查詢結果

select * from department where id>any (select dep_id from employee);

22.帶all 關鍵字的子查詢

例:查詢department 表中的所有id 大於employee 表中的所有記錄

 

mysql>  select * from department where  id>all(select dep_id from emp);

23.事物:邏輯上的一組操作,要么同時完成,要么同時不完成。

24.自定義事物(提交事物)

start transaction;//開始事物

update bank_account set money=money-100 where name='a';

update bank_account set money=money+100 where name='b';

commit;

//當事物在沒有commit(提交)事務里面的sql語句執行成功不會立刻產生效果(這是因為mysql默認的隔離級別為repeatable read),事務提交(commit)后才能對數據產生效果。

25.自定義事物(回滾事物)

start transaction;//開始事物

update bank_account set money=money-100 where name='a';

update bank_account set money=money+100 where name='b';

rollback;

//rollback(回滾),讓事物開始后的sql 語句執行效果失效

//事物執行過程中意外中斷會默認執行事物的回滾(rollback)操作;

26.事物的四大特性:ACID(數據庫自帶的功能,除隔離性之外,都不需要我們自己維護)

1.原子性(Atomicity):事物是一組不可分割的單位,要么一起成功要么一起失敗。

2.一致性(Consistency):事物前后的數據完整性應該保持一致。(滿足所有約束)

3.隔離性(Isolation):多個用戶同時操作事物,事物之間互不干擾。

4.持久性(Durability):事務一旦提交,就能對數據永久改變,不會因為中途中斷而被影響。(一旦commit;就不能rollback;)

27.四大隔離級別:

1.read uncommitted;不做任何隔離

2.read committed;只能防止脹度。

3.repeatable read;可以防止脹讀,不可以重復讀,但是不能防止虛讀(幻讀)。(mysql默認是這個級別)

4.serializable; 數據庫運行串行化,所有問題都不會產生,但是性能低。

安全性越高,性能越低:

從安全性:4>3>2>1

從性能:1>2>3>4

對於隔離級別,默認的最好。

28.修改數據庫的隔離級別:

1.set tx_isolation='READ-UNCOMMITTED';
2.set tx_isolation='READ-COMMITTED';
3.set tx_isolation='REPEATABLE-READ';
4.set tx_isolation='SERIALIZABLE';

29.查詢當前數據庫的隔離級別

select @@tx_isolation;

30.脹讀:一個事務讀取到另一個事務未提交的數據.

31.不可重復讀:一個事務多次讀取同一條記錄,讀取到不同結果。(一個事務讀取到另一個事務已經提交的數據)

32.幻讀(虛度)問題:一個事務多次查詢表中的多條數據,由於其他事務增加(刪除)造成多次查詢的結果不同,的時候有時能出現,有時不能出現。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM