实训复习SQL语句

表与表之间的关系
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中一个字占两个字节

 

只是自己的一点记录 如果错误 敬请指出

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章