表與表之間的關係
1:1 (學生-學生證)
1:n (學生-成績)
n:n (學生-老師)
建立學生表與成績表主外鍵關聯
約束的名稱可以自己設置或者不設置由系統默認
CREATE TABLE grade(
sno NUMERIC(10, 0),
course_id VARCHAR(18),
score INT,
course_name VARCHAR(20),
PRIMARY KEY(sno, course_id),
CONSTRAINT fk_grade_students FOREIGN KEY(sno) REFERENCES students(sno)
)
在建立主外鍵關聯的時候,容易出現can't create table 的情況,我的原因是兩個鍵其中有一個設定了
not nul約束,而另一個沒有設置,其實就是類型不匹配。
刪除外鍵關聯
ALTER TABLE grade DROP FOREIGN KEY fk_grade_students
刪除主鍵約束
ALTER TABLE grade DROP PRIMARY KEY
設置check約束 以及default默認值
check約束在mysql中不起作用
ALTER TABLE persons ADD CONSTRAINT age_check CHECK(age > 0)
ALTER TABLE persons ALTER address SET DEFAULT 'chengdu'
規定要返回的記錄的數目
其他數據庫用TOP 用法select top 3 * from table
mysql用法 select * from table limit 3 顯示前三條
select * from table limit 1,3 顯示2-3條
使用通配符進行模糊查詢
select * from table where address like('%end%')
select * from table where address not like('%end%')
SELECT * FROM persons WHERE age BETWEEN 20 AND 30
SELECT * FROM persons WHERE address IN('chengdu', 'guangan')
通過子查詢來刪除課程表中沒有學生選學的課程記錄
DELETE FROM course WHERE course_id NOT IN(SELECT course_id FROM grade)
將兩個名字的學生的學生信息複製到信息表2中
INSERT INTO personal_information2 SELECT * FROM personal_information WHERE LENGTH(s_name) = 4
長度爲4是因爲漢字在mysql中一個字佔兩個字節
只是自己的一點記錄 如果錯誤 敬請指出