Java数据库第三章

1 .修改表:
(1)修改表名语法:
ALTER TABLE <旧表名> RENAME [ TO ] <新表名>;
注意:其中[TO]为可选参数,使用与否不影响结果。

(2)添加字段语法:
ALTER TABLE 表名 ADD 字段名 数据类型 [属性];

(3)修改字段语法:
ALTER TABLE 表名 CHANGE 原字段名 新字段名 数据类型 [属性];

其中,”原字段名“指修改前的字段名,“ 新字段名”指修改后的字段名,“数据类型”指修改后的数据类型,如果不需要修改数据类型,则和原数据类型保持一致,但“数据类型”不能为空。

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

(4)删除字段语法:
ALTER TABLE 表名 DROP字段名;

2 .添加主外键:
(1)添加主键约束语法:
ALTER TABLE 表名 ADD CONSTRAINT 主键名 PRIMARY KEY 表名(主键字段);

(2)添加外键约束语法:
ALTER TALE 表名 ADD CONSTRAINT 外键名 FOREIGN KEY (外键字段) REFE RENCES 关联表名(关联字段);



提示:在MySQL中,InnoDB储存类型的表支持外键,MyISAM储存类型的表不支持外键,因此对于MySISAM储存类型的表,也可以通过建立逻辑关联的方式保证数据的完整性和一致性,这种关联实际上是依照设计之初就定义好的固有逻辑,按照这种固有逻辑存取数据即可,不需要在数据库层面进行“硬绑定”。

3 .DML语句回顾:

(1)插入数据记录:
(A)插入单行数据记录语法:
INSERT INTO 表名 [(字段名列表)] VALUES(值列表);
其中:
1.表的字段名是可选的,如果省略,则依次插入所有字段。
2.多个列表和多个值之间使用逗号分隔。
3.值列表必须和字段名列表数量相同,且数据类型相符。
4.如果插入的是表中部分数据,字段名列表必须填写。

(B)插入多行数据语法 :在MySQL中 INSERT语句支持一次插入多条记录,插入时可指定多个值列表,每个值列表之间逗号隔开。
INSERT INTO 新表(字段名列表)VALUES(值列表1),(值列表2),。。。。(值列表n);
注意:插入数据时需要指定具体字段名。
举例:
INSERT INTO `subject`(`subjectNo`,`subjectName`,`classHour`,`gradeID`)
VALUES(1,'Logic Java',220,1),(2,'HTML',160,1),(3,'Java OOP',230,2);
注意:插入时间类型也需要 ‘ ’ 。

(C)将查询结果插入到新表语法:
CREATE TABLE 新表(SELECT 字段1,字段2,..........FROM 原表);


(2)更新数据记录语法:
UPDATE 表名 SET 字段1=值,字段2=值,。。。。字段n=值[WHERE 条件];

(3)删除数据记录语法:
DELETE FROM 表名 [WHERE 条件];

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

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

4.数据查询:
(1)
A :SQL Service中的数据查询语法:
SELECT<字段名列表>
FRMO<表名或视图>
[WHERE <查询条件>]
[GROUP BY<分组字段名>]
[HAVING<条件>]
[OGDER BY<排序的字段名>[ASC 或 DESC]]
其中:
1.字段名列表为要查询的字段名、各字段之间使用逗号分隔、若查询表中所有字段、则使用“ * ”号表示。
2.FROM后的表名为要查询的数据的来源,可以单个可以多个。
3.WHERE子句为可选项,指定查询的条件。
4.GROUP BY子句表明查询出来的数据按指定字段进行分组。
5.HAVING子句用于筛选组。
6.OGDER BY子句指定按什么顺序显示查询出来的数据,什么字段的升序(ASC)或降序(DESC)

B :在MySQL中查询语句语法:
SELECT<字段名列表>
FRMO<表名或视图>
[WHERE <查询条件>]
[GROUP BY<分组字段名>]
[OGDER BY<排序的字段名>[ASC 或 DESC]]
[LIMIT [ 位子偏移量,]行数];

其中:
1. 位子偏移量: 指从结果集中第几条数据开始显示(第一条记录的位置偏移量是:0,第二条记录的位置偏移量是:1,............),此参数可选,当省略是从第一条记录开始显示。
2. 行数: 指显示记录的条数。

5 .常用函数:(CSDN中可参考: https://blog.csdn.net/sinat_38899493/article/details/78710482
(1)聚合函数:
1.AVG(); 作用:返回某字段的平均值。
2.COUNT(); 作用:返回某字段的行数。
3.MAX(); 作用:返回某字段的最大值。
4.MIN(); 作用:返回某字段的最小值。
5.SUM(); 作用:返回某字段的和。

(2)字符串函数:
1.CONCAT(str1,str2,...,strln);
作用:链接字符串str1,str2.....strln为一个完整的字符串。
举例:SELECT CONCAT("My","S","QL");
返回:MySQl

2.INSERT(str,pos,len,newstr);
作用:将字符串 str 从 pos 位置开始,len 个字符长的子串替换为字符串 newstr
举例:SELECT INSERT('这是SQL Server 数据库',3,10,'MySQL');
返回:这是MySQl数据库

3.LOWER(str);
作用:将字符串 str 中所有字符变为小写
举例:SELECT LOWER('MySQL');
返回:mysql

4.UPPER(str);
作用:将字符串 str 中所有字符变为大写
举例:SELECT UPPER('MySQL');
返回:MYSQL

5.SUBSTRING(str,num,len);
作用:返回字符串 str 的第num 个位置开始长度为len 的子字符串
举例:SELECT SUBSTRING('JavaMySQLOracle',5,5);
返回:MySQL

(3)时间日期函数:
1.CURDATE();
作用:获取当前日期
举例:SELECT CURDTE();
返回:2016-08-08

2.CURTIME();
作用:获取当前时间啊你
举例:SELECT CURTIME();
返回:19:19:26

3.NOW();
作用:获取当前日期和时间
举例:SELECT NOW();
返回:2016-08-08 19:19:26

4.WEEK(date);
作用:返回日期date为一年中的第几周
举例:SELECT WEEK(NOW());
返回:26

5.YEAR(date);
作用:返回日期date的年份
举例:SELECT YEAR(NOW());
返回:2016

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

7.MINUTE(time);
作用:返回时间 time 的分钟值
举例:SELECT MINUTE(NOW());
返回:43

8.DATEDIFF(date1,date2);
作用:返回日期参数 date1 和 date2 之间相隔的天数。
举例:SELECT DATEDIFF(NOW(),‘2018-8-8’);
返回:2881

9.ADDDATE(date,n);
作用:计算日期参数 date 加上 n 天后的日期。
举例:SELECT ADDDATE(NOW(),5);
返回:2016-09-02 09:37:07

(4)数学函数:
1.CEIL(x);
作用:返回大于或等于数值 x 的最小整数。
举例:SELECT CEIL (2.3);
返回:3

2.FLOOR(x);
作用:返回小于或等于数值 x 的最大整数
举例:SELECT FLOOR(2.3);
返回:2

3.RAND();
作用:返回0~1的随机数。
举例:SELECT RAND();
返回:0.59464161

6 .子查询:以查询为查询条件的查询。
(1)子查询语法:
SELECT .... FROM 表1 WHERE 字段1 比较运算符(子查询);

其中:
子查询语句必须放置在一对圆括号内。
比较运算符包括:>,=,<,>=,<=。
外面查询称为父查询,圆括号中嵌入的查询称为子查询。
执行时,先执行子查询,在执行父查询,返回返回值。

. IN子查询:使用 IN 关键字可以使父查询匹配子查询返回多个单字段值,可以查询是否在某个值之间。




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值