mysql知识点+面试总结

目录

1 mysql介绍

2 数据库常见语法

3 数据库表的常见语法

4 其他常见语法(日期,查询表字段)

5 JDBC开发步骤

6 索引

6.1 索引常见语法

7 常见面试总结

8 java集成数据库监控页面


1 mysql介绍

        数据库:存储在硬盘上的文件系统,通过标准的sql语句去操作        

        作用:存储各种各样的数据

2 数据库常见语法

2.1、创建数据库:

1、create database 数据库名   2、create database 数据库名称 character set 字符集

2.2、查看数据库:

        查看所有的数据库:show databases;

        查看单个数据库:show create database 数据库名;

2.3、删除数据库

        Drop database 数据库名称;

2.4、修改数据库

        Alter database 数据库名 character set 字符集;

2.5、数据库的其他操作

        查看当前使用的数据库:select database();

        切换数据库:use 数据库名;

2.6 修改库的排序规则

        ALTER DATABASE db1 CHARACTER SET utf8 COLLATE utf8_unicode_ci

3 数据库表的常见语法

1 单表约束有哪些?

1、主键(唯一和非空)2、唯一  unique3、非空  not null

2 表操作语法

        查看所有的表:show tables;

        查看单个表:desc 表名;

        删除数据库表:Drop table 表名;

        修改表名称(慎用):Rename table 旧表名 to 新表名

        添加列:alter 表名 add 列名 类型(长度) 约束

        修改列的类型和约束alter table 表名 modify 列名 类型(长度) 约束

        修改列的名称:alter table 表名 change 旧列名 新列名 类型(长度)  约束

        删除列:alter table 表名 drop 列名;    

        添加表字段:

                alter table user add certificates_type varchar(1) not null;

                alter table user add certificates_type varchar(1);

        修改字段类型和注释

        ALTER TABLE tb_user MODIFY COLUMN sex VARCHAR (20) COMMENT '年龄';

        修改字段类型

                alter table tb_user modify column age varchar(10);

        修改表的字符集和所有列的字符集:

ALTER TABLE order CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;

4 其他常见语法(日期,查询表字段

获取当前日期:select curdate(); 

获取当月最后一天:select last_day(curdate()); //2019-08-31

获取下个月的第一天:select date_add(curdate()-day(curdate())+1,interval 1 month); 

获取下个月的最后一天:select date_sub(date_sub(date_format(now(),'%y-%m-%d'),interval extract(day from now()) day),interval -2 month) 

获取当前年的最后一天:select concat(YEAR(now()), '-12-31') //2019-12-31

获取当前年的第一天:select DATE_SUB(CURDATE(),INTERVAL dayofyear(now()) - 1 DAY) //2019-01-01

获取前一天:SELECT date_sub(NOW(), INTERVAL 1 DAY);

日期格式化:select DATE_FORMAT(CURDATE(), '%Y-%m-%d')

其他查询:

  1. set @dt = now();
  2. select date_add(@dt, interval 1 day);   - 加1天
  3. select date_add(@dt, interval 1 hour);   -加1小时
  4. select date_add(@dt, interval 1 minute);    - 加1分钟
  5. select date_add(@dt, interval 1 second); -加1秒
  6. select date_add(@dt, interval 1 microsecond);-加1毫秒
  7. select date_add(@dt, interval 1 week);-加1周
  8. select date_add(@dt, interval 1 month);-加1月
  9. select date_add(@dt, interval 1 quarter);-加1季
  10. select date_add(@dt, interval 1 year);-加1年

查询表字段(包含字段名、字段类型、字段长度、是否为空以及属性等)

SELECT
    COLUMN_NAME AS columnName,
    data_type AS columnType,
    CHARACTER_MAXIMUM_LENGTH AS columnLength,
    IS_NULLABLE AS isNull,
    COLUMN_COMMENT AS columnComent
FROM
    INFORMATION_SCHEMA. COLUMNS
WHERE
    table_name = 'sys_user'

查看当前年的所有月份sql(直接复制运行即可)

SELECT
    DATE_FORMAT( DATE_ADD( CONCAT( YEAR ( DATE( '2018-04-01' )), '-01-01' ), INTERVAL ( CAST( help_topic_id AS SIGNED INTEGER )) MONTH ), '%Y-%m' ) MONTH 
FROM
    mysql.help_topic 
WHERE
    help_topic_id < 12 
ORDER BY
MONTH ASC

5 JDBC开发步骤

1、注册驱动 class.forNanme(“com.mysql.jdbc.Driver”)

注册驱动的方法  static void registerDriver(Driver driver)

2、获取连接对象

方法:

Static Connection getConnection(Stirng url, String user, Stirng password)

Connection:返回连接的对象

url:数据库的地址

user:用户名

password:密码

Connectionconn = DriverManager.getConnection(url,name,password);

3、创建语句执行平台:

Statement stat = conn.createStatement();

executeUpdate(sql);

4、执行sql语句

select * from 表名 条件;

5、处理结果集

6、释放资源

6 索引

6.1 索引常见语法

创建索引

//普通索引 alter table table_name add index index_name (column_list) ; //唯一索引 alter table table_name add unique (column_list) ; //主键索引 alter table table_name add primary key (column_list) ;

删除索引

drop index index_name on table_name ; // table_name :表名 index_name :索引名 alter table table_name drop index index_name ; alter table table_name drop primary key ;

查看索引

(1)show index from tblname;

(2)show keys from tblname;

4.5 查询mysql定时器是否开启

show VARIABLES LIKE '%event_scheduler%';

0

如果为OFF则为关闭,为NO为开启

mysql不能使用group by

set sql_mode ='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION';

7 常见面试总结

mysql常见的索引有哪些?

  • 主键索引

  • 唯一索引

  • 普通索引

  • 全文索引

  • 组合索引

导致索引的失效的原因有哪些?

  1. 查询条件不规则:如like,%a%,like %在左边
  2. 使用函数:如:length, where length(xx) = 1;
  3. 计算操作:如 where id+1=100;
  4. 查询字段的数据类型不匹配,如一个是utf8 另一个是utf8mb4

如何分析解决慢sql?

1 explain 分析sql
2 索引是失效 。模糊查询,范围查询,索引字段计算,类型转换,联合索引
3 不用使用select *
4 用union all代替union
5 关联查询,小表驱动大表。

mysql支持全文检索吗?

MySQL 5.7.6之前,全文索引只支持英文全文索引,不支持中文全文索引,需要利用分词器把中文段落预处理拆分成单词,然后存入数据库。


MySQL 5.7.6之后,MySQL内置了ngram全文解析器,支持中文分词,使用全文索引,用来支持中文、日文、韩文分词。

Mysql常见的存储引擎有哪些(重点)

常见的主要有:MyISAMinnodbmemory三个存储引擎的区别:

1 MyISAM管理非事务表提供高速存储和检索,以及全文搜索能力。MyISAM是默认的存储引擎。

MyISAM存储引擎不支持事务,不支持行级锁,只支持并发插入的表锁

2 InnoDB和存储引擎提供事务安全表,支持事务,默认被包括在所 有MySQL 5.1二进制分发版里,可以按照喜好通过配置MySQL来允许或禁止任一引擎。

8 java集成数据库监控页面

druid数据库连接池监控页面

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

天雨编程

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值