【MYSQL】Day03

  作者: thtomatic  分类: Mysql   评论: [ 0 ] 条  浏览: [ 924 ] 次

一.多表联合查询
 1.格式
 SELECT 字段名1,字段名2...
 FROM 表1
  类型    表2
 ON 两表逻辑关系  
  类型    表3
 ON 两表逻辑关系 ...
 [WHER 条件]
 2. 类型分类
   (1) 内连接: INNER JOIN  查询两表符号条件信息
   (2) 外连接:
                  左外连接: LEFT [OUTER] JOIN
                      说明:显示左表的所有信息和右表符合条件的信息当左表的信息右表没有 用NULL填补
                  右外连接: RIGHT [OUTER] JOIN、
                       说明:显示右表的所有信息和左表符合条件的信息当右表的信息左表没有 用NULL填补
二.子查询(嵌套查询)
  1. 子查询 :SQL语句中嵌套 SELECT语句
  2.子查询特点
    (1)子查询SELECT语句
    (2) 一般 用小括号括起来
    (3) 一般 结合 WHERE 和GROUP BY 使用
  3.子查询使用
    (1)WHERE
        a.IN
        b.比较运算符
                 说明:子查询使用 比较运算符后比较的是一个结果如果有多个结果会报错可以用 ALL 和 SOME/ANY来解决
           > >= ALL  大于最大值             
           < <= ALL  小于最小值  
           > >= SOME/ANY  大于最小值             
           < <= SOME/ANY  小于最大值 
           =SOME/ANY 等同于 IN    
    (2)FROM:FROM 后除了跟表还可以跟子查询产生的新表
    
三.约束条件
   1.约束条件:对字段的非空,唯一性等约束
   2.约束条件种类
    (1) NOT NULL 不能空
    (2) DEFAULT 默认值
    (3) [PRIMARY] KEY 主键
    (4) UNIQUE [KEY] 唯一性
    (5) FOREIGN KEY 外键
   3.约束条件写法
    1.列约束: 在一个字段后面写的约束
                   说明: NOT NULL DEFAULT必须是列约束
    2.表约束:可以对两个字段以上写约束
                  说明:[PRIMARY] KEY 主键 
             UNIQUE [KEY] 唯一性
             FOREIGN KEY 外键 可以是表约束
    3. 格式
     (1) 列约束
      CREATE TABLE test(
        id..,
        name VARCHAR(30) NOT NULL UNIQUE
        ...
      );
      (2) 表约束
      CREATE TABLE test(
        id..,
        name VARCHAR(30) NOT NULL,
        ...
        PRIMARY KEY('id'),
        UNIQUE KEY('name','email')
      );    
   
    4.FOREIGN KEY外键:对字段完整性和一致性的约束
      1.格式
      CREATE TABLE testson(
        ...
        tid SMALLINT UNSIGNED NOT NULL,
        ...
        FOREIGN KEY(外键列 tid)
        REFERENCES  参考表(父表cms_type)(字段名称 id)
      );
            说明:
        a.外键是表约束
        b.一定先要参考表(父表),后有外键表(子表)
                     先有参考表记录,后有外键表(子表)记录
                     先删外键表(子表)表,后删参考表(父表)
                     先删外键表(子表)记录,后删参考表(父表)记录
        c. 外键表的字段和  参考表(父表)对应的字段类型
                      要一致,如果整型 unsigned 也必须一致
                      如果字符类型编码必须一致,但长度可以不一致
        d.外键表默认引擎一定是InnoDB。
        e.如果给外键列设置约束名称,那会自动产生索
                     引的约束名称
                       
      5.完整代码
      CREATE TABLE test(
        ...
        FOREIGN KEY(外键列) 
        REFERENCES 参考表(字段名称)
        [UPDATE RESTRICT|CASCADE|SET NULL|NO ACTION]
        [DELETE RESTRICT|CASCADE|SET NULL|NO ACTION]
      );
      说明:
    a. RESTRICT(默认值)|NO ACTION: 父表不能更
                       新或删除子表中有对应信息的记录
    b. CASCADE 级联:父表更新或删除
                     子表对应的信息也更新和删除
    c. SET NULL:父表更新或删除 子表对应的信
                                息设置为NULL,子表字段不能是
                NOT NULL
    6.逻辑外键
                原理:父表和子表是一个表
              说明: 无限极分类菜单
     
四. 用第三方软件可视化操作MySQL
  1. C/S :Client/Server  安装软件
     Front-SQL , Navicat
  2. B/S :Browser/Server  web程序软件
     phpMyAdmin (PHP程序)
     
     安装: php.ini
     1. 指定函数库位置
      extension_dir = "D:\php5.4\ext"
     2. 
       extension=php_mysql.dll
       extension=php_mysqli.dll
       extension=php_mbstring.dll

             前面分号去掉重启apache

//创建主表 class课程表

 CREATE TABLE class(
        ...
 )TYPE=INnoDB外键;  //MyisAM 事务


//创建附表 edu
 CREATE TABLE edu(
        ...
        tid SMALLINT UNSIGNED NOT NULL,
        ...
        FOREIGN KEY(edu_class)
        REFERENCES  class(class_id);
      );
 

// 使用外键
1.都要InnoDB类型
2.外键和参考的主键类型必须保持一致

ALTER TABLE edu ADD CONSTRAINT eclass FOREIGN KEY(edu_class) REFERENCES class(class_id);

SELECT E.*,C.class_name FROM edu AS E JOIN class AS C ON E.edu_class=C.class_id;


版权所有:《thtomatic》 => 《【MYSQL】Day03
本文地址:https://ask.mykeji.net/mysql/mysql_day03.html
除非注明,文章均为 《简单记录》 原创,欢迎转载!转载请注明本文地址,谢谢。


上一篇: 【MYSQL】Day04
下一篇: 【day02】MYSQL

发表评论:

    13.72ms