表与表之间的关系
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中一个字占两个字节
只是自己的一点记录 如果错误 敬请指出