1. 通配符 (wildcard) 当想使用[charlist]
以两个字母开头怎么办,如以AA和BB开头的。
直接用select * from 表 where 字段 like 'AA%' or 字段 like 'BB%'
2. 同样能选取 table 中的两列in
和 or
之间有什么区别。
两者效果完全一样!
当IN
后不是子查询而是固定常量值列表时,它最后都会被解释成和OR
一模一样的条件,这有两层意思:
一、当IN(条件列表) 中的条件列表是少量值时,它会解释成OR
连接,即最后编译成和OR
连接一模一样的语句;
二、当IN(条件列表) 中的条件列表很长时,或者你使用OR
方法来连接条件并且连接数量很多时,则它们最后的解释效果也是一样的,即都是把条件列表创建为一个哈希表,然后和被查询的表中的行进行对比。
3.left join
和right join
多个表怎么办
4. 每个表都应该有一个primary key,并且每个表只能有一个primary key,为什么还能用 CONSTRAINT pk_PersonID PRIMARY KEY (Id_P,LastName)
去defining a PRIMARY KEY constraint on multiple columns.
突然发现这个问题好蠢。。。
5. 同样是删除数据 delete
和 drop
之间有什么区别。
drop
和delete
只是删除表的数据(定义),drop
语句将删除表的结构、被依赖的约束(constrain)、触发器 (trigger)、索引(index);依赖于该表的存储过程/函数将保留,但是变为invalid状态。delete
语句是DML语言,这个操作会放在rollback segement中,事物提交后才生效;如果有相应的触发器(trigger),执行的时候将被触发。truncate
、drop
是DDL语言,操作后即 生效,原数据不会放到rollback中,不能回滚,操作不会触发trigger。delete
语句不影响表所占用的extent、高水线(high watermark)保持原位置不动。drop
语句将表所占用的空间全部释放。truncate
语句缺省情况下将空间释放到minextents的 extent,除非使用reuse storage。truncate
会将高水线复位(回到最初)。- 效率方面:
drop
>truncate
>delete
5.安全性:小心使用drop
与truncate
,尤其是在 没有备份的时候,想删除部分数据可使用delete
需要带上where子句,回滚段要足够大,想删除表可以用drop
,想保留表只是想删除表的所有数据、 如果跟事物无关可以使用truncate
,如果和事物有关、又或者想触发 trigger,还是用delete
,如果是整理表内部的碎片,可以用truncate
跟上reuse stroage,再重新导入、插入数据。 delete
是DML语句,不会自动提交。drop
/truncate
都是DDL语句,执行后会自动提交。drop
一般用于删除整体性数据 如表,模式,索引,视图,完整性限制等delete用于删除局部性数据 如表中的某一元组DROP
把表结构都删了DELETE
只是把数据清掉 当你不再需要该表时, 用drop
;当你仍要保留该表,但要删除所有记录时, 用truncate
;当你要删除部分记录时(always with a WHERE clause), 用delete
.
6. 字长为2,mid()
取超过范围会怎么样。
超出的地方为空
7. Error Code: 1175. You are using safe update
SET SQL_SAFE_UPDATES = 0;
8.列名有空格怎么办列名