MySql小结

MYSQL连接:

mysql -u {user_name} -p
Enter password:******

MYSQL显示功能:

SHOW DATABASES; 显示所有的数据库
SHOW DATABLES; 显示数据库的的所有表
SHOW CREATE TABLE {table_name}; 查看创建表的语句
SHOW COLUMNS FROM {table_name}; 显示表的所有字段
SHOW TABLE STATUS; 查看表状态
SHOW INDEX FROM {table_name}: 查看表上建立的索引

MYSQL创建、删除数据库:

CREATE DATABASE {database_name};
DROP DATABASE {database_name};

MYSQL选择数据库:

USE {database_name};

MYSQL创建、删除表:

CREATE TABLE {table_name} ( {column_name} {column_type} );
DROP TABLE {table_name};
TRUNCATE TABLE {table_name} : 清除表内数据,保存表结构

MYSQL修改表:

ALTER TABLE {table_name} + 以下命令

RENAME TO {new_table_name}; 重命名表名
ADD {column_name} {column_type}; 添加列
DROP {column_name}; 删除列
MODIFY {column_name} {new_column_type}; 修改字段类型
CHANGE {old_column_name} {new_column_name} {new_column_type} 修改字段名及类型
ALTER {column_name} SET DEFAULT {value}; 为指定字段设定默认值
ALTER {column_name} DROP DEFAULT; 删除指定字段的默认值

 LIKE(与'='类似):

% 匹配多个字符
_ 匹配单个字符
两者通常与 LIKE 连用

 MYSQL索引:

索引分单列索引和组合索引。单列索引,即一个索引只包含单个列,一个表可以有多个单列索引;组合索引,即一个索引包含多个列
创建索引时,需要确保该索引是应用在SQL查询语句的条件
索引也是一张表,该表保存了主键与索引字段,并指向实体表的记录

创建索引(唯一索引 UNIQUE INDEX):
CREATE INDEX {index_name} ON {table_name}({column_name}(collumn_length));

ALTER TABLE {table_name} ADD INDEX {index_name}({column_name});

删除索引:
DROP INDEX {index_name} ON {table_name};

 MYSQL事务:

ACID :原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)
MYSQL 事务处理主要有两种方法:
1、用 BEGIN, ROLLBACK, COMMIT来实现
  BEGIN 开始一个事务
  ROLLBACK 事务回滚
  COMMIT 事务确认
2、直接用 SET 来改变 MySQL 的自动提交模式:
  SET AUTOCOMMIT=0 禁止自动提交
  SET AUTOCOMMIT=1 开启自动提交

MYSQL导入导出数据:

LOAD DATA LOCAL INFILE '{file_path}' INTO TABLE {table_name}({field,field,...})
FIELDS TERMINATED BY '{delimiter}'
LINES TERMINATED BY '{delimiter}';
如果指定LOCAL关键词,则表明从客户主机上按路径读取文件;如果没有指定,则文件在服务器上按路径读取文件

SELECT {field,field,..} INTO OUTFILE
FIELDS TERMINATED BY '{delimiter}' ENCLOSED BY '{delimiter}'
LINES TERMINATED BY '{delimiter}'
FROM {table_name};

导出SQL格式的数据
mysqldump -u {user_name} -p {database_name} {table_name} > '{file_path}'
Enter password:******

导入SQL格式的数据
mysql -u {user_name} -p {database_name} {table_name} < '{file_path}'
Enter password:******

MYSQL连接:

内连接基本语法:
  左表 inner join 右表 on 左表.字段 = 右表.字段;
结果:从左表中取出每一条记录,去右表中与所有的记录进行匹配;匹配必须是某个条件是左表中与右表中相同,才会保留结果,否则不保留;
注意事项:
  1、on 表示连接条件;条件字段代表相同的业务含义
  2、内连接可以没有连接条件,没有on之后的内容,这时候系统会保留所有结果(笛卡尔集)
  3、内连接可以使用where 代替 on通常不用where,因为where没有on效率高,on指匹配到第一条成功的就结束,其他不匹配;若没有,不进行匹配,而where会一直匹配,进行判断
  4、通常使用字段别名,表别名在查询数据的时候,不同表有同名字段,这时候需要加上表名才能区分,而若表名太长,使用表别名若不想使用默认的字段名 可以通过[as] 设置字段别名


外连接基本语法:

  左表 left/right join 右表on 左表.字段 = 右表.字段;
outer join 以某张表为主,取出里面的所有记录,然后每条与另外一张表进行连接,不管能不能匹配上条件,最终都会保留,能匹配,正确保留;不能匹配其他表的字段都置空null
分类:分为两种 左连接,右连接
left join 左外连接---左连接,以左表为主
right join 右外连接---右连接,以右表为主

交叉连接:几乎不用
cross join:从一张表中循环取出每一条记录,每条记录都会去另一张表中进行匹配;匹配结果一定保留(无条件匹配)------笛卡尔集;

自然连接:很少用
natural join 自然连接 就是系统自动匹配连接条件系统以字段名字作为匹配模式(同名字段作为字段,多个同名字段都作为条件)

MYSQL分组:

Group by 常与聚合函数一起使用(sum, max, min, count, avg)
Having与Where的区别
where 子句的作用是在对查询结果进行分组前,将不符合where条件的行去掉,即在分组之前过滤数据,where条件中不能包含聚组函数,使用where条件过滤出特定的行
having 子句的作用是筛选满足条件的组,即在分组之后过滤数据,条件中经常包含聚组函数,使用having 条件过滤出特定的组,也可以使用多个分组标准进行分组

MYSQL视图:

视图:是从一个或多个表导出的虚拟的表,其内容由查询定义;具有普通表的结构,但是不实现数据存储
对视图的修改:单表视图一般用于查询和修改,会改变基本表的数据,多表视图一般用于查询,不会改变基本表的数据
作用:
  ①简化了操作,把经常使用的数据定义为视图
  ②安全性,用户只能查询和修改能看到的数据
  ③逻辑上的独立性,屏蔽了真实表的结构带来的影响
创建视图:CREATE VIEW {view_name} AS {reconds};
删除视图:DROP VIEW {view_name}
使用限制:
  ①不能在视图上创建索引;
  ②在视图的FROM子句中不能使用子查询;

原文地址:https://www.cnblogs.com/tongyishu/p/11696133.html