JAVA中的数据库

数据库:DataBase简称(DB)

        存储数据的仓库,数据是有组织的进行存储  

数据库管理系统:DataBase Management System简称(DBMS)

        操纵和管理数据库的大型软件

SQL :Structured Query Language简称(SQL)

        操作关系型数据库的编程语言,定义了一套操作关系型数据库统一标准

数据库分为两大类

        1.关系型数据库

                采用了关系模型来组织数据的数据库

                关系模型指的就是二维表格模型,而一个关系型数据库就是由二维表及其之间的联系所组成的一个数据组织。

        2.非关系型数据库

mysql通用语法

        1.SQL语句可以单行或多行书写,以分号结尾

        2.SQL语句可以使用空格/缩进来增强语句的可读性

        3.MSQL数据库的SQL语句不区分大小写,关键字建议用大写

        4.注释:

                1.单行注释:--注释内容或者#注释内容(MySQL特有)

                2.多行注释:/*注释内容*/

SQL分类

       分类                                               说明

        DDL              数据定义语言,用来定义数据库对象(数据库,表,字段)          

        DML              数据操作语言,用来对数据库表中的数据进行增删改

        DQL              数据查询语言,用来查询数据库中的记录

        DCL               数据控制语言,用来创建数据库用户,控制数据库的访问权限

        DDL-数据库操作
        1.查询
                查询所有数据库  show databases;
                查询当前数据库  select database();
        2.创建
                create database [ if not exists]数据库名「defaultcharset字符集][collate排序规则];
        3.删除
                drop database [ if  exists]数据库名;
        4.使用
                use数据库名;

        DML -操作表-数据类型

        5.添加字段

                     alter table 表名 add 字段名 类型 (长度) comment’注释‘

        6.修改数据类型

                     alter table 表名 modify 字段名 新数据类型(长度);

        7.修改字段名和字段类型

                     alter table 表名 change 旧字段名 新字段名 类型(长度)comment’注释‘

        8.修改表名

                 alter table 表名 renameto 新表名

        9.删除表名

                drop table 表名

         Mysql中的数据类型有三类:数值类型,字符串类型,日期时间类型

数值类型

JAVA中的数据库_第1张图片

 字符串类型

JAVA中的数据库_第2张图片

 日期时间类型

JAVA中的数据库_第3张图片

DML语言

        添加 字段 

                  insert  into 表名 (字段1,字段2)values (值1,值2)

 insert into `subject`(ClassHour,SubjectName,GradeID) values(20,".net",2),(30,"php",2)

        修改 数据

                   update 表名 set  列1 = 值1[where]

update grade set GradeName = "S3" where GradeId = 3;

        

-- 将java课程课时+10 并切修改时间为当前时间
update `subject` set ClassHour = ClassHour+10,SubjectAddTime = now() where SubjectName = "java";

       删除 delete 语法

                delete from 表名 [where条件]

delete from `subject` where SubjectNo = 7;

truncate命令

        用于完全清空表数据,但表结构、索引、约束等不变

                truncate table_name;

truncate 与delete的区别

        相同点

                都能删除数据,不删除表结构,truncate速度更快

        不同点

                1.使用truncate table 重新设置 auto_incremeent(自动递增)计数器

                2.使用truncate table 不会对事务有影响

DQL语句(查询)

        查询表中所有的数据列结果

                select * from 表名

        查询指定结果数据列

                select 列1,列2,from 表名

        区分连接查询时两个表有同名的字段

                select 表名.列名 from 表名,result

AS子句作用

                1.可以给数据列取一个新的别名

ELECT   StudentNo   AS “学号”   FROM   student;

                2.可以给表取一个新的别名

                3.可把经计算或总结的结果用另外一个新名称来代替

     distinct 关键字

           作用:

                去掉SELECT查询返回的记录结果中重复的记录(所有返回列的值都相同)只返回一条

            语法:

                select distinct 字段1,字段2.....from表名

#查询成绩表中的所包含的课程ID
 SELECT   DISTINCT  SubjectNo  FROM  result;

 where 条件语句

            JAVA中的数据库_第4张图片   逻辑操作符

JAVA中的数据库_第5张图片

 比较操作符

        JAVA中的数据库_第6张图片

 between and范围查询

    1. 范围检索

          select 字段1,字段2....from表名 where 字段x

          between 值1 and 值2

     2.等同于>=和<=联合使用

#查询课程表中课时在110和120之间的所有记录
 SELECT  *  FROM  subject  WHERE ClassHour   BETWEEN  110   AND  120;
等同于:
 SELECT  *  FROM  subject  WHERE ClassHour >= 110  AND  ClassHour <=120;

        link 模糊查询

                在where子句中,使用link关键字 进型模糊查寻  

1.与“ % ”一起使用,表示匹配 0 或任意多个字符
2.与“ _ ”一起使用,表示匹配单个字符
#查询包含“数学”的所有课程
SELECT   *  FROM subject WHERE SubjectName  LIKE  "%数学%";
#查询所有姓名为“李**”三个字的学生信息
SELECT  StudentNo,StudentName FROM student  
  WHERE StudentName LIKE "李__";

 in范围查询

        SELECT  字段列1,字段2 ,…FROM 表名 WHERE   字段x  IN  ( 1,2,3…)

1. 查询的字段 x 的值,至少与括号中的一个值相同
2. 多个值之间用英文逗号隔开
SELECT  *  FROM  subject  where    ClassHour = 100  OR ClassHour =110 OR ClassHour  = 120;  #普通处理方式
SELECT  *  FROM  subject  where ClassHour  IN ( 100, 110,120 );
#使用IN进行查询方式,更为简洁,效率更高

 null 空值条件查询

1. NULL 代表“无值”
2. 区别于零值 0 和空符串“”
3. 只能出现在定义允许为 NULL 的字段
4. 须使用 IS NULL IS NOT NULL 比较操作符去比较

 多表连接查询

多表连接查询分为:

  • 内连接(inner join)
  • 外连接: 1.左连接(LEFT JOIN) 2.右连接(RIGHT JOIN)

内连接(inner join )

说明 :
两张表连接,两张表字段完全匹配才返回数据

语法:
SELECT 列名 from a表 inner join b表 on a表.连接字段=b表.连接字段 [WHERE tiaoj]

 
  
  1. 如 学生表与年级表
  2. 学生表数据:
  3. 学生1 年级1
  4. 学生2 年级2
  5. 年级表数据:
  6. 年级1
  7. select * from student a INNER JOIN grade b on a.GradeId=b.GradeID;
  8. 结果:
  9. 显示

左连接(LEFT JOIN)
右连接(RIGHT JOIN)

子查询 的种类

        标量子查询:子查询返回的结果是单个值(数字,字符串,日期)

        列子查询:返回的结果是一列或者多行,常用操作符 in , not in, any, some,all

                                in:指定的集合范围之内,多选一。

                                not in : 不在指定的集合范围之内

                                any: 子查询返回列表中,有任意一个满足即可

                                some: 子查询返回列表中,有任意一个满足即可

                                all:  子查询返回列表中,都要满足

         行子查询 :子查询返回的结果是一行(可以是多列),常用操作符:= ,<>, in ,not,in 

你可能感兴趣的:(数据库)