Java知识总结-3

数据库操作语言
标记: 命令不区分大小写 但不能用中文空格 标点等
分类

数据查询语言 dql

数据定义语言 ddl

数据操作语言 dml

数据库理论知识

关系型数据库

MySQL 默认端口3306

db2

oracle 默认端口

面向对象数据库是由面向对象编程语言催生的新型数据库,关系数据库是理论最成熟,应用最广泛的数据库,最基本的数据存储单元就是数据表,数据表是存储数据的逻辑单元,可以把数据表想象成由行和列组成的表格,其中每一行也被称为一条记录,每一列也被称为一个字段

数据库(Database,简称DB):按照数据结构来组织,存储和管理数据的仓库

按照数据结构来组织,存储和管理数据的仓库

数据库管理系统(Database Management System,简称DBMS):是所有数据的知识库,它负责管理数据的存储、安全、一致性、并发、恢复和访问等操作,有一个数据字典(有时称系统表)用于存储它所拥有的每个事务的相关信息,例如名字、结构、位置类型,这种数据也称为元数据

发展历史:网状型-->层次型-->关系型-->面向对象型

数据(Data):对客观事物的符号表示,是数据库中存储基本对象

种类:文字、图形、图像、声音

对数据库的操作

显示 show databases;

set names gbk --建表前设置编码

create database 名字 ----创建数据库

drop database 名字-------删除数据库

use 数据库名字------进入数据库

对表的操作

表的创建

create table 名字(列名 类型(长度), .......) ------创建一个表

CREATE TABLE 表名 (列名 列的类型,列名 列的类型 , 列名 列的类型,.............. ); 例如: CREATE TABLE XS(XH VARCHAR(10) , XM CHAR(8),JS INT , LL INTEGER, WH INT);

列的约束

总体结构 create table 表名(列名 列类型 约束,列名 列的类型 约束,.......);----------------创建表的时候进行约束
标记: 多个约束可以同时存在一个列上

ALTER TABLE FILE ADD CONSTRAINT FOREIGN KEY(FILEID) REFERENCES FOLDER(FID) ON DELETE CASCADE;

外键约束
FOREIGN KEY (本表的外键列名) REFERENCES 其他表名(其他表的主键列名)-----------减少冗余信息
标记: 写在所有属性之后 用逗号分开

CREATE TABLE XS1
(
学号 varchar(6) NULL,
姓名 varchar(8) NOT NULL,
出生日期 datetime NULL,
PRIMARY KEY (姓名),,
FOREIGN KEY (本表的外键列名)
REFERENCES 其他表名(其他表的主键列名)
ON DELETE RESTRICT/CASCADE
ON UPDATE RESTRICT/CASCADE
);

on delete cascade /on update cascade
标记: 删除 /修改 级联 即 如果外键关联的数据发生改变 也自动改变

on delete restrict /on update restrict
标记: 删除 修改 约束 不能修改外键关联的主键

check 指定值约束 mysql暂不支持

自增列 auto_increment 建表时一般加在主键列列上 (只有唯一才能自增长)

唯一约束

unique

主键不需要加入唯一约束

CREATE TABLE XS1
(
学号 varchar(6) NULL,
姓名 varchar(8) NOT NULL,
出生日期 datetime NULL,
PRIMARY KEY(学号),
UNIQUE(姓名)
);

非空约束
标记: 任何一列都可以

not null----

create table student(no int primary key, name varchar(10) not null unique,sex char(2));

主键约束
标记: 一个表上一般只有一个 也可以有复合主键

primary key -----

create table student(no int primary key, name varchar(10) not null,sex char(2));
create table student(no int primary key, name varchar(10) not null,sex char(2) NULL);

列的类型

char---字符 一个汉字占两个字节

date ---日期 格式为:2016-1-4

datatime 时间日期的结合

blob 二进制数据

int ---数字 可以规定长度

time ---时间 格式为 12:02:45

varchar ----字符串 占用 长度+1个字节

对表的操作

show tables -----显示所有的表

更改名字

alter table 表名 rename 新表名------更改表的名字

rename table 表名 to 新表名

drop table 名字 ------删除表

desc 表名-----显示表结构

表结构的修改 对列的操作

删除列

alter table 表名 drop 列类型-----删除列

ALTER TABLE XS DROP PRIMARY KEY; 删除表中的主键

增加列

alter table 表名 add 列名 列类型 after 列名3-----增加一列 在列3后边

alter table 表名 add 列名 列类型 -------增加新的一列,在最后的一列

alter table 表名 add 列名 first ---增加一列在第一列

修改列

alter table 表名 modify 列名称 列类型--------修改列的数据类型
标记: 只能修改列类型

alter table 表名 change 列名 新列名 列类型
标记: 同时修改列名和列类型

alter table xs1 change xh xh1 varchar(12) primary key; 修改列的名称和类型

更改表的名字

alter table 表名称 modify 列名称 列类型------更改类的数据类型

alter table 表名 change 原列名 新列名 新列类型--------更改类的数据类型

where 的用法

between 值1 and 值2-----在值1和值2之间

regexp 正则表达式匹配

and -并 or-或 is null 为空 is not null 不为空 = 等于 <> 不等于 != 不等于 < 小于 > 大于

对数据的操作

增加数据

insert into 表名 set 列名=数据,列名=数据...----------插入部分数据

insert into 表名(列名1,列名2...)values (数据1,数据2...) ---------插入部分数据 (表名后边括号里列出的数据)

insert into 表名(按列的顺序和类型插入数据)------插入数据(必须全部插入)

日期

now / sysdate当前日期-----返回当前日期和时间

curtime ---返回当前时间

curdate /current date 当前日期

删除数据
标记: 删除的是列表中的行

delete from 表名---------删除表中所有数据

truncate table 表明 -------删除表中所有数据 并重置主键

delete from 表名 where 列名=列值--------删除符合条件的数据

例如:DELETE FROM LOGIN WHERE NAME=‘WANGWU‘
DELETE FROM LOGIN WHERE NAME=‘ZHANGSAN‘ OR PASS=‘123‘;
DELETE FROM LOGIN WHERE NAME=‘ZHANGSAN‘ AND PASS=‘123‘; //带条件的行删除

修改数据

update 表名 set 列名=列值 where 指定条件-----更新符合指定条件的数据 如果没有条件则更改所有的值

UPDATE T3 SET NAME=‘ZHANGSAN‘; 所有的name列都变成zhangsan
UPDATE T3 SET NAME=‘LISI‘ WHERE ID =2;

查看数据

select * from 表名 where 条件-----按条件查找

select * from 表名------查看表的所有信息

按条件查找数据和操作

DISTINCT --------去除重复的数据

SELECT DISTINCT 列名 FROM BOOKS;

in 确定一个集合(即只能是集合中的内容)

WHERE ( BETWEEN AND ,AND OR IS NULL IS NOT NULL NOT , > < = != ........... IN 确定集合 )
IN 确定一个集合 NOT IN

select name from book where id in (125,127,129,131);

SELECT 查询的列 FROM 表名 WHERE 条件-----在查找的结果中只显示指定列

SELECT NAME,PRICE FROM BOOKS ;

as 起别名

SELECT 列名 AS 别名 FROM BOOKS;

在having 后边可以用

like 模糊查询 _ 单个字符 % 0个或多个字符

having ----相当于where 只能用在分组后面来作为判断

order by 列名 desc/asc ----按“列名”进行 降序/升序 排列

SELECT * FROM BOOKS ORDER BY pubdate desc

SELECT * FROM BOOKS ORDER BY price desc , num asc;
标记: 先按第一列排 当第一列相同是按第二列排 以此类推

子查询 ------即把查询结果作为另一个查询的参数 查找嵌套
标记: 如果返回是一个表 则需要在表后边起一个别名 (子查询结果) a a 即为别名

聚合函数
标记: 结果可以单独作为一个参数

max ---最大值

min-----最小值

avg-----平均值

count ----行数

sum-----求和

关联查询

内连接

只显示表的交集 即只显示两个表里都有的信息

select * from 表1 inner join 表2 on 表名.列名=表名.列名

最后的必须是表与表相同的列

右连接

显示位于连接语句的左边的表的所有信息 加上右边表的交集信息 没有的显示为null

select * from 表1 left join 表2 on 表名.列名=表名.列名

最后的必须是表与表相同的列

左连接

显示位于连接语句的右边的表的所有信息 加上左边表的交集信息 没有的显示为null

select * from 表1 right join 表2 on 表1名.列名=表2名.列名

分组

limit 5/ limit 5,6 ----分页 第一个数字 开始的序号 第二条数据 偏移量

表名 group by 列名------按列名分组

SELECT NOTE, AVG(PRICE) FROM BOOKS GROUP BY NOTE;

注意,分组语句 GROUP BY 后面的列可以在SELECT 后出现,
其他列出现没有意义。聚合函数经常结合GROUP BY一起使用

select 查找的语句顺序 [可省略]

时间: 2024-08-08 11:59:35

Java知识总结-3的相关文章

java 知识收集

1,若方法传入的对象参数为空,则在方法中改变参数并不会改变声明的对象 public void setList(List<String> list){ list = new ArrayList<String>() ; } @Test public void t4(){ List<String> list = null ; setList(list); System.out.println(list );//输出 null } 2,不要再foreach遍历的时候删除 jav

java知识查漏补缺

一.重写(override)和重载(overload)的区别 二者除了名字相似,其实没什么联系 范围不同:重写发生在同一个类的不同方法之间.重载发生在父类和子类自荐. 前提: 重写要求:方法名相同,参数列表不同,对于返回值类型不要求相同. 重载要求:方法名形同,参数列表也相同.重载是实现多态的关键,注意如果父类中的方法是private类型,那么子类中对应方法不算重载,而相当于是定义了一个新方法. 二.final的用法 修饰类:该类不能被继承 修饰方法:该方法不能被重写 修饰属性:该属性初始化后不

Java知识简介与环境变量配置问题

一.在学习一门语言中,不仅需要掌握其语法结构,开发平台以及环境也是很重要的.在开始Java学习之前首先对其进行压缩包的下载安装,以及开发平台环境下载安装.基于此下面文章就此展开: 1.        下载并安装JDK包,然后进行快速正确安装操作.(具体安装步骤网上很多,不在赘述.) 2.        安装成功后,需要对其进行环境变量配置,这一点有点特别,特别针对C语言.C#语言开发的同学更应该注意. 环境变量配置步骤如下: 打开:计算机属性->高级->环境变量选项卡->系统变量->

java在线聊天项目 实现基本聊天功能后补充的其他功能详细需求分析 及所需要掌握的Java知识基础

补充聊天项目功能,做如下需求分析: 梳理项目开发所需的必要Java知识基础 GUI将使用更快速的swt实现 SWT(Standard Widget Toolkit) Standard Widget Toolkit是一个开源的GUI编程框架,与AWT/Swing有相似的用处,著名的开源IDE-eclipse就是用SWT开发的. 在SWT之前,Sun已经提供了一个跨平台GUI开发工具包就是AWT (Abstract Windowing Toolkit). swt开发包下载地址 链接: https:/

Java知识图谱(附:阿里Java学习计划)

摘要:     本文主要描绘了Java基础学习过程,给出Java知识结构图,以及阿里Java岗学习计划,对Java学习爱好者.准备及将要从事Java开发方面的同学大有裨益. 温馨提示:     由于CSDN对图片的压缩,导致图片观看效果不理想,建议大家通过右键"在新标签页打开图片"进行观看或直接把图片下载下来观看. JVM 1. 内存模型( 内存分为几部分? 堆溢出.栈溢出原因及实例?线上如何排查?) 2. 类加载机制 3. 垃圾回收 Java基础 什么是接口?什么是抽象类?区别是什么

Java知识回顾 (11) 异常处理

距离最近的 Java知识回顾系列(10),2019.4.24日,到现在,已经近半年过去了. 感觉,做一件事情,如果有头无尾,实在不好,心里会一直悬着.所以,现在继续上面的内容. 再次声明,正如(1)中所描述的,本资料来自于runoob,略有修改. 异常是程序中的一些错误,但并不是所有的错误都是异常,并且错误有时候是可以避免的. 比如说,你的代码少了一个分号,那么运行出来结果是提示是错误 java.lang.Error. 异常发生的原因有很多,通常包含以下几大类: 用户输入了非法数据. 要打开的文

Java知识树梳理

Java知识树梳理 1.前端 HTML CSS JavaScript 2.后台 Java基础 算法 web方面 分布式.中间件.服务器等方面 大数据方面 3.数据库 原文地址:https://www.cnblogs.com/Lonnn/p/11727752.html

16.10.17学到的Java知识

1. 例:3-2.6==0.4的值是什么?可能乍一看,感觉是返回TRUE,因为3-2.6=0.4,0.4==0.4:所以返回TRUE. 然而,上面分析在JAVA中是错的. 由于浮点数的运算在JAVA中是不精确的,所以可以看出3-2.6=0.39999999999999:所以很明显3-2.6==0.4返回false. 问题来了,浮点数为什么在JAVA中运算不精确呢? 初步了解,与浮点数在计算机中的表示有关. (使用BigDecimal,一个参数是String类型,一个参数是Double类型的区别)

你应该更新的Java知识之常用程序库【转载】

在很多人眼中,Java 已经是一门垂垂老矣的语言,但并不妨碍 Java 世界依然在前进.如果你曾离开 Java,云游于其它世界,或是每日只在遗留代码中挣扎,或许是时候抬起头,看看老 Java 中的新东西. Guava Guava[gwɑ:v?],一句话,只要你做Java项目,就应该用Guava. guava 是 Google 出品的一套 Java 核心库,在我看来,它甚至应该是 JDK 的一部分.作为一个 Java 程序员,如果你没抱怨过JDK的设计,只能说明一点,你写得程序还是太少.正是JDK

16.10.18学到的Java知识

1. 突然间发现自己忘了关于自增自减运算符放在变量前后的区别是什么了? 于是乎,我查了资料. 如果只对自变量进行加1或减1的时候,放在前面和后面都是没有区别的. 但是,如果自增自减运算符使用在需要赋值给其他变量或与其他表达式进行计算时,那么就要注意了,因为这个时候自增自减运算符放在前面和后面就是有区别的了. 从图中可以很明显的看见,当进行赋值运算时,当运算符放在变量之后,是先取变量,然后在对变量进行加一或者减一的操作:当运算符放在变量之前的时候,是先对变量进行加一减一的操作,然后再取变量的值.