一、mysql讓兩個表中的兩個字段不能重復的方法
1、創建表時定義組合UNIQUE約束
要讓兩個表中的兩個字段不能重復,可以使用組合UNIQUE約束。組合UNIQUE約束是指在一個表中定義多個字段的UNIQUE約束,以實現特定的少數性限制。在創建表時就對里面的字段定義UNIQUE約束。例如,創建一個名為A的表,并定義兩個字段(a1和a2),要求a1和a2的值不能同時出現兩次。可以使用以下SQL語句:
CREATE TABLE A ( a1 int, a2 int, UNIQUE (a1, a2));
上述命令創建了一個包含名為a1和a2的兩個整數類型字段的A表,并在這兩個字段上定義了一個組合UNIQUE約束。這意味著當在表中插入新的行時,a1和a2的組合值必須是少數的。
2、修改現有表添加組合UNIQUE約束
如果存在已經創建的表,并且需要對現有字段進行組合UNIQUE約束,則可以使用ALTER TABLE命令進行修改。例如,A表已經存在,但需要將a1和a2定義為組合UNIQUE約束,則可以使用以下SQL語句:
ALTER TABLE AADD CONSTRAINT uc_a1_a2 UNIQUE (a1, a2);
上述命令在A表中添加了一個名為uc_a1_a2的組合UNIQUE約束,限制了a1和a2的組合值必須是少數的。使用組合UNIQUE約束可以限制表中兩個字段的少數性。當嘗試插入重復記錄時,MySQL會拋出一個錯誤,并阻止插入操作。
二、mysql介紹
1、簡介
MySQL是一個關系型數據庫管理系統,由瑞典MySQL AB公司開發,屬于 Oracle 旗下產品。MySQL是最流行的關系型數據庫管理系統之一,在 WEB 應用方面,MySQL是較好的 RDBMS(Relational Database Management System,關系數據庫管理系統)應用軟件之一。MySQL是一種關系型數據庫管理系統,關系數據庫將數據保存在不同的表中,而不是將所有數據放在一個大倉庫內,這樣就增加了速度并提高了靈活性。MySQL所使用的 SQL 語言是用于訪問數據庫的最常用標準化語言。MySQL軟件采用了雙授權政策,分為社區版和商業版,由于其體積小、速度快、總體擁有成本低,尤其是開放源碼這一特點,一般中小型和大型網站的開發都選擇 MySQL作為網站數據庫。
1、應用環境
與其他的大型數據庫例如?Oracle、DB2、SQL Server等相比,MySQL自有它的不足之處,但是這絲毫也沒有減少它受歡迎的程度。對于一般的個人使用者和中小型企業來說,MySQL提供的功能已經綽綽有余,而且由于 MySQL是開放源碼軟件,因此可以大大降低總體擁有成本。
Linux作為操作系統,Apache?或Nginx作為?Web?服務器,MySQL 作為數據庫,PHP/Perl/Python作為服務器端腳本解釋器。由于這四個軟件都是免費或開放源碼軟件(FLOSS),因此使用這種方式不用花一分錢(除開人工成本)就可以建立起一個穩定、免費的網站系統,被業界稱為“LAMP”或“LNMP”組合。
3、索引類別
普通索引:普通索引(由關鍵字 KEY 或 INDEX 定義的索引)的任務是加快對數據的訪問速度。因此,應該只為那些最經常出現查詢條件(WHERE column =)或排序條件(ORDER BY column)中的數據列創建索引。只要有可能,就應該選擇一個數據最整齊、最緊湊的數據列(如一個整數類型的數據列)來創建索引。索引:普通索引允許被索引的數據列包含重復的值。比如說,因為人有可能同名,所以同一個姓名在同一個“員工個人資料”數據表里可能出現兩次或更多次。如果能確定某個數據列將只包含彼此各不相同的值,在為這個數據列創建索引的時候就應該用關鍵字UNIQUE 把它定義為一個索引。這么做的好處:一是簡化了 MySQL 對這個索引的管理工作,這個索引也因此而變得更有效率;二是 MySQL 會在有新記錄插入數據表時,自動檢查新記錄的這個字段的值是否已經在某個記錄的這個字段里出現過了;如果是,MySQL 將拒絕插入那條新記錄。也就是說,索引可以保證數據記錄的獨特性。事實上,在許多場合,人們創建索引的目的往往不是為了提高訪問速度,而只是為了避免數據出現重復。主索引:在前面已經反復多次強調過:必須為主鍵字段創建一個索引,這個索引就是所謂的“主索引”。主索引區別是:前者在定義時使用的關鍵字是 PRIMARY 而不是 UNIQUE。外鍵索引:如果為某個外鍵字段定義了一個外鍵約束條件,MySQL 就會定義一個內部索引來幫助自己以最有效率的方式去管理和使用外鍵約束條件。復合索引:索引可以覆蓋多個數據列,如像 INDEX(columnA,columnB)索引。這種索引的特點是 MySQL 可以有選擇地使用一個這樣的索引。如果查詢操作只需要用到 columnA 數據列上的一個索引,就可以使用復合索引 INDEX(columnA,columnB)。不過,這種用法僅適用于在復合索引中排列在前的數據列組合。比如說,INDEX(A,B,C)可以當做 A 或 (A,B)的索引來使用,但不能當做 B、C 或(B,C)的索引來使用。4、系統特性
MySQL使用 C和 C++編寫,并使用了多種編譯器進行測試,保證了源代碼的可移植性。支持?AIX、FreeBSD、HP-UX、Linux、Mac OS、NovellNetware、OpenBSD、OS/2 Wrap、Solaris、Windows等多種操作系統。為多種編程語言提供了?API。這些編程語言包括 C、C++、Python、Java、Perl、PHP、Eiffel、Ruby、.NET和 Tcl 等。支持多線程,充分利用 CPU 資源。優化的?SQL查詢算法,有效地提高查詢速度。既能夠作為一個單獨的應用程序應用在客戶端服務器網絡環境中,也能夠作為一個庫而嵌入到其他的軟件中。提供多語言支持,常見的編碼如中文的?GB 2312、BIG5,日文的?Shift_JIS等都可以用作數據表名和數據列名。提供?TCP/IP、ODBC?和?JDBC等多種數據庫連接途徑。提供用于管理、檢查、優化數據庫操作的管理工具。支持大型的數據庫。可以處理擁有上千萬條記錄的大型數據庫。支持多種存儲引擎。MySQL 是開源的,所以你不需要支付額外的費用。延伸閱讀1:mysql授權協議
MySQL 遵守的不只是 GPL 協議,而是雙授權模式(dual license)即你在遵守 GPL 協議的開源項目使用 MySQL,需要遵守 GPL 協議方能使用。如果你在非開源項目使用(即軟件不打算開放源代碼),且該軟件用來銷售,則需要向 MySQL 支付相應 license 費用。