zoukankan      html  css  js  c++  java
  • 关于数据库的基本操作

    一,

    数据库的操作
    查:show databases ;
    删:drop database 数据库名
    改:alter database 数据库 character set 字符集(utf8)
    查询所有库 : show database ;
     show create database 数据库的名字  数据库结构
     use 数据库 切换数据库
     show tables 数据库; 查数据库表


    二,
    表结构的操作
    创建: create table 表名(
       列名 列的类型 列的约束,
       列名 列的类型 列的约束
    )
    列的类型:char /varchar
    列的约束:
        primary key 主键约束
        unique key 唯一约束
        not null 非空约束


    自动增长:auto_increment
    删除:drop table 表名
    修改:alter table 表名如:

    alter table 表名

      add [column] create_definition [first | after column_name]  //添加新字段

      add primary key (index_col_name,...)  //添加主码名称

      alter [column] col_name {set default literal |rop default}  //修改字段名称

      change [column] old_col_name create_definition  //修改字段名及类型

      modify [column] create_definition  //修改字段类型

      drop [column] col_name  //删除字段

      drop primary key  //删除主码

      rename [as] new_tablename  //更改表名


    ( add 增加,modify修改列类型,change,drop 删除列)
    rename table 旧表名 to 新表名
    alter table 表名 character set 字符集

    查询表结构
    show table ;查询出所有表
    show create table 数据库 查询表详细结构
    desc 表名; 表的结构


    三,
    表中数据的操作

    增:
    insert into 表名 values('内容,内容')
    insert into 表名 values (内容,内容,内容)

    删:
    delete from 表名 [where 条件];
    改:
    update 表名 set 列名='值', 列名='值';
    查:
    select * from 表名
    去重:distinct


    1.between...and
    查询成绩在60-80之间的学生学号 成绩
    select stuid,socre from score where socre>=60 and socre <=80;
    select (not) between 60 and 80;
    2.in
    查询成绩是25或是83 或是59的成绩
    select stuid socre from score where socre in (85,83,50);
    3.like 模糊查询 %: 代表多个字符
    select * from student where name like '张%' (张开头)
    select * from student where name like '%张' (张结尾)
    select * from student where name like '%张%' (带张)
    4._: 代表一个字符
    select * from student where name like '张_' (带张后面加一个字符)

    5.is null 列的值为空
    6.and or

    四,
    聚合函数:作用在列上面
    1.avg :求平均值
    查询科目一的平均分
    select avg(socre) from score where sublid=1;
    2.sum :求和
    查询学号1的总成绩
    select sum(socre) from score where stuid=1;
    3.count:统计
    查询学校有多少学生
    select count(stuid(*)) from student
    select count(*) from student
    4.max:最大值 min:最小值
    查询科目一的最高分和最低分
    select max(socre),min(socre) from score where subid=1;
    分组统计:分组函数:根据字段相同的的值进行分组,只要题目带每 各 肯定用分组 配合聚合函数
    1.group by 对一张表根据字段相同的的值自定义分组
    查询各科目平均成绩
    select avg(socre) ,stuid from score group by subid;
    2.having
    查询所有成绩加5分后,成绩还是小于60分的学生学号
    select stuid,socre+5 as "成绩加5分" from score having 成绩加5分<60;

    having 和where 的区别,他俩都可以都查询结果进行筛选
    where 针对表中真正存在的列起作用
    having针对查询结果列起作用
    group by 是在where 条件后执行
    having 是在group by 后执行

    获取平均成绩大于等于70的各科目平均成绩
    select avg(socre) from score group by subid where avg(socre)>=70;

    3.order by 排序功能 asc 升序(默认) desc 降序
    根据班级编号进行升序
    select * from student order by cid asc;
    根据多个字段进行排序
    select * from student order by cid asc,birthday desc;
    4.limit 限制条数
    limit [offset ,N] offset 初始位置 默认 0
    查询年龄最大的5位学生
    select * from student order by birthday asc limit 0,5;

    多表查询
    交叉连接:多个表两两组合,产生的结果

    select * from student cross join classinfo;
    select * from student join classinfo;
    select * from student , classinfo;

    查询所有信息,显示学号,姓名,班级编号,班级名

       1.把两个表连接成一张大表,就把连接后的表当成单表用
            select stuid ,name,student.cid,cname from student,classinfo
       2.筛选出正确数据
           where student.cid=classinfo.cid;
       3.其他筛选条件
    内连接:
    查询所有信息,显示学号,姓名,班级编号,班级名
    select stuid,name,student.cid from inner join classinfo on student.cid=classinfo.cid
    外连接:

     1 SELECT * FROM student;
     2 SELECT * FROM classinfo;
     3 SELECT * FROM `subject`;
     4 SELECT * FROM score;
     5 -- 交叉连接:多个表两两组合产生的结果
     6 SELECT * FROM student CROSS join  classinfo;
     7 
     8 SELECT * FROM student  join  classinfo;
     9 
    10 SELECT * FROM student , classinfo;
    11 -- 等值连接
    12 -- 查询所有学生信息,显示学号,性名,班级编号,班级名
    13 -- 1.把两个表连接成一张大表,就把连接后的表当成单表用
    14 SELECT stuid,name,student.cid,cname  FROM  student,classinfo
    15 -- 2.筛选出正确数据
    16 WHERE student.cid=classinfo.cid;
    17 -- 3.其他筛选条件
    18 
    19 -- 查询张三的mysql考试成绩,显示学生姓名,科目名、成绩、班级名
    20 SELECT student.`name`,subname,socre,cname FROM student,classinfo,score,`subject`
    21 WHERE student.cid=classinfo.cid AND student.stuid=score.stuid
    22 AND score.subid=`subject`.subid 
    23 AND student.`name`='张三' and `subject`.subname='mysql';
    24 
    25 -- 内连接:inner join
    26 -- 查询所有学生信息,显示学号,性名,班级编号,班级名
    27 SELECT stuid,`name`,student.cid,cname  from student INNER JOIN classinfo
    28 ON  student.cid=classinfo.cid;
    29 
    30 -- 查询张三的mysql考试成绩,显示学生姓名,科目名、成绩、班级名
    31 -- 内连接是两个表两个表的相连,确定连接条件
    32 SELECT `name`,subname,socre,cname FROM student 
    33 INNER JOIN classinfo
    34 ON student.cid=classinfo.cid
    35 INNER JOIN score
    36 ON score.stuid=student.stuid
    37 INNER JOIN `subject`
    38 ON score.subid=`subject`.subid
    39 WHERE `name`='张三' AND subname='mysql';
    40 
    41 
    42 -- 查询所有学生课程的考试成绩,
    43 -- 查询结果保留学生ID、姓名、性别、课程ID、成绩
    44 SELECT student.stuid,`name`,sex,subid,socre from student INNER JOIN score
    45 ON student.stuid=score.stuid;
    46 
    47 -- 内连接:查询结果是两个表匹配的数据
    48 -- 左外连接:left join:以左表为主表,去右表找匹配数据,如果找到查询出来
    49 -- 如果找不到以null填充,说明左表中的数据都会被查询出来
    50 SELECT student.stuid,`name`,sex,subid,socre from student left JOIN score
    51 ON student.stuid=score.stuid;
    52 -- 右外连接:以右表为主表,去左表找匹配数据,如果找到查询出来
    53 -- 如果找不到以null填充,说明右表中的数据都会被查询出来
    54 SELECT student.stuid,`name`,sex,subid,socre from student RIGHT JOIN score
    55 ON student.stuid=score.stuid;
    56 
    57 SELECT student.stuid,`name`,sex,subid,socre from score left JOIN student
    58 ON student.stuid=score.stuid;
    59 -- 左右外连接可以互转,调一下表的位置即可,以后用左外连接去替代右外连接,
    60 -- 因为db2不支持右外连接


    JDBC使用步骤:
    1.注册驱动
    2.建立连接
    3.创建statement
    4.执行sql,得到Resultset
    5.遍历结果集
    6.释放资源

  • 相关阅读:
    【简单易懂】JPA概念解析:CascadeType(各种级联操作)详解
    [转] @JoinColumn 详解 (javax.persistence.JoinColumn)
    Feign二: @FeignClient 接口调用
    @Basic表示一个简单的属性 懒加载,急加载
    RPC接口测试(一)什么是 RPC 框架
    Mysql中 查询慢的 Sql语句的记录查找
    Mysql 查看连接数,状态 最大并发数
    ntp时间一致对与设备心跳的影响
    jmeter常用四种断言
    jmeter BeanShell断言(四)
  • 原文地址:https://www.cnblogs.com/yumu77/p/13782955.html
Copyright © 2011-2022 走看看