MYSQL基本用法,SQL语句学习记录。不断更新。

用过的知识点总是容易遗忘,这篇文章用于记录mysql学习过程中遇到的知识点。积少成多,厚积薄发。

知识点:

多表链接子查询

外键约束:
Mysql中如果表和表之间建立的外键约束,则无法删除表及修改表结构。
解决方法是在Mysql中取消外键约束:  SET FOREIGN_KEY_

CHECKS=0;  
然后将原来表的数据导出到sql语句,重新创建此表后,再把数据使用sql导入,
然后再设置外键约束: SET FOREIGN_KEY_CHECKS=1; 

删除表:

DLELTE:删除表中一条或多条记录,只删除记录保留表的结构(删除的是记录);
TRUNCATE:删除表中所有的记录,也是只删除记录保留表的结构(删除的是记录);
DROP:删除的是整个表,包括表中的记录和表的结构(删除的是表)。

存储引擎:

使用外键,事务等功能需要在新建数据库时候加:InnoDB存储引擎
innodb存储引擎提供了表锁、行锁和意向锁用来实现事物在不同粒度上进行上锁,
从而提高数据库的并发访问,并且保证数据的完整性和一致性。

create table xxx()engine=innodb;

主键:

create table xxx(
 `id` INT(36) UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT COMMENT '数据id'
)AUTO_INCREMENT=32

COMMENT:注释

AUTO_INCREMEN:自增长

UNSIGNED: 是int 无符号,就是都是正数
NOT NULL:表示该字段不允许空值

索引思想:

索引分单列索引和组合索引。单列索引,即一个索引只包含单个列,一个表可以有多个单列索引,但这不是组合索引。组合索引,即一个索引包含多个列。

创建索引时,你需要确保该索引是应用在SQL 查询语句的条件(一般作为 WHERE 子句的条件)。

实际上,索引也是一张表,该表保存了主键与索引字段,并指向实体表的记录。

上面都在说使用索引的好处,但过多的使用索引将会造成滥用。
因此索引也会有它的缺点:虽然索引大大提高了查询速度,同时却会降低更新表的速度,如对表进行INSERT、UPDATE和DELETE。因为更新表时,MySQL不仅要保存数据,还要保存一下索引文件。

建立索引会占用磁盘空间的索引文件。

分页SQL:

ORDER BY: 语句用于根据指定的列对结果集进行排序。ORDER BY: 语句默认按照升序对记录进行排序。

使用LIMITOFFSET进行分页

SELECT 
    *(需要查询的数据)
FROM
    table1(查询的表)
ORDER BY column_list(排序方式)
LIMIT row_count(需要查询的行数) OFFSET offset(从多少行开始查,跳过的行数);

上边sql可简化为:
SELECT 
    *(需要查询的数据)
FROM
    table1(查询的表)
ORDER BY column_list(排序方式)
LIMIT offset(从多少行开始查,跳过的行数。如果写2表示从第3行开始查询),row_count(需要查询的行数);

查看建表sql语句:

SHOW CREATE TABLE `table_name` 

数据库新增加一列:

如果想在一个已经建好的表中添加一列,可以用诸如:

alter table TABLE_NAME add column NEW_COLUMN_NAME varchar(20) not null;

这条语句会向已有的表中加入新的一列,这一列在表的最后一列位置。如果我们希望添加在指定的一列,可以用:

alter table TABLE_NAME add column NEW_COLUMN_NAME varchar(20) not null after COLUMN_NAME;

注意,上面这个命令的意思是说添加新列到某一列后面。如果想添加到第一列的话,可以用:

alter table TABLE_NAME add column NEW_COLUMN_NAME varchar(20) not null first;


查询去重distinct:

select distinct 列名  from 表名;

IN 操作符:

IN 操作符允许我们在 WHERE 子句中规定多个值。

select * from table1 where id in (select distinct 外键 from table2)

 

 

 

 

 

 

 

 

 

你可能感兴趣的:(数据库)