数据库小知识

155 阅读3分钟
  1. oracle 数据库查询, 字符串不能用双引号 条件中的数字age="1"和age=1均有效, 与字段类型无关 image.png image.png

以上均可以查到数据

  1. dbcp线程池的DelegatingPrePareStatement设置的问号参数保存在_stmt --> _stmt --> Preparestatement --> parameterString中

  2. mysql中保存boolean值用tinyint类型, mysql没有boolean类型, jdbc设置时用PreparedStatement setBoolean(int parameterIndex, boolean x) , Insert语句中设置true不能带单引号:

-- mysql会自动将true转为1
Insert into table_name(id,myTinyInt) values(1,true);
  1. 查询不同数据库所有保留关键字 1). oracle
select * from v$reserved_words order by keyword asc;

查询结果

2). mysql查找关键字目前只知道官网手册可以查询.

JDBC只提供了部分关键字的获取办法:

DatabaseMetaData.getSQLKeywords() 

获取此数据库的还“不”是 SQL:2003 关键字的所有 SQL 关键字的逗号分隔列表。 en.wikipedia.org/wiki/SQL:20… 7. sql关键字为字段名时, sql语句中使用到时可以使用双引号" "括起来, 可以防止报错, 双引号支持oracle和mysql, 反引号 只支持mysql 8. mysql的binary数据类型的长度单位是byte,设置长度为1,执行sql ···sql insert into tablename values(b'1000001'); ··· 会看到显示为 A , 其中b'1000001'是二进制的65,对应的ascii字符为A 9. MySQL有四种BLOB类型:   ·tinyblob:仅255个字符   ·blob:最大限制到65K字节   ·mediumblob:限制到16M字节   ·longblob:可达4GB 10. Oracle中Clob与Blob类型: Clob(Character Large Object):数据库中的一种保存文件所使用的类型。 可以用来保存大文本,xml等 Blob(Binary Large Object):二进制大对象,是一个可以存储二进制文件的容器。可以保存图片,文件,音频等 11. 表中设置更新时间字段,类型timestamp,默认值 '1980-01-01 00:00:00',每次更新纪录时update_time字段修改为当前时间CURRENT_TIMESTAMP ,字段备注为'最近一次更新时间'。这样做省去了每次更新数据都需要在代码中添加修改时间戳的麻烦

update_time timestamp NULL DEFAULT '1980-01-01 00:00:00' ON UPDATE CURRENT_TIMESTAMP COMMENT '最近一次更新时间'
  1. MySQL批量插入
INSERT INTO student VALUES('1','mwq','18'),('2','shh','19'),('3','wdl','20')
  1. mybatis中mapper文件一般默认的两个SQL
selectAll() 
selectByLimit(Object obj)
  1. 类似用户表一般都有created_by create_time last_updated_by last_update_time is_deleted五个字段
  2. mybatis查询方法,若方法返回值是List,查询结果为0时,返回空List;若方法返回值是Object,查询结果为0时,返回null
  3. 设置数据库自增ID
  4. CREATE TABLE `user`(
    	id BIGINT(11) NOT NULL AUTO_INCREMENT COMMENT '主键ID',
    	username varchar(255) NOT NULL COMMENT'用户名',
    	....
    	PRIMARK KEY(id),
    	UNIQUE KEY `uniq_user_username` (username)
    )ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf-8 COMMENT='用户表';
    

    可以使用SQL查询最近生成的一个自增ID

    SELECT LAST_INSERT_ID()
    
    1. 查询MySQL数据库编码
    > show variables like 'char%';
    

    查询结果如下

    Variable_nameValue
    character_set_clientutf8
    character_set_connectionutf8
    character_set_databaseutf8
    character_set_filesystembinary
    character_set_resultsutf8
    character_set_serverutf8
    character_set_systemutf8
    character_sets_dirE:\Program Files (x86)\MySQL\MySQL Server 5.7\share\charsets|
    查看这几种编码的区别