目录
1 mysql介绍
2 数据库常见语法
3 数据库表的常见语法
4 其他常见语法(日期,查询表字段)
5 JDBC开发步骤
6 索引
6.1 索引常见语法
7 常见面试总结
8 java代码搭建监控页面
数据库:存储在硬盘上的文件系统,通过标准的sql语句去操作
作用:存储各种各样的数据
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
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;
获取当前日期: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')
其他查询:
- set @dt = now();
- select date_add(@dt, interval 1 day); - 加1天
- select date_add(@dt, interval 1 hour); -加1小时
- select date_add(@dt, interval 1 minute); - 加1分钟
- select date_add(@dt, interval 1 second); -加1秒
- select date_add(@dt, interval 1 microsecond);-加1毫秒
- select date_add(@dt, interval 1 week);-加1周
- select date_add(@dt, interval 1 month);-加1月
- select date_add(@dt, interval 1 quarter);-加1季
- 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
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、释放资源
创建索引
//普通索引 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';
mysql常见的索引有哪些?
主键索引
唯一索引
普通索引
全文索引
组合索引
导致索引的失效的原因有哪些?
- 查询条件不规则:如like,%a%,like %在左边
- 使用函数:如:length, where length(xx) = 1;
- 计算操作:如 where id+1=100;
- 查询字段的数据类型不匹配,如一个是utf8 另一个是utf8mb4
==========================================设计模式===============================
单例设计模式:保证对象的唯一性
懒汉式:延迟加载 当我需要这个对象的时候才去加载
面试之前 敲两遍饿汗式 懒汉式
druid数据库连接池监控页面