MySQL的常用语法

来源:互联网 发布:虚拟机mac安装xcode 编辑:程序博客网 时间:2024/05/22 08:07

SQL语言已是主流,但具体到特定的数据库上仍有细微的差别。对于MySQL的常用语法,本文做一个小的总结。

1. 外键约束

1.创建表时添加外键约束

//fk 是约束名称,不可重复CREATE TABLE `db_test`.`table_01` (     `ForeignKey` VARCHAR(9) NOT NULL,    CONSTRAINT `fk` FOREIGN KEY (`ForeignKey`) REFERENCES `table_02` (`PrimaryItem`))     ENGINE = InnoDB;

2.对现有表添加外键约束

ALTER TABLE `table_01` ADD CONSTRAINT `fk` FOREIGN KEY(`ForeignKey`) REFERENCES `table_02`(`PrimaryItem`);

需注意:

  • 约束名称可以省略
  • 约束名称不可重复,否则可能出现以下错误:

MySQL Error 1215: Cannot add foreign key constraint

  • 外键(文中ForeignKey)与对应项(文中PrimaryItem)的数据类型必须相匹配。
  • ENGINE = InnoDB,确保使用InnoDB引擎,才能支持外键约束。

2. 连接查询

  • 内连接查询
 SELECT student.* , sc.* FROM student, sc WHERE student.Sno = sc.Sno
  • 自身连接
//f1, f2在此是表course的别名SELECT f1.Cno , f2.Cpno FROM course AS f1, course AS f2 WHERE f1.Cpno = f2.Cno
  • 外连接
SELECT student.Sno, Sname, Ssex ,Sage, Sdept, Cno, Grade FROM student LEFT OUTER JOIN sc ON (student.Sno = sc.Sno)
  • 多表连接
//本查询涉及三个表SELECT student.Sno, Sname, Cname, Grade FROM student, course,sc WHERE student.Sno = sc.Sno AND sc.Cno = course.Cno

3.嵌套查询

SELECT Sname            //外层查询FROM studentWHERE Sno IN(    SELECT Sno         //内层查询    FROM sc WHERE     Cno = '2')

4. 集合查询

常见的集合操作包括并操作UNION、交操作INTERSECT和差操作EXCEPT。

SELECT * FROM student WHERE Sdept = 'CS' UNION SELECT * FROM student WHERE Sage <= 19

5. 视图

数据库中只存放视图的定义,而不存放视图对应的数据,这些数据仍存放在原来的基本表中。
CREATE VIEW 语句的结果只是把视图的定义存入数据字典,并不执行其中的SELECT语句。

CREATE VIEW IS_Student AS SELECT Sno, Sname, Sage FROM student WHERE Sdept = 'IS' WITH CHECK OPTION       //表示对视图进行增删改查要保证操作的行满足视图中的谓词条件
1 1
原创粉丝点击