[数据库]使用Java实现数据库编程—03 第三章 高级查询(一)

0 2018-07-21 03:01:10

1、修改表:(1)修改表名语法:

ALTER TABLE RENAME [ TO ] ;

注意:其中[TO]为可选参数,使用与否不影响结果,仅修改表名,表结构不变;

(2)添加字段语法:

ALTER TABLE表名 ADD 字段名 数据类型 [属性];

(3)修改字段语法:

ALTER TABLE表名 CHANGE 原字段名 新字段名 数据类型 [属性];

其中,”原字段名“指修改前的字段名,“ 新字段名”指修改后的字段名,“数据类型”指修改后的数据类型,

如果不需要修改数据类型,则和原数据类型保持一致,但“数据类型”不能为空。

注意:由于不同的类型的数据储存方式和长度不同,修改数据类型可能会影响数据表中已有的数据,因此,此种情况下不应轻易修改数据类型。

(4)删除字段语法:

ALTER TABLE表名 DROP字段名;

Eg:

DROP TABLE IF EXISTS `demo01`;

#创建表

CREATE TABLE  `demo01`(

`id` INT(10) NOT NULL AUTO_INCREMENT PRIMARY KEY,

`name` VARCHAR(8) NOT NULL

);

#修改表名

ALTER TABLE`demo01`RENAME`demo02`;

#添加字段

ALTER TABLE` demo02 `ADD`password` VARCHAR(32) NOT NULL;

#修改字段

ALTERTABLE` demo02 `CHANGE`name` `username`CHAR(10) NOT NULL;

#删除字段

ALTERTABLE` demo02 `DROP`password`;

2、添加主外键:(1)添加主键约束语法:

ALTER TABLE表名 ADD CONSTRAINT 主键名 PRIMARY KEY 表名(主键字段);

Eg:设置grade表中gradeId字段为主键

ALTER TABLE `grade` ADD CONSTRAINT `pk_grade` PRIMARY KEY `grade`(`gradeId`);

(2)添加外键约束语法:

ALTER TABLE表名 ADD CONSTRAINT 外键名 FOREIGN KEY (外键字段) REFE RENCES 关联表名(关联字段);

Eg:将student表的gradeId字段和grade表的gradeId字段建立外键关联:

ALTER TABLE `student`  ADD  CONSTRAINT fk_student_grade FOREIGN KEY(`gradeId`) REFERENCES `grade` (`gradeId`);

提示:在MySQL中,InnoDB储存类型的表支持外键,

MyISAM储存类型的表不支持外键,因此对于MySISAM储存类型的表,也可以通过建立逻辑关联的方式保证数据的完整性和一致性,

这种关联实际上是依照设计之初就定义好的固有逻辑,按照这种固有逻辑存取数据即可,不需要在数据库层面进行“硬绑定”。

3、DML(数据操作语言):(1)插入数据记录:

(A)插入单行数据记录语法:

INSERT INTO表名 [(字段名列表)] VALUES(值列表);

Eg:

INSERT INTO `student`(`loginPwd`,`studentName`,`gradeId`,`phone`,`bornDate`)

VALUES('123','黄小平',1,'13956799999','1996-5-8');

其中:

1.表的字段名是可选的,如果省略,则依次插入所有字段。

2.多个列表和多个值之间使用逗号分隔。

3.值列表必须和字段名列表数量相同,且数据类型相符。

4.如果插入的是表中部分数据,字段名列表必须填写。

(B)插入多行数据语法:在MySQL中INSERT语句支持一次插入多条记录,插入时可指定多个值列表,每个值列表之间逗号隔开。

INSERT INTO新表(字段名列表)VALUES(值列表1),(值列表2),……(值列表n);

注意:插入数据时需要指定具体字段名。

Eg:

INSERT INTO `subject`(`subjectNo`,`subjectName`,`classHour`,`gradeID`)

VALUES(1,'Logic Java',220,1),(2,'HTML',160,1),(3,'Java OOP',230,2);

注意:为避免表结构发生变化引发的错误,建议插入数据时写明具体字段名!

插入时间类型也需要 ‘ ’ 。

(2)将查询结果插入到新表语法:

CREATE TABLE新表(SELECT 字段1,字段2,..........FROM 原表);

注意:新表无需事先创建,如新表已存在,将会报错!

(3)更新数据记录语法:

UPDATE表名 SET 字段1=值,字段2=值,。。。。字段n=值[WHERE 条件];

(4)删除数据记录语法:

DELETE FROM表名 [WHERE 条件];

除此之外,也可以使用TRUNCATE语句删除表中所有行。语法:

TRUNCATE TABLE表名;

注意:TRUNCATE 语句实现删除表中所有数据,删除后将重置自增列,表结构及其字段、约束、索引保持不变执行速度比DELETE语句快。

SQL Sever数据库与MySQL数据库把数据插入新表语法对比:

4、数据查询:

●查询回顾:SQL Server中查询语句在MySQL中同样支持;SQL Service中的数据查询语法:

SELECT

FRMO

[WHERE ]

[GROUP BY]

[HAVING]

[OGDER BY[ASC 或 DESC]]

Eg:

SELECT `studentNo`,`studentName`,`phone`,`address`,`bornDate`

FROM `student`

WHERE `gradeId` = 1

ORDER BY studentNo;

其中:

1.字段名列表为要查询的字段名、各字段之间使用逗号分隔、若查询表中所有字段、则使用“* ”号表示。

2.FROM后的表名为要查询的数据的来源,可以单个可以多个。

3.WHERE子句为可选项,指定查询的条件。

4.GROUP BY子句表明查询出来的数据按指定字段进行分组。

5.HAVING子句用于筛选组。

6.OGDER BY子句指定按什么顺序显示查询出来的数据,什么字段的升序(ASC)或降序(DESC)

●LIMIT子句:MySQL查询语句中使用LIMIT子句限制结果集;SELECT

FROM

[WHERE  ]

[GROUP BY ]

[ORDER BY  [ASC或DESC]]

[LIMIT [位置偏移量, ]行数];

其中:位子偏移量:指从结果集中第几条数据开始显示(第一条记录的位置偏移量是:0,第二条记录的位置偏移量是:1,............),

此参数可选,当省略是从第一条记录开始显示。

2.行数:指显示记录的条数。

5、常用函数:聚合函数:

AVG(); 作用:返回某字段的平均值。

COUNT(); 作用:返回某字段的行数。

MAX(); 作用:返回某字段的最大值。

MIN(); 作用:返回某字段的最小值。

SUM(); 作用:返回某字段的和。数学函数:

CEIL(x);作用:返回大于或等于数值 x 的最小整数。

举例:SELECT CEIL (2.3);返回:3

FLOOR(x);作用:返回小于或等于数值 x 的最大整数

举例:SELECT FLOOR(2.3);返回:2

RAND();作用:返回0~1的随机数。

举例:SELECT RAND();返回:0.59464161●字符串函数:CONCAT(str1,str2,...,strln);作用:链接字符串str1,str2.....strln为一个完整的字符串。

举例:SELECT CONCAT("My","S","QL");   返回:MySQl

INSERT(str,pos,len,newstr);作用:将字符串 str 从 pos 位置开始,len 个字符长的子串替换为字符串 newstr

举例:SELECT INSERT('这是SQL Server 数据库',3,10,'MySQL');  返回:这是MySQl数据库

LOWER(str);作用:将字符串 str 中所有字符变为小写

举例:SELECT LOWER('MySQL');  返回:mysql

UPPER(str);作用:将字符串 str 中所有字符变为大写

举例:SELECT UPPER('MySQL');   返回:MYSQL

SUBSTRING(str,num,len);作用:返回字符串 str 的第num 个位置开始长度为len 的子字符串

举例:SELECT SUBSTRING('JavaMySQLOracle',5,5);  返回:MySQL●时间日期函数:CURDATE();作用:获取当前日期

举例:SELECT CURDTE();   返回:2016-08-08

CURTIME();作用:获取当前时间

举例:SELECT CURTIME();  返回:19:19:26

NOW();作用:获取当前日期和时间

举例:SELECT NOW();  返回:2016-08-08 19:19:26

WEEK(date);作用:返回日期date为一年中的第几周

举例:SELECT WEEK(NOW());   返回:26

YEAR(date);作用:返回日期date的年份

举例:SELECT YEAR(NOW()); 返回:2016HOUR(time);作用:返回时间按 time 的小时值

举例:SELECT HOUR(NOW());返回:9

MINUTE(time);作用:返回时间 time 的分钟值

举例:SELECT MINUTE(NOW()); 返回:43

DATEDIFF(date1,date2);

作用:返回日期参数 date1 和 date2 之间相隔的天数。

举例:SELECT DATEDIFF(NOW(),‘2018-8-8’);返回:2881

ADDDATE(date,n);作用:计算日期参数 date 加上 n 天后的日期。

举例:SELECT ADDDATE(NOW(),5);

返回:2016-09-02 09:37:07

6、子查询:以查询为查询条件的查询

Eg1:eg:

实现方法二:采用子查询实现:

1、 子查询是一个嵌套在 SELECT、INSERT、UPDATE 或 DELETE 语句或其他子查询中的查询

2、子查询在WHERE语句中的一般用法

子查询语法:

SELECT.... FROM 表1 WHERE 字段1 比较运算符(子查询);

其中:

子查询语句必须放置在一对圆括号内。

比较运算符包括:>,=,<,>=,<=。

外面查询称为父查询,圆括号中嵌入的查询称为子查询。

执行时,先执行子查询,在执行父查询,返回返回值。

注意;将子查询和比较运算符联合使用,必须保证子查询返回的值不能多于一个

Eg2: 使用子查询替换表连接;

实现方法一:采用表连接 :内连接(等值连接)

SELECT `studentName` FROM `student` stu

INNER JOIN `result` r ON stu.studentNO = r.studentNo

INNER JOIN `subject` sub ON r.subjectNo = sub.subjectNo

WHERE `studentResult` = 60 AND `subjectName` = 'Logic Java';

实现方法二:采用子查询

SELECT `studentName` FROM `student` WHERE `studentNo` = (

SELECT `studentNo` FROM `result`

INNER JOIN `Subject` ON result.subjectNo= subject.subjectNo

WHERE `studentResult`=60 AND `subjectName`='Logic Java'

);

1、子查询比较灵活、方便,常作为增删改查的筛选条件,适合于操纵一个表的数据

2、表连接更适合于查看多表的数据

7、IN和NOT IN 子查询:

●IN子查询:使用=,>等比较运算符时,要求子查询只能返回,一条或空的记录,

在MySQL中,当子查询跟随在=、!=、、>=和<=时,不允许子查询返回多条记录。

本文网址:http://www.shaoqun.com/a/362270.html

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们:admin@shaoqun.com。

JAVA

0

JAVA实现数据库编程第三章_[数据库]使用Java实现数据库编程—03 第三章 高级查询(一)...相关推荐

  1. java与数据类型相关的十个关键字_乐字节Java变量与数据类型之一:Java编程规范,关键字与标识符...

    大家好,这次要给大家带来的是Java变量与数据类型.本文是第一集:Java编程规范,关键字与标识符. 一.编程规范 任何地方的名字都需要见名知意: 代码适当缩进 书写过程成对编程 对代码进行合理注释 ...

  2. java12章_从零开始学Java 第12章 异常处理

    第12章  异常处理 世界上没有完美的事情,一个完善的程序不可能总是会准确无误的运行,它们的运行流程都是在开发人员所预料的范围之内.但是,实际却不尽人意.在程序的运行过程中可能会因为各种原因而导致出现 ...

  3. 深入理解java虚拟机 - jvm高级特性与最佳实践(第三版)_深入理解Java虚拟机,JVM高级特性与最佳实践!...

    第一部分 走进Java 第二部分 自动内存管理机制 第三部分 虚拟机执行子系统 参考资料: 书籍,网站资源 Java不仅仅是一门编程语言,还是一个由一系列计算机软件和规范形成的技术体系,这个技术体系提 ...

  4. java内存模型按照线程隔离性_深入理解Java多线程与并发框(第③篇)——Java内存模型与原子性、可见性、有序性...

    一.Java内存模型 Java Memory Modle,简称 JMM,中文名称 Java内存模型,它是一个抽象的概念,用来描述或者规范访问内存变量的方式.因为各中计算机的操作系统和硬件不同,方式机制 ...

  5. 自学java去哪找工作比较好_如何自学java?什么程度可以找工作?

    我个人学习Java就是自学的,所以还是有一些发言权,我是非计算机专业,上大三的时候想做程序员,因为感觉本专业不挣钱,用了一年的时间在学校自学了Java,学习的过程中无非就是两个字最重要:坚持. 因为学 ...

  6. java程序实现可移植性依靠的是_什么是JAVA的可移植性

    JAVA的可移植性: 1.JAVA作为一种编程语言:源代码可移植性 作为一种编程语言,JAVA提供了一种最简单同时也是人们最熟悉的可移植性–源代码移植.这意味着任意一个JAVA程序,不论它运行在何种C ...

  7. java JLabel改变大小后如何刷新_到底一行java代码是如何在计算机上执行的

    不知道你是否思考过,每次我们在IDEA中右键Run Application启动主方法,假如程序运行正常,控制台也打印出了你所要打印的信息,在这个过程中你知道这台计算机上那些硬件及其软件都是以什么样的方 ...

  8. java捕获定时器抛出的异常_详细了解Java中定时器Timer的使用及缺陷分析

    在需要定时并且周期执行任务时,在最初的JAVA工具类库中,Timer可以实现任务的定时周期执行的需求,不过有一定的缺陷,比如,Timer是基于绝对时间而非相对时间,因此Timer对系统时钟比较敏感,本 ...

  9. Java show两个整数加减_怎么样用java编写界面实现两个数的加法运算

    展开全部 import java.awt.Font; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; ...

  10. 用java和mysql开发网站怎么实现_如何用java开发一个网站?

    java语言和类库:java语言是支持整个java技术的底层基础,java类库是随java语言 Java 运行系统:主要指java虚拟机,负责将java与平台无关的中间代码翻译成本机的 Java ap ...

最新文章

  1. eclipse 收缩 选择行_一文解决Java初学者的选择难题
  2. 北京自动驾驶提速:华为奥迪图森完成高速测试,百度包揽全部40张载人牌照...
  3. F - 娜娜梦游仙境系列——多民族王国
  4. 快速pow算法c语言_嵌入式必知基础算法(二)
  5. sql批量删除和条件查询
  6. [数分提高]2014-2015-2第2教学周第1次课
  7. 数据分析之数据透视表(Office2019)
  8. 我的Python心路历程 第十期 (10.10 股票实战可视化历史趋势)
  9. V831——识别指定的人脸
  10. dmp(数据管理平台)是什么?
  11. maximum-subarray[最大连续子序列]
  12. html创建一个四行三列表单,HTML(三)表格table与表单form的基本使用
  13. oracle silent新增实例
  14. MMX指令集系列之二----移位运算和乘法指令
  15. 当黑夜自此笼罩-白夜行之感想一二
  16. 【絮叨.2】PRD才是高级语言,程序员就是产品的编译器
  17. R语言主成分分析PCA谱分解、奇异值分解预测分析运动员表现数据和降维可视化
  18. 根据2021年天文年历计算非表列的其他时刻的太阳赤经纬
  19. 设备异常状态检测相关内容(一)
  20. win7(已安装)win10双系统安装教程

热门文章

  1. Windows beanstalkd启动
  2. 计算节点nova服务启动失败
  3. IC设计基础002:RAM的读延时与读数据锁存
  4. 企业中到底需要怎样的人才?
  5. 《100个最具前景的职业》试读:网页设计师
  6. 某易云音乐JS逆向案例
  7. win10系统配置CentOS虚拟机后联网并使用静态IP上网
  8. ozon跨境平台如何实现自己养号给自己店铺测评呢?
  9. nginx.conf的完整配置说明
  10. Hack The Box-Timelapse