mysql常用语句

  1. 数据库学习
  • 1.1操作数据库CURD(Mysql不区分大小写)
    1. 原子性(Atomicity)
    2. 一致性(Consistency)
    3. 持久性(Durability)
    4. 隔离性(Isolation)
    5. 脏读
    6. 不可重复读
    7. 幻读 虚读
  • 数据库学习

    1.1操作数据库CURD(Mysql不区分大小写)

    1.创建数据库

    create database [IF NOT EXISTS] westos;
    

    2.删除数据库

    drop database [IF EXISTS] westos;
    

    3.使用数据库

    use westos;
    

    4.查看数据库

    show databases;
    

    5.创建表

    CREATE TABLE `student` (
      `id` int(4) NOT NULL AUTO_INCREMENT COMMENT '学号',
      `name` varchar(220) NOT NULL DEFAULT '匿名' COMMENT '姓名',
      `pwd` varchar(220) NOT NULL COMMENT '密码',
      `sex` char(2) NOT NULL DEFAULT '女' COMMENT '性别',
      `day` datetime DEFAULT NULL COMMENT '出生日期',
      `address` varchar(220) NOT NULL DEFAULT '匿地址' COMMENT '地址',
      `email` varchar(220) NOT NULL COMMENT '邮箱',
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
    

    6.修改删除表

    修改

    --修改表名称
    alter table teacher rename as teacher1;
    --增加表字段
    alter table teacher add name varchar(220);
    --修改表字段 (重命名:修改约束)
    alter table teacher modify name varchar(220); --修改约束
    alter table teacher change name teacher_name varchar(220); --字段重命名
    

    删除

    ---删除表(如果存在再删除)
    drop table if exists teacher;
    

    7.插入表数据

    INSERT INTO 表名 (id—–) values(id—–)

    INSERT INTO westos.student (id, name, pwd, sex, day, address, email) VALUES (1, '狗蛋', '12345678', '男', '2021-12-08 13:34:44', '安徽合肥', '5104@sohu.com')
    

    8.修改表数据

    Update 表名 SET 字段 =’李四’ where 字段=’***’

    -- 一定要指定条件 where
    update student set address ='安徽合肥市' where name='狗蛋';
    

    9.查找表数据

    Select 字段名(要什么查什么,全都要就*) from表 where 字段=’ ‘;

    select id, name, pwd, sex, day, address, email from student where name='狗蛋';
    

    10.删除表数据

    DELETE FROM 表 where 字段 =’ ‘

    DELETE FROM westos.student WHERE id = 2;
    

    所有创建和删除都要添加判断不然会报错

    11.逆向语句查询

    show create table student; --查看建表语句
    desc student;   --查看表结构
    

    12.去重关键字

    select distinct studentno  from result   --distinct
    

    Where语句

    --查询考试成绩在90分以上100分一下
    select studentno ,studentresult from result where studentresult >= 90 && result.studentresult<=100;
    --区间查询
    --between      a between b and c A在BC之间为true
    select studentno,studentresult from result where studentresult between 95 and 100;
    --除了1000号之外所有学生的成绩
    select studentno ,studentresult from result where result.studentno<>1000;
    select studentno ,studentresult from result where result.studentno!=1000;
    select studentno ,studentresult from result where not result.studentno =1000;
    

    Like语句

    --开头是姓刘的  %(代表0到任意一个字符)  _代表一个字符
    select studentno, studentname from student where student.studentname like '刘%';
    --后面是一个字符开头是刘的人
    select studentno, studentname from student where student.studentname like '刘_';
    --左右匹配带刘的都展示
    select studentno, studentname from student where student.studentname like '%刘%';
    

    in语句

    --查询某个区间  他是一个或者多个具体的值
    select studentno,studentname from student where studentno in (1001,1002,1003);
    

    null not null 语句

    select studentno,studentname from student where address is null;
    select studentno,studentname from student where address is not null;
    

    联表查询 join

    select s.studentno, studentname, subjectno, studentresult
    from student s
             inner join
         result r
    where s.studentno = r.studentno;
    
    #左查询
    select s.studentno, studentname, subjectno, studentresult
    from student s
             left join result r
                       on s.studentno = r.studentno;
    
    #右查询
    select s.studentno, studentname, subjectno, studentresult
    from student s
             right join
         result r
         on s.studentno = r.studentno;
    
    
    select s.studentno, studentname, subjectname, studentresult
    from student s
             right join result r
                        on r.studentno = s.studentno
             inner join subject sub
                        on r.subjectno = sub.subjectno;
    

    分页limit和排序 orderby

    --desc 降序  esc升序
    select r.studentno, studentname, subjectname, studentresult
    from result r
             left join student s
            on r.studentno = s.studentno
        inner join subject sub
            on r.subjectno = sub.subjectno
    where sub.subjectname like '%C%'
    order by studentresult desc
    
    select s.studentno,studentname,subjectname,studentresult
    from student s
    inner join result r
        on s.studentno = r.studentno
    inner join subject sub
        on sub.subjectno=r.subjectno
    where sub.subjectname like '%C%' && r.studentresult > 30
    order by r.studentresult desc
    limit 0,10
    

    联表查询 和 子查询

    --子查询
    select s.studentno,studentname
    from student s
    inner join result r on s.studentno = r.studentno
    where r.studentresult >=30 and subjectno = (
        select subjectno from subject where subjectname = 'C语言-1'
    );
    
    select s.studentno,studentname
    from student s
    inner join result r on s.studentno = r.studentno
    inner join subject s2 on r.subjectno = s2.subjectno
    where r.studentresult>=30 && s2.subjectname='C语言-1'
    
    

    分组查询

    select subjectname,max(studentresult),min(studentresult),avg(studentresult)
    from result r
    inner join subject s on r.subjectno = s.subjectno
    group by r.subjectno ----通过什么来分组
    having avg(studentresult)>=70  ----分组过后用having来再次筛选数据 而不是where
    ;
    

    聚合函数

    select count(address)from student; --会去掉null值
    select count(1)from student; --不忽略null值
    select count(*)from student; --不忽略null值
    select count(studentname) from student where studentname ='铁蛋';
    
    select sum(studentresult) 总分 from result;
    select avg(studentresult) 平均 from result;
    select max(studentresult) 最高 from result;
    select min (studentresult) 最低 from result;
    

    事务原则:原子性,一致性,持久性,隔离性(ACID) (脏读幻读)

    原子性(Atomicity)

    一个事务要么全部提交成功,要么全部失败回滚,不能只执行其中的一部分操作,这就是事务的原子性

    一致性(Consistency)

    事务前后的数据完整性要保持一致 事务前总金额1000 事务后也是1000

    持久性(Durability)

    事务一旦被提交 那就持久化到数据库中 不可逆

    隔离性(Isolation)

    事务的隔离性是指在并发环境中,并发的事务时相互隔离的,一个事务的执行不能不被其他事务干扰。不同的事务并发操作相同的数据时,每个事务都有各自完成的数据空间,即一个事务内部的操作及使用的数据对其他并发事务时隔离的,并发执行的各个事务之间不能相互干扰。

    隔离所导致的问题

    脏读

    指一个事物读取了另一个事务未提交的数据

    不可重复读

    在一个事务中读取表的某个数据,多次读取不同(不一定是读取错误,可能是某些场合不对)

    幻读 虚读

    是指在一个事务内读取到了其他事务插入的数据,导致前后读取不一致


    转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 ggchzzz@163.com

    文章标题:mysql常用语句

    字数:1.5k

    本文作者:ggchzzz

    发布时间:2020-12-12, 14:08:58

    最后更新:2023-12-22, 23:17:54

    原始链接:https://anska.info/post/75c8432e.html

    版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。

    github