用表名查找数据库
mysql> SELECT table_schema FROM information_schema.TABLES WHERE table_name = 'test';
+--------------+
| table_schema |
+--------------+
| sql-demo |
+--------------+
1 row in set (0.00 sec)
查看存储过程
mysql> SHOW PROCEDURE STATUS;
+----------+-----------------------+-----------+------------+---------------------+---------------------+---------------+---------+----------------------+----------------------+--------------------+
| Db | Name | Type | Definer | Modified | Created | Security_type | Comment | character_set_client | collation_connection | Database Collation |
+----------+-----------------------+-----------+------------+---------------------+---------------------+---------------+---------+----------------------+----------------------+--------------------+
| sql-demo | create_docsis_table | PROCEDURE | sql-demo@% | 2023-02-24 14:47:41 | 2023-02-24 14:47:41 | DEFINER | | latin1 | latin1_swedish_ci | utf8mb4_unicode_ci |
| sql-demo | create_docsis_table1 | PROCEDURE | sql-demo@% | 2023-03-10 18:47:20 | 2023-03-10 18:47:20 | DEFINER | | latin1 | latin1_swedish_ci | utf8mb4_unicode_ci |
| sql-demo | create_docsis_table6 | PROCEDURE | sql-demo@% | 2023-02-17 17:15:09 | 2023-02-17 17:15:09 | DEFINER | | latin1 | latin1_swedish_ci | utf8mb4_unicode_ci |
| sql-demo | create_history_data | PROCEDURE | sql-demo@% | 2023-03-24 11:03:10 | 2023-03-24 11:03:10 | DEFINER | | latin1 | latin1_swedish_ci | utf8mb4_unicode_ci |
| sql-demo | create_history_data1 | PROCEDURE | sql-demo@% | 2023-03-24 11:31:27 | 2023-03-24 11:31:27 | DEFINER | | latin1 | latin1_swedish_ci | utf8mb4_unicode_ci |
| sql-demo | create_history_data15 | PROCEDURE | sql-demo@% | 2023-04-06 19:32:18 | 2023-04-06 19:32:18 | DEFINER | | latin1 | latin1_swedish_ci | utf8mb4_unicode_ci |
| sql-demo | create_history_data16 | PROCEDURE | sql-demo@% | 2023-04-06 19:30:58 | 2023-04-06 19:30:58 | DEFINER | | latin1 | latin1_swedish_ci | utf8mb4_unicode_ci |
+----------+-----------------------+-----------+------------+---------------------+---------------------+---------------+---------+----------------------+----------------------+--------------------+
7 rows in set (0.03 sec)
发现:在页面连接工具中,database的函数中可以查看到存储过程的相关具体信息
只要执行的存储过程名字一样,会直接找到里面原有的代码进行操作,所以会报docsis_0表存在。
java连接mysql操作
execute、executeUpdate、executeQuery三者的区别(及返回值)
ResultSet executeQuery(String sql); 执行SQL查询,并返回ResultSet 对象。
int executeUpdate(String sql); 可执行增,删,改,返回执行受到影响的行数。
boolean execute(String sql); 可执行任何SQL语句,返回一个布尔值,表示是否返回ResultSet
数据类型对应java mysql
MySql 数据类型 | 可以被转换成的 Java 类型 |
---|---|
CHAR, VARCHAR, BLOB, TEXT, ENUM, and SET | java.lang.String, java.io.InputStream, java.io.Reader, java.sql.Blob, java.sql.Clob |
FLOAT, REAL, DOUBLE PRECISION, NUMERIC, DECIMAL, TINYINT, SMALLINT, MEDIUMINT, INTEGER, BIGINT | java.lang.String, java.lang.Short, java.lang.Integer, java.lang.Long, java.lang.Double, java.math.BigDecimal |
DATE, TIME, DATETIME, TIMESTAMP | java.lang.String, java.sql.Date, java.sql.Timestamp |
ResultSet.getObject() 方法遵循 JDBC 规范对 MySql 和 Java 的类型进行转换。
MySql 类型名 | GetColumnClassName 返回值 | 返回的 Java 类 |
---|---|---|
BIT(1)(MySQL-5.0 新引入) | BIT | java.lang.Boolean |
BIT(大于 1) (MySQL-5.0 新引入) | BIT | byte[] |
TINYINT | TINYINT | 如果 tinyInt1isBit 配置设置为 true(默认为 true),是 java.lang.Boolean,存储空间 为 1;否则是为 java.lang.Integer |
BOOL, BOOLEAN | TINYINT | 参见 TINYINT。这些是 TINYINT(1) 另一种写法而已 |
SMALLINT[(M)] [UNSIGNED] | SMALLINT [UNSIGNED] | java.lang.Integer(不管是否无符) |
MEDIUMINT[(M)] [UNSIGNED] | MEDIUMINT [UNSIGNED] | java.lang.Integer;无符的话是 java.lang.Long(C/J 3.1 或更早),或者 java.lang.Integer(C/J 5.0 或更晚) |
INT,INTEGER[(M)] [UNSIGNED] | INTEGER [UNSIGNED] | java.lang.Integer;无符的话是 java.lang.Long |
BIGINT[(M)] [UNSIGNED] | BIGINT [UNSIGNED] | java.lang.Long;无符的话是 java.math.BigInteger |
FLOAT[(M,D)] | FLOAT | java.lang.Float |
DOUBLE[(M,B)] | DOUBLE | java.lang.Double |
DECIMAL[(M[,D])] | DECIMAL | java.math.BigDecimal |
DATE | DATE | java.sql.Date |
DATETIME | DATETIME | java.sql.Timestamp |
TIMESTAMP[(M)] | TIMESTAMP | java.sql.Timestamp |
TIME | TIME | java.sql.Time |
YEAR[(2|4)] | YEAR | 如果 yearIsDateType 配置设置为 false,返回的对象类型为 java.sql.Short;如果设置为 true(默认为 true),返回的对象类型是 java.sql.Date,其具体时间是为一月一日零时零分 |
CHAR(M) | CHAR | java.lang.String(除非该列字符集设置为 BINARY,那样返回 byte[]) |
VARCHAR(M) [BINARY] | VARCHAR | java.lang.String(除非该列字符集设置为 BINARY,那样返回 byte[]) |
BINARY(M) | BINARY | byte[] |
VARBINARY(M) | VARBINARY | byte[] |
TINYBLOB | TINYBLOB | byte[] |
TINYTEXT | VARCHAR | java.lang.String |
BLOB | BLOB | byte[] |
TEXT | VARCHAR | java.lang.String |
MEDIUMBLOB | MEDIUMBLOB | byte[] |
MEDIUMTEXT | VARCHAR | java.lang.String |
LONGBLOB | LONGBLOB | byte[] |
LONGTEXT | VARCHAR | java.lang.String |
ENUM(‘value1’,‘value2’,…) | CHAR | java.lang.String |
ET(‘value1’,‘value2’,…) | CHAR | java.lang.String |
Base64编码
Base64是一种编码方式,将字节数组按照规则转换成可见字符,并不属于加密的范畴。虽然Base64不是一种加密算法,但Base64在加密中却很常用,往往作为最后一步,将加密后的数据进行Base64编码,转换成可见字符。
原理:
Base64编码,是将原字节数组按照3byte8bit转换成4byte6bit,将这4byte对应的值作为下标,在可见字符表中得到对应的可见字符。也就是将3byte转成4byte,不足4byte补’=’,最多补两个’=’。这也就是为什么Base64出来的结果在结尾处经常有’=‘或者’=='的原因。、
编码过程:
待编码字符: "admin" 对应的字节数组: [97,100,109,105,110] 对应的二进制表示: [01100001,01100100,01101101,01101001,01101110] 重新按照6bit进行分组(最后一组不足6bit,在后面补0): [011000,010110,010001,101101,011010,010110,1110 00] 转换成整数表示: [24,22,17,45,26,22,56] 查表得到对应字符(不足4byte,补'='): ['Y','W','R','t','a','W','4','='] 可见字符表(大写字母 + 小写字母 + 数字 + '+' + '/'): ['A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z','a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','0','1','2','3','4','5','6','7','8','9','+','/']
因此,字符串“admin”对应的Base64编码值为“YWRtaW4=”。如果是“admi”,那么对应的Base64编码值为“YWRtaQ==”。所以,Base64编码之后,长度一定是4的倍数。
查指定最新数据是什么时候:
select timestamp from device_247 order by timestamp desc limit 10;