1)改字段名字
2)改字段类型、长度
3)修改表备注、修改字段备注
在CREATE之后添加关键字UNIQUE即可
格式与单列索引类似
1)truncate –删除所有数据,保留表结构,不能撤销还原,速度快
2)delete –是逐行删除,不适合大量数据删除,速度极慢
3)drop –删除表,表数据和表结构一起删除,速度快
1、
这将显示表table_name的列名、数据类型、约束等信息。
2、
这将显示创建表table_name的SQL语句,其中包含表的列定义、索引、约束等信息。
3、
这将返回表your_table的列名、数据类型、主键、是否可为空等信息。需要将your_database和your_table替换为实际的数据库和表名。
B、如果用where筛选,sql是这样
所以,where和having,相同的筛选条件、查询结果并不相同。
方案一:核心思路是,将集合拆分,使用or 连接。(太复杂、太慢,不推荐)
select * from A where id in (1, 2, …, 1000) or id in (1001, …, 1999)
用mybatis的话就是这样
但是这种方法不好用,实测中3万条左右的机构,用这种查询查了好久都没出来,感觉数据库都要奔溃了。
方案二:用子查询(推荐)
其实in查询不能超过1000个元素,是mybatis的限制,数据库是支持的。
1)多条结果,合并成一条
对oracle
默认用“,”分割;也可以设定分隔符
对mysql
2)多个字段,拼接成一个
Oracle数据库,可以使用字符串连接运算符 ||
Mysql数据库有以下两种方法
法一:通过函数CONCAT()
此函数可以把任意多个字符串拼接到一起,多少个字段也能拼接、多少个符合也能拼接
3)多条查询sql结果拼接
使用关键字union 或 union all实现多条查询结果的拼接,两者区别:
Union会自动去重;
Union All不会去重;
补充:很多时候or查询为了增加命中索引的概率,会把or查询变为多条查询、并用union或union all拼接
case后如果写字段,那when后就写值,判断的就是字段是否等于值;
case后可以不写字段,这时when后要写‘字段与值的对比’,判断的就是这个对比是否成立。
1)针对单个字段,最简单的判断