SQL的一些区别记录

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>;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值