1、MySQL 里分页一般用 LIMIT 来实现
select* from article LIMIT 1,3
与
select * from article LIMIT 3 OFFSET 1
上面两种写法都表示取 2、3、4 三条条数据:
当 LIMIT 后面跟两个参数的时候,第一个数表示要跳过的数量,后一位表示要取的数量,例如:
select* from article LIMIT 1,3 就是跳过 1 条数据,从第 2 条数据开始取,取 3 条数据,也就是取 2、3、4 三条数据。
当 LIMIT 后面跟一个参数的时候,该参数表示要取的数据的数量。
例如 select* from article LIMIT 3 表示直接取前三条数据,类似 sqlserver 里的 top 语法。
当 LIMIT 和 OFFSET 组合使用的时候,LIMIT 后面只能有一个参数,表示要取的的数量,OFFSET表示要跳过的数量 。
例如 select * from article LIMIT 3 OFFSET 1 表示跳过 1 条数据,从第 2 条数据开始取,取3条数据,也就是取 2、3、4 三条数据。
2、insert into select 和select into from 的区别
insert into select :为已经存在的表批量添加新数据。
即,指定一张想要插入数据的表格--->对数据进行加工筛选--->填入一张准备好的表格。
insert into (准备好的表) select *(或者取用自己想要的结构)from 表名 where 各种条件
insert into scorebak select * from socre where neza='neza' --插入一行,要求表scorebak 必须存在
select into from :将查询出来的数据整理到一张新表中保存,表结构与查询结构一致。
即,查询出来结果--->复制一张同结构的空表--->将数据拷贝进去。
select *(查询出来的结果) into newtable(新的表名)from where (后续条件)
select * into scorebak from score where neza='neza' --也是插入一行,要求表scorebak 不存在
3、执行没有 WHERE 子句的 UPDATE 要慎重
在 MySQL 中可以通过设置 sql_safe_updates 这个自带的参数来解决,当该参数开启的情况下,你必须在update 语句后携带 where 条件,否则就会报错。
set sql_safe_updates=1; 表示开启该参数 安全模式打开
4、删除的三个语句:DROP、TRUNCATE、 DELETE 的区别
DROP: 操作不可恢复,是一种物理删除 DROP test;
删除表test,并释放空间,将test删除的一干二净。
TRUNCATE: 直接将表中的数据页清空,操作无法回滚 TRUNCATE test;
删除表test里的内容,并释放空间,但不删除表的定义,表的结构还在。
DELETE: 操作可以回滚
1、删除指定数据
删除表test中年龄等于30的且国家为US的数据
DELETE FROM test WHERE age=30 AND country='US';
2、删除整个表
仅删除表test内的所有内容,保留表的定义,不释放空间。
DELETE FROM test 或者 DELETE FROM test; DELETE * FROM test 或者 DELETE * FROM test;
5、select into from 和 insert into select 都是用来复制表
两者的主要区别为: select into from 要求目标表不存在,因为在插入时会自动创建;insert into select from 要求目标表存在。
1. 复制表结构及其数据:
create table table_name_new as select * from table_name_old
2. 只复制表结构:
create table table_name_new as select * from table_name_old where 1=2;
或者:
create table table_name_new like table_name_old
3. 只复制表数据:
如果两个表结构一样:
insert into table_name_new select * from table_name_old
如果两个表结构不一样:
insert into table_name_new(column1,column2...) select column1,column2... from table_name_old
6、MySql 中如何删除未命名的外键?
删除外键需要知道外键的名称,如果创建时没有设置名称则会自动生成一个,你需要获取改外键的信息。
使用以下命令获取外键信息:
SELECT constraint_name FROM information_schema.REFERENTIAL_CONSTRAINTS WHERE constraint_schema = <'db_name'> AND table_name = <'table_name'>;
SELECT * FROM information_schema.KEY_COLUMN_USAGE WHERE constraint_schema = <'db_name'> AND table_name = <'table_name'> AND referenced_table_name IS NOT NULL;
可以使用以下命令来删除外键:
ALTER TABLE <table_name> DROP INDEX <fk_name>;
652

被折叠的 条评论
为什么被折叠?



