目录
一、子查询
1、where子句中使用子查询
2、from后使用子查询(常用)
3、select后嵌套子查询
二、union(可以将查询结果集相加)
1、语法
2、查询结果相加
三、limit
1、语法机制
2、执行顺序
3、标准分页sql
四、创建表
1、语句
2、常见数据类型
五、insert语句插入数据
1、语法
2、插入多行数据
六、表的复制
1、语法
2、将表的查询结果插入一张表中
七、修改(更新)数据
1、语法
八、删除数据
1、语法
2、删除大表
定义:select语句中嵌套select语句,被嵌套的select语句称为子查询
子查询出现位置: select ...(select).. from ...(select).. where ...(select)..
语法:select 字段 from 表名 where 条件(select 字段 from 表名);
PS:where语句后不能跟分组查询关键字(avg\min\max\ ...)
注意:将问题分步处理,将新表与另一张表进行表连接得到所需数据;有时无需看作新表,具体问题具体分析
" " + 字母:表示起别名
语法:select 字段1,字段2(select 字段 from 表名2 where 条件) as 别名(给字段起别名) from 表名1;
PS:使用union上下两段SQL语句查询的字段数必须一样多
union:既可以将两张有关联的表的查询结果相加,又可以将两张不相关联的表的查询结果相加
方法一:select 字段 from 表名 where 条件1 or 条件2;
方法二:select 字段 from 表名 where 条件(字段 in ('...','...'))
方法三:使用union关键字
· limit是mysql中特有的,其他数据库中没有,不通用
· limit用于取结果中的部分数据
limit startIndex,length
startIndex表示起始位置
length表示取几个
语法:select 字段 from 表名 order by 字段 limit 起始位置,取的个数;
PS:省略起始位置时,默认从0位置开始取
每页显示pageSize条记录
第pageNo页:(pageNo - 1) * pageSize,pageSize
pageNo:第几页
pageSize:每页几条记录
· 以上DQL部分结束
int:整数型(java中的int)
bigint:长整型(java中的long)
float:浮点型(java中的float double)
char:定长字符串(java中的String)
varchar:可变长字符串(StringBuffer\StringBuilder)
data:日期类型(java中的java.sql.Date类型)
BLOB:二进制大对象(存储图片,视频等流媒体信息)
CLOB:字符大对象(存储较大文本)
实际开发中,当某个字段中的数据长度不发生改变的时候,采用char;当数据长度不确定的时候,采用varchar
表名在数据库中一般建议以:t_ 或 tbl_ 开始
insert into 表名(字段名1,字段名2,字段名3,...) values (值1,值2,值3,...)
要求:字段的数量和值的数量相同,并且数据类型要对应相同
· 当一条insert语句执行成功之后,表格中必然会多一条记录,即使多的这条语句中的某些字段是NULL,后期也不能通过insert语句在该NULL位置插入数据,只能使用update语句进行更新
· insert into 表名(...)——表名后的字段可以省略不写
语法:insert into 表名 (字段1,字段2,...) values (第一条数据),(第二条数据),...;
create table 表名 as select * from 被复制的表名;
insert into 表名 select * from 被查询的表名;
update 表名 set 字段1 = 值1,字段2 = 值2,... where 条件;
PS:没有条件整张表的数据全部更新;切记逗号不能写成and
delete from 表名 where 条件;
PS:没有条件表示删除全部数据
由于delete删除不会释放物理存储空间,所以在删除大表时速度特别慢;删除大表时一般采用truncate(截断) 语法:truncate table 表名;
使用时必须问清楚数据是否还有作用
· 修改表结构直接使用软件即可