關係運算符過載(==和!=)
一、檢視資料庫結構
二、SQL語句
SQL語句用於維護管理資料庫,包括資料查詢、資料更新、訪問控制、物件管理等功能。
1、SQL語句分類
- DDL:資料定義語言,用於建立資料庫物件,如庫、表、索引等
- DML:資料操縱語言,用於對錶中的資料進行管理
- DQL:資料查詢語言,用於從資料表中查詢符合條件的資料記錄
- DCL:資料控制語言,用於設定或者更改資料庫使用者或角色許可權
三、建立及刪除資料庫和表
1、建立新的資料庫
2、建立新的表
create table 表名(欄位1 資料型別,欄位2 資料型別[,...][,primary key (主鍵名)]);
主鍵一般選擇能代表唯一性的欄位不允許取空值(NULL),一個表只能有一個主鍵
3、刪除指定表
4、刪除指定資料庫
四、管理表中的資料記錄
1、向資料表中插入新的資料記錄
2、查詢資料記錄
select 欄位1,欄位2,... from 表名 [條件表示式];
3、修改、更新資料表中的資料記錄
update 表名 set 欄位1=欄位值1,欄位2=欄位值2 where 條件表示式;
4、在資料表中刪除指定的資料記錄
delete from 表名 where 條件表示式;
五、修改表名和表結構
1、修改表名
alter table 舊錶名 rename 新表名;
2、擴充套件表結構
alter table 表名add address varchar(50)default ‘地址不詳’;#表示此欄位設定預設值 地址不詳;可與NOT NULL配合使用
3、修改欄位(列)名,新增唯一鍵
alter table 表名 change 舊列名 新列名 資料型別 [unique key];
4、刪除欄位
alter table 表名 drop 欄位名;
5、使用if判斷建立表並測試自增和填充
use bbc; create table if not exists info ( id int(4) zerofill primary key auto_increment, #指定主鍵的第二種方式 name varchar(10) not null, cardid int(18) not null unique key, hobby varchar(50));
分析:
#if not exists:表示檢測要建立的表是否已存在,如果不存在就繼續建立
#int(4) zerofill:表示若數值不滿4位數,則前面用“0”填充,例0001
#auto_increment:表示此欄位為自增長欄位,即每條記錄自動遞增1,預設從1開始遞增;自增長欄位資料不可以重複;自增長欄位必須是主鍵;如新增的記錄資料沒有指定此欄位的值且新增失敗也會自動遞增一次
#unique key:表示此欄位唯一鍵約束,此欄位資料不可以重複;一張表中只能有一個主鍵, 但是一張表中可以有多個唯一鍵
#not null:表示此欄位不允許為NULL
六、資料表的高階操作
1、克隆表,將資料表的資料記錄生成到新的表中
1.1 先複製表再匯入資料
create table test01 like abc; #通過like方法,複製abc表結構生成 test01
insert into test01 select *from abc;
1.2 複製表的同時匯入資料
create table test2 (select *from aab);
show create table test2\G;
select *from test2;
2、清空表,刪除表內的所有資料
2.1 delete刪除
delete from test1;
#DELETE清空表後,返回的結果內有刪除的記錄條目;DELETE工作時是一行一行的刪除記錄資料的;如果表中有自增長欄位,使用DELETE FROM 刪除所有記錄後,再次新新增的記錄會從原來最大的記錄 ID 後面繼續自增寫入記錄。
2.2 truncate刪除
truncate table test1;
#TRUNCATE 清空表後,沒有返回被刪除的條目;TRUNCATE 工作時是將表結構按原樣重新建立,因此在速度上 TRUNCATE 會比 DELETE 清空錶快;使用 TRUNCATE TABLE 清空表內資料後,ID 會從 1 開始重新記錄。
3、建立臨時表
create temporary table 表名(欄位1 資料型別,欄位2 資料型別,...[,primary key (主鍵名)]);
臨時表建立成功之後,使用SHOW TABLES命令是看不到建立的臨時表的,臨時表會在連線退出後被銷燬。 如果在退出連線之前,也可以可執行增刪改查等操作,比如使用 DROP TABLE 語句手動直接刪除臨時表。
create temporary table test03 ( id int(4) zerofill primary key auto_increment, name varchar(10) not null, cardid int(18) not null unique key, hobby varchar(50)); insert into test03 values(1,'zhangsan',123456,'running'); select * from test03; show tables; quit select * from test03;
4、建立外來鍵約束,保證資料的完整性和一致性
主鍵表和外來鍵表的理解:
(1)以公共關鍵字作主鍵的表為主鍵表(父表、主表)
(2)以公共關鍵字作外來鍵的表為外來鍵表(從表、外表)
注意:與外來鍵關聯的子表的欄位必須設定為主鍵。要求主表外來鍵欄位和子表的欄位具備相同的資料型別、字元長度和約束。
4.1 建立主鍵表和從表
4.2 為主鍵表新增一個主鍵約束。主鍵名建議以“PK_”開頭。
alter table live add constraint PK_id primary key(
id
);
4.3 為從表新增外來鍵,外來鍵名建議以“FK_”開頭,並與主鍵表建立關聯
為 det表新增外來鍵,並將 det表的id 欄位和 live表的 id 欄位建立外來鍵關聯。外來鍵名建議以“FK_”開頭。
alter table det add constraint FK_id foreign key (
id
) references live(id);
4.4 插入新的資料記錄時,要先主表再從表
4.5 刪資料記錄時,要先從表再主表,也就是說刪除主表時,必須先刪除其他與之關聯的表
4.6 檢視和解除外來鍵約束以及刪除外來鍵;
show create table det; alter table det drop foreign key FK_hob; alter table det drop key FK_hob; desc det;
4.7 外來鍵的定義
如果同一個屬性欄位x在表一中使主鍵,而在表二中不是主鍵,則欄位x稱為表二的外來鍵
4.8 MySQL中6種常見的約束
主鍵約束(primary key)
外來鍵約束(foreign key)
非空約束(not null)
唯一性約束(unique[key|index])
預設值約束(default)
自增約束(auto_increment)