我算是最近正式才接触后端开发,陆陆续续整理做了一些MySQL、SQLServerr数据库开发方面的笔记,但是由于MySQL和SQLServer的sql写法很多地方不太一样,所以我还是会尽量分开做笔记。
主要包括以下几个方面:
1.Navicat中调用MySQL命令行
2.MySQL的数字varchar字段按数字进行排序
3.VS ADO开发添加数据源
4.查询表字段信息的SQL语句
5.数据库用户信息的密码存储技巧
MySQL数据库,在使用Navicat工具连接数据库的时候调出命令行的方法:
如下图步骤,或者,选中数据库直接右键也有命令行选项。
MySQL按主键ID varchar排序问题
如下表,我建立一个 id为varchar(20)类型的表,id是字符串的情况下,使用一般的 select MAX(role_table.id) from role_table的语句想要获取最大ID就会出问题,这是因为按字母序排序12不是最大的ID了。
因此,为了保险起见,sql获取字符串型的id,可以改为id+0,相当于将将主键按数字处理进行排序。即:select MAX(role_table.id+0) from role_table就可以拿到我们需要的最大id了。
在使用VS ADO开发的过程中,添加MySQL数据源:
用于方便连接数据库或从数据库表生成表结构代码,这个是生成数据类一个挂在到“实体对象”Model子节点下了,我不习惯用,不推荐。
需要先安装一个插件,见链接说明
另一个生成数据表结构类的方式:CodeMatic,中文软件名叫动软代码生成器。
MySQL的一些有用SQL语句
-- 先获取所有的表名
-- show tables
-- 获取user表的所有字段名(包括内建非用户定义的),以及对应字段类型,需要自己进一步过滤!
-- SELECT COLUMN_NAME,COLUMN_TYPE FROM information_schema.columns WHERE table_name='user'
-- 获取第一条元素,用来得知所有列明
-- select * from user limit 1
-- 获取所有字段信息,以及字段备注
SHOW FULL FIELDS FROM USER
PS:补充一个SQLServer获取字段和字段备注的方法。在SQLServer中,获取表'HELLO'所有字段名和备注:
SELECT a.name , isnull(g.[value],'-') AS comment
FROM sys.columns a left join sys.extended_properties g
on (a.object_id = g.major_id AND g.minor_id = a.column_id)
WHERE object_id = (SELECT object_id FROM sys.tables WHERE name = 'HELLO ')
数据库用户密码开发技巧
用户表的密码怎么保存,不保存明文,而是保存密文!即存加密后的MD5,这样从MD5码也无法反向解析出原密码。并且,每次登陆的时候,输入密码,计算一下MD5跟数据库存的MD5对比下是否一致,一致才允许用户登录。