--通过如下语句得到当前Sql server中所有的数据的名称:
use master
select [name] from [sysdatabases] order by [name]
go
-- 查询数据库中的所有用户表
use [DBname]
select [id], [name] from [sysobjects] where [type] = 'u' order by [name]
--通过上面的查询的id,可以查出这个表中所有的字段,例如我们查询BaseData表中所有的字段,就可以通过下面的语句查出:
select [name] from [syscolumns] where [id] = 2087000699 order by [colid]
go
你所说的问题的语句是:
select [name], from [syscolumns] order by [id]
ResultSetMetaData rsmt=rsgetMetaData();
得到结果集(rs)的结构信息,比如字段数、字段名等。
使用rsgetMetaData()getTableName(1))就可以返回表名
rsgetMetaData()getColumnCount()
取得列数
rs是指ResultSet
读取mysql数据库文本字段的值方法如下:
publicvoidread(){
try{
//连接数据库
conn=JdbcUtils();
//查询resume字段,text格式
Stringsql="selectresumefromtestclobwhereid=1";
pt=conn(sql);
//执行查询并返回结果
rs=pt();
if(rsnext()){
//rs读取该字段
Readerreader=rs("resume");
//定义字符数组来存放读取值
charbuffer[]=newchar[1024];
while((readerread(buffer))!=-1){
//打印
Systemoutprintln(buffer);
}
readerclose();
}
}catch(Exceptione){
e();
}finally{
JdbcUtilsrelease(conn,pt,rs);
}
}
单独的索引和复合索引的索引。单一索引,只包含单个列,一个表可以有多个单独的索引,而不是索引的组合的索引。综合指数,即包含多个列的电缆。
MySQL索引的类型包括:
(1)一般指数
这是最基本的索引,它没有任何限制。它创造了几种方法:
◆创建一个索引
CREATE INDEX INDEXNAME ON mytable的(用户名(长度));
如果CHAR,VARCHAR类型,长度可以小于的实际长度场,如果是BLOB和TEXT类型,必须指定长度,下同。
◆表结构
ALTER mytable的ADD INDEX [INDEXNAME]开(用户名(长度))
◆当您创建一个表直接指定
CREATE TABLE mytable的(ID INT NOT NULL ,用户名VARCHAR(16)NOT NULL,索引[INDEXNAME](用户名(长度)));
删除索引的语法:
DROP INDEX [INDEXNAME] ON mytable的;
(2)唯一索引
它类似于以前的一般指标,不同的是:索引列的值必须是唯一的,但是允许空值。如果它是一个综合指数相结合,列值??必须是唯一的。它创造了几种方法:
◆创建一个索引
CREATE UNIQUE INDEX INDEXNAME ON mytable的(用户名(长度))
◆表结构
ALTER mytable的ADD UNIQUE [INDEXNAME]开启(用户名(长度))
◆当您创建一个表直接指定
CREATE TABLE mytable的(ID INT NOT NULL,用户名VARCHAR(16)NOT NULL,UNIQUE [INDEXNAME](用户名(长度))) ;
(3)主键索引
这是一个特殊的唯一索引不允许空值。一般的时候同时创建主键索引的表的结构:
CREATE TABLE mytable的(ID INT NOT NULL,用户名VARCHAR(16)NOT NULL,PRIMARY KEY(ID));
>当然,你可以使用ALTER命令。请记住:一个表只能有一个主键。
(4)综合指数
对于图像的对比度和组合索引单列索引,添加更多的字段的表:
CREATE TABLE mytable的(ID INT NOT NULL,用户名VARCHAR(16)NOT NULL ,城市VARCHAR(50)NOT NULL,年龄INT NOT NULL);
为了进一步榨取MySQL的效率,就要考虑建立组合索引。是的名称,城市,年龄建成一个索引,其中:
ALTER TABLE mytable的ADD INDEX name_city_age(名(10),城市,年龄);
建立表时,16 usernname长度,其中10。这是因为在正常情况下不超过10名,这将加快查询速度索引的长度,该指数将减少文件大小,提高INSERT的更新速度。
如果您创建的每个usernname一个单独的索引,城市,年龄,所以该表有三个单独的索引,上面的查询和索引的组合效率会有很大的不同,远远超过我们的组合索引少。虽然此时有了三个索引,但MySQL只可以使用它们认为这似乎是最有效的单一指标。
建立这样的组合索引,其实是三组相当于建立了以下综合指数:
usernname,城市,年龄usernname,城市usernname
为什么没有城市,年龄该做组合索引?它是一个综合指数,因为MySQL的结果“最左前缀”一个。这只是意味着,左侧只有从一开始的组合。不仅包含了这三个疑问将在综合指数中使用,下面的几个SQL就会使用这个组合索引:
SELECT FROM mytable的WHREE用户名=“管理员”和城市=“郑州”SELECT FROM mytable的WHREE用户名= “管理员”
接下来的几个未使用:
SELECT FROM mytable的WHREE年龄为20及城市=“郑州”SELECT FROM mytable的WHREE城市=“郑州”
(5)索引时间
在这里,我们已经学会了建立索引,那么我们需要在什么情况下创建索引?通常,当连接列和出现在需要建立索引,但也不完全如此,因为MySQL只<,,> =,BETWEEN,IN,LIKE,有的时候会使用索引。例如:
选择tName FROM mytable的吨LEFT JOIN mytable的M于tName = musername WHERE mage = 20和mcity ='郑州'
这时候就需要城市与年龄索引,由于userame mytable的表也出现在JOIN子句中,也有必要建立索引。
只是它需要像索引的时候一定提及。因为在一开始通配符%和_的查询,MySQL不会使用索引。例如,下面的语句将使用索引:
SELECT FROM mytable的其中username like'admin%'
下一句不会使用:
SELECT FROM mytable的WHEREt名称LIKE'% admin的
因此,更应注意使用LIKE差异。
(6)指数
的不足之处上面是说使用索引的好处,但过量使用索引将会造成滥用。因此,该指数也有其缺点:
◆虽然索引大大提高了查询速度,但会降低更新表,如表的INSERT,UPDATE的速度和DELETE。因为当你更新表,MySQL只保存数据,而且还节省大约索引文件。
◆建立索引会占用磁盘空间的索引文件。通常这个问题不是太严重,但如果你是在一个大表创建各种复合索引,索引文件将很快扩大。
指数只是其中的一个因素,以提高效率,如果你有大量的数据的MySQL表,你需要花时间去研究建立最佳的索引,或优化查询。
(7)使用索引
注意事项使用索引时,下面的一些技巧和注意事项:??
◆索引不会包含NULL值的列只要列中包含 BR />有NULL值?将不会被包含在索引中,复合索引,只要有包含NULL值的列,那么这个列是此复合索引无效。所以,我们不要让默认字段为NULL的数据库设计。
就用短串联指数指标,如果可能的话,你应该指定一个前缀长度。例如,如果一个CHAR(255)列,如果在前10或20个字符之内,多个值?是独一无二的,那就不要索引整个列。短索引不仅可以提高查询速度而且可以节省磁盘空间和I / O *** 作。
◆索引列排序
MySQL查询只使用一个索引,因此如果where子句已在索引中使用,然后按列的顺序将不会使用索引。因此,不要使用默认的数据库排序时排序 *** 作即可满足要求;尽量不要包含多个排序列,如果需要的话最好创建这些列的一个综合指数。
◆like语句
在正常情况下运行不鼓励使用类似的 *** 作,如果非使用不可,如何使用也是一个问题。如“%AAA%”不会使用索引而不是像“AAA%”可以使用索引。
◆不要在列选择从用户那里YEAR(录入)<2007年
*** 作将在每个行上进行的,这将导致失败而进行全表索引扫描,所以我们可以改变
选择从用户那里录入时间<'2007-01-01';
◆不使用NOT IN和>
更多 *** 作上的MySQL索引类型进行了介绍。
转移: >
以上就是关于查询出Mysql数据库中一个表的所有字段全部的内容,包括:查询出Mysql数据库中一个表的所有字段、如何读取mysql数据库中表中的字段信息、读取mysql数据库文本字段的值方法(mysql获取表字段信息)等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)