zoukankan      html  css  js  c++  java
  • MySQL 命令(二)

    运算符

    =   等于
    <>  不等于    >   >=   <  <=
    like  像  ,模糊查询  %用来通配
    -- INSERT INTO grade(g_name,g_student_num) VALUES('HTML1804',45);
    #查询所有
    SELECT * FROM grade;
    #查询班级名称包含1804
    SELECT * FROM grade WHERE g_name LIKE '%1804';
    /*
    %a  匹配以a结尾的内容
    %a%     包含a的内容
    a%  a开头的内容
    a%b 以a开头以b结尾的内容
    */
    #查询名字不包含1804的班 not LIKE
    SELECT * FROM grade WHERE g_name NOT LIKE '%1804%';
    #查询id大于6的
    SELECT * FROM grade WHERE id>6;

    多条件查询

    /*
    查询数据
    SELECT 列1,列2 FROM 表名
    */
    SELECT * FROM grade;
    SELECT g_name FROM grade;
    #查询去重  DISTINCT
    SELECT DISTINCT g_name FROM grade;
    #需要查询的结果都一样才能去重,重复的标准是所有字段都一样
    SELECT DISTINCT g_name,g_student_num FROM grade;
    /*
    多条件查询
    and  OR:在条件句中把两个或多个条件结合起来
    */
    SELECT * FROM grade WHERE g_name='222' AND id>5;
    SELECT * FROM grade WHERE g_name='222' OR id>5;
    # 多条件查询可以添加括号
    #女的  and (漂亮 OR 活的)
    SELECT * FROM grade WHERE id>=4 AND(g_student_num=222 or g_student_num=55);
     

    限制查询

    /*
    限制数量:limit
    select * from 表名 limit 5  查询数据,并限制结果数据最多为5条
    跳过指定数量的数据 OFFSET
    select * from 表名 limit 5 OFFSET 5
    */
    SELECT * FROM grade LIMIT 3;
    SELECT * FROM grade LIMIT 3 OFFSET 3;
     

    between和IN

    /*BETWEEN  在值之间
    select * FROM 表名 where 列1 BETWEEN value1 AND VALUE2
    IN      存在于提供的多个值中
    select * FROM 表名 where 列1 IN (value1 , VALUE2...)
    */
    #操作符between...and  会选取介于两个值之间的数据范围
    #范围是全闭合的。没有什么左闭右开之类的
    #WHERE id BETWEEN 4 AND 8;运行时会转换成 id>=4 AND id<=8
    SELECT * FROM grade WHERE id BETWEEN 4 AND 8;
    #in的案例
    SELECT * FROM grade WHERE g_student_num in('55','45','222');
    SELECT * FROM grade WHERE g_student_num in('55','45','222') LIMIT 2 OFFSET 2;
     

    字段约束

    1、primary key :唯一标识表中每行的这个列是主键。没有主键,更新或删除表中的行会很困难。

    表中的任何列都可以作为主键,只要它满足一下条件:

    1、任意两行都不具有相同的主键值

    2、主键列不允许为NULL

    优化:

    1、不更新主键列中的值

    2、不重用主键列的值

    2、foreign key:某个表中的一列,它包含另一个表的主键值。定义了两个表之间的关系

    3、unique

    跟主键一样,都具有唯一约束的功能

    每个表只能有且只有一个主键,unique可以作用在多个字段上

    4、default

    5、null 和 not null

    CREATE DATABASE Learn charset=utf8;
    USE Learn;
    #约束字段时,最好是固定长度或者可变空间非常具体的数据类型
    #不可用给text加唯一约束
    CREATE table student (id int primary key auto_increment,
                                                s_name VARCHAR(16) UNIQUE);
    
    
    #插入数据
    INSERT INTO student(s_name) VALUES('YISS');
    INSERT INTO student(s_name) VALUES('uzi'),('FAKER'),('CLEARLOVE');
    INSERT INTO student(s_name) VALUES('uzi');
    #主键和unique都有唯一约束功能
    INSERT INTO student(id,s_name) VALUES (5,'荣耀黄金');
     

    左右链接

    #主外键级联
    CREATE DATABASE LearnForeignKey charset=utf8;
    USE LearnForeignKey;
    #创建年级表
    CREATE TABLE Grade(id INT PRIMARY KEY auto_increment,g_name VARCHAR(16),
    g_position VARCHAR(16));
    #REFERENCES外键指向
    #student表中的 g_id 指向了 grade表中的id
    #实现了一种一对多的数据关系 1:N
    CREATE TABLE Student(id INT PRIMARY KEY auto_increment,
                                            s_name VARCHAR(16),g_id INT,
                                            FOREIGN KEY student(g_id) REFERENCES        grade(id));
     

    左右链接删除时的限制:

    1、restrict ----报错

    2、no action -----报错

    3、cascade ------暴力删除,会把年级下面的学生都干掉

    4、set null ------设置为UNLL,前提是该字段要允许为null

    INSERT INTO grade(g_name,g_position) VALUES ('python1710','31教室'),('python1711','40教室');
    INSERT INTO student(s_name,g_id) VALUES ('夏鑫',1),('夏鑫1',1),('夏鑫2',1);
    INSERT INTO student(s_name,g_id) VALUES ('王馨梦',2),('王鑫梦1',2),('王新梦2',2);
    #一个表中的外键会指向另一个表中的主键
    #一个表可以有多个外键
    #外键约束在插入的时候,如果外键值在引用的表中不存在,插入失败
    INSERT INTO student(s_name,g_id) VALUES ('王馨梦',3),('王鑫梦1',3),('王新梦2',3);
    SELECT * FROM student WHERE g_id =2;
    #JOIN   加入,有的时候为了得到更完整的结果,我们需要从两个或者更多的表中获取数据,
    #就需要使用join
    #原始写法  从多个表中查询数据
    SELECT * FROM student,grade WHERE student.g_id=grade.id;
    #直接用join
    SELECT * FROM student JOIN grade ON student.g_id=grade.id;
    #left JOIN
    SELECT * FROM student LEFT JOIN grade ON student.g_id=grade.id;
    #RIGHT JOIN
    SELECT * FROM student RIGHT JOIN grade ON student.g_id=grade.id;
    #JOIN 多表查询  join有左连接和右连接
    #以join为分界线
    #LEFT JOIN 以分界线左边的表为基准,进行数据查询,如果左边数据多会用null来进行填充右侧
    #RIGHT JOIN 以分界线右边的表为基准,进行数据查询,如果右边的数据多会用null来进行左侧填充
    #数据多,指的是级联的数据,没有和它对应的,如果grade表中的id在student表中从来没有出现过。
    #INNER JOIN 与join 是相同的,没有匹配的数据,就不进行列出
    SELECT * FROM student INNER JOIN grade ON student.g_id=grade.id;
    #UNION 操作符用于合并两个或多个select语句的结果集
    #UNION 选取不同的值,如果允许重复的值,使用union ALL
    #mysql没有full JOIN
    SELECT * FROM student LEFT JOIN grade ON student.g_id=grade.id
    UNION
    SELECT * FROM student RIGHT JOIN grade ON student.g_id=grade.id
     
  • 相关阅读:
    Alpha项目冲刺_博客链接合集
    项目系统设计
    项目需求分析
    项目选题
    项目展示
    原型设计 + 用户规格说明书
    测试与优化
    结对作业1
    MathExam6317
    js入门基础
  • 原文地址:https://www.cnblogs.com/gugubeng/p/9714526.html
Copyright © 2011-2022 走看看