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'

mysql知识点+面试总结_第1张图片

查看当前年的所有月份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%';

如果为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

==========================================设计模式===============================

单例设计模式:保证对象的唯一性

懒汉式:延迟加载  当我需要这个对象的时候才去加载

面试之前  敲两遍饿汗式  懒汉式

8 java代码搭建监控页面

druid数据库连接池监控页面

你可能感兴趣的:(mysql,面试,数据库)