MySql高级查询(一)

注意:

在创建数据表之后,可能因为某些原因需要修改表结构,这时如果将表删后重建,还需考虑表中的数据,风险较大,此时应该在原有表上做修改,MySQL使用ALTER关键字实现。

1. 修改表名

语法:

alter table <旧表名> rename [to] <新表明>;
To:可选参数,使用或不使用不影响结果。
仅修改表名,表结构不变

2. 添加字段

语法:

alter table 表名 add 字段名 数据类型 [属性];

3. 修改字段

语法:

alter table 表名 change 原子段名 新字段名 数据类型 [属性];

4. 删除字段

语法:

alter table 表名 drop 字段名;

5. 添加主外键

(1) 添加主键约束

Alter table 表名 add constraint 主键名 primary key 表名(主键字段);

(2) 添加外键约束

Alter table 表名 add constraint 外键名 foreign key (外键字段) references 关联表名 (关联字段);

重点:

在MySQL中,InnoDB存储类型的表支持外键,MyIsam不支持外键。对于MyIsam存储的表,可以通过建立逻辑关联的方式保证数据的完整性和一致性。

DML语句回顾

  1. 插入单行数据
    语法:insert into 表名 [ (字段名列表)] values(值列表);
    其中:
    (1) 表的字段名选,如果省略,依次插入所有字段,
    (2) 多个列表和多个值之间使用逗号隔开
    (3) 值列表必须和字段列表数量相同,数据类型相符
    (4) 如果插入的是字段名部分数据,字段名列表必须填写
  2. 插入多行数据
    语法:insert into 表名 (字段名列表) values(值列表1),(值列表2),(值列表n);
  3. 将查询结果插入到新表
    将现有的数据备份到其他表中,以下

句式1:

INSERT INTO 新表(字段1,字段2……) 
SELECT字段1,字段2……
FROM 原表;

句式2:

	CREATE TABLE 新表
      (SELECT 字段1,字段2 ,  ……
    FROM 原表);
  • 句式1需要按照插入字段的类型,顺序,个数创建新表,才能插入数据
  • 句式2随插入语句执行而创建新表,无需先创建表

更新数据记录

	Update 表名 set 字段1=值1,字段2=值2,字段n=值n [where条件]

删除数据记录

	Delete from 表名 [where条件];
	Truncate table 表名; 
  • Truncate 语句实现删除表中的所有数据,删除后重置自增列,表结构及其字段,约束,索引保持不变,执行速度比delete快。

数据查询

DQL语句回顾语法:

SELECT  <字段名列表>
FROM  <表名或视图>
[WHERE  <查询条件>]
[GROUP BY <分组的字段名>]
[HAVING <条件>]
[ORDER BY <排序的字段名> [ASC 或 DESC]]

其中:

字段列表为要查询的字段名,个字段之间用逗号分开,若查询表中的所有字段则使用 * 代表。
from后的表名为要查询数据来源,可以单个或者多个
where子句为可选项,执行查询的条件
group by子句表名查询出来的数据按指定字段进行分组
having子句用于刷选组
order by子句指定按什么顺序显示查询出来的 数据,升序(ASC)或降序(DESC)

Limit子句

SELECT <字段名列表>
FROM <表名或视图>
[WHERE <查询条件>]
[GROUP BY <分组的字段名>]
[ORDER BY <排序的列名> [ASC 或 DESC]]
[LIMIT [位置偏移量, ]行数];

使用LIMIT子句时,注意第1条记录的位置是0

常用函数

  1. 聚合函数
    MySql高级查询(一)_第1张图片
  2. 字符串函数
    MySql高级查询(一)_第2张图片
  3. 时间日期函数
    MySql高级查询(一)_第3张图片
  4. 数学函数
    MySql高级查询(一)_第4张图片

子查询

子查询一般的用法

Select …… from 表1 where 字段1 比较运算符 (子查询);

  • 其中子查询语句必须放在一对括号内;比较运算符> ,=,>=,<=。外面的查询称为父查询,圆括号内嵌入的查询就是子查询。执行时,先执行子查询,求出查询部分的值,在执行整个父查询,返回最后的结果。

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

  • 别名:使用AS关键字,符合ANSI或者使用空格,简便的方法

  • 注意:当某个表命名了后,在使用中必须统一使用该表的别名,否则将产生语法错误

提示:

一般来说表连接都可以用子查询替换,但反过来却不一定,有的子查询不能用表连接查询。子查询比较灵活,方便,形式多样,适合作为查询的筛选条件,而表连接更适合查看多表的数据

In和not in子查询

in

使用in关键字可以使父查询匹配子查询返回的多个单字段值。

not in

返回的值和in相反

总结

MySql高级查询(一)_第5张图片

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