1查询所有表的表名: select table_name from user_tables
解释:从系统表user_tables中可以查找出所有的表名字。
2查询表中的所有列名:desc table tablename(表名)。
解释:通过desc (描述)tablename即可查找出表中的所有字段。
3查询所有数据:select from tablename t。
解释:通过select 命令可以从tablename 中查找出所有的表数据。
php 不会。
mysql 里面, 查询 表的信息, 我倒是会的。
是从 information_schematables 这里查询的。
下面是一个例子:
mysql> SELECT table_name, table_type, engine
-> FROM information_schematables
-> WHERE table_schema = 'test'
-> ORDER BY table_name DESC;
-> //
+--------------------+------------+--------+
| table_name | table_type | engine |
+--------------------+------------+--------+
| v_sale_report_x | VIEW | NULL |
| v_sale_report | VIEW | NULL |
| union_tab_2 | BASE TABLE | InnoDB |
| union_tab_1 | BASE TABLE | InnoDB |
| test_trigger_table | BASE TABLE | InnoDB |
| test_tab2 | BASE TABLE | InnoDB |
| test_tab | BASE TABLE | InnoDB |
| test_main | BASE TABLE | InnoDB |
| test_dysql | BASE TABLE | InnoDB |
| test_create_tab4 | BASE TABLE | InnoDB |
| test_create_tab2 | BASE TABLE | InnoDB |
| test_create_tab1 | BASE TABLE | InnoDB |
| test_create_tab | BASE TABLE | InnoDB |
| sale_report | BASE TABLE | InnoDB |
| log_table | BASE TABLE | InnoDB |
+--------------------+------------+--------+
15 rows in set (002 sec)
哥们儿,数据库不会这么用的,虽然能做到
如:
1、声明游标
//关键,查询表名,通过游标可以控制表名逐行筛选
select name from sysobjects
where type='U'
2、开始游标,得到表名@tablename
3、循环拼接sql语句并判断
@sql = 'select from ' + @tablename + ' where 1 = 1'
select @sql += ' or name = ' + 你的值 from syscolumns where id = object_id(@tablename)
exec(@sql) --得到的结果,最后你需要怎么处理就怎么处理,这里返回的是表
以上只是思路,我是没这么用过,你自己看着办
//给你个小例子看看
import javaawtBorderLayout;
import javaawteventActionEvent;
import javaawteventActionListener;
import javaxswing;
import javaxswingtableDefaultTableModel;
public class TableTest implements ActionListener{
JFrame frame = new JFrame("JTable Test");
JButton button = new JButton("增加");
JTextField fname = new JTextField(20);
JTextField lname = new JTextField(20);
JPanel north = new JPanel();
JLabel l1 = new JLabel("姓名");
JLabel l2 = new JLabel("****");
DefaultTableModel dtm = new DefaultTableModel(0, 2);
JTable table = new JTable(dtm);
JScrollPane jsp = new JScrollPane(table);
String [] temp = new String[2];
public void init() {
framesetBounds(200, 200, 640, 480);
framesetLayout(new BorderLayout());
framesetDefaultCloseOperation(JFrameEXIT_ON_CLOSE);
framesetResizable(false);
northadd(l1);
northadd(fname);
northadd(l2);
northadd(lname);
buttonaddActionListener(this);
northadd(button);
dtmsetColumnIdentifiers(new String[] {"姓名", "****"});
frameadd(north, BorderLayoutNORTH);
frameadd(jsp, BorderLayoutCENTER);
framesetVisible(true);
}
public static void main(String[] args) {
TableTest tt = new TableTest();
ttinit();
}
public void actionPerformed(ActionEvent e) {
temp[0] = fnamegetText();
temp[1] = lnamegetText();
Systemoutprint(dtmgetRowCount());
dtminsertRow(dtmgetRowCount(), temp);
}
}
不是很明白你的要求。具体的 *** 作是怎样的的呢?
假设数据库中有个学生表:
学号 姓名 年龄
001 张三 20
002 李四 21
假设按姓名搜索,输入搜索条件“张”:
情况1、根据搜索条件直接搜索数据库记录(通常都是这样搜索),那从数据库搜索出的记录就只有姓名包含“张”的记录,然后JTable中也就只展示这些记录,就无所谓置顶不置顶啦。
情况2、只是根据搜索条件在当前JTable展示的数据中搜索,代码如下:
import javaawtBorderLayout;import javaawtGridLayout;
import javaawteventActionEvent;
import javaawteventActionListener;
import javaxswingJButton;
import javaxswingJFrame;
import javaxswingJLabel;
import javaxswingJPanel;
import javaxswingJScrollPane;
import javaxswingJTable;
import javaxswingJTextField;
import javaxswingborderEmptyBorder;
import javaxswingeventTableModelEvent;
import javaxswingeventTableModelListener;
public class JTableTest extends JFrame {
private JPanel searchPanel;
private JTextField numField;
private JButton searchByNumButton;
private JTextField nameField;
private JButton searchByNameButton;
private JTable table;
private TestTableModel tableModel;
public JTableTest() {
super("Simple JTable Test");
setSize(400, 300);
setDefaultCloseOperation(DISPOSE_ON_CLOSE);
searchPanel = new JPanel();
searchPanelsetBorder(new EmptyBorder(3, 3, 3, 3));
searchPanelsetLayout(new GridLayout(2, 3, 2, 3));
searchPaneladd(new JLabel("学号"));
numField = new JTextField(20);
searchPaneladd(numField);
searchByNumButton = new JButton("按学号搜索");
searchByNumButtonaddActionListener(new ActionListener() {
public void actionPerformed(ActionEvent event) {
tablegetSelectionModel()clearSelection();
tableModeldoSearchByNum(numFieldgetText());
}
});
searchPaneladd(searchByNumButton);
searchPaneladd(new JLabel("姓名"));
nameField = new JTextField(20);
searchPaneladd(nameField);
searchByNameButton = new JButton("按姓名搜索");
searchByNameButtonaddActionListener(new ActionListener() {
public void actionPerformed(ActionEvent event) {
tablegetSelectionModel()clearSelection();
tableModeldoSearchByName(nameFieldgetText());
}
});
searchPaneladd(searchByNameButton);
getContentPane()add(searchPanel, BorderLayoutNORTH);
tableModel = new TestTableModel();
tableModeladdTableModelListener(new TableModelListener() {
@Override
public void tableChanged(TableModelEvent e) {
if (tableModelgetHitRowCount() > 0) {
tablesetRowSelectionInterval(0, tableModelgetHitRowCount() - 1);
}
}
});
table = new JTable(tableModel);
JScrollPane jsp = new JScrollPane(table);
getContentPane()add(jsp, BorderLayoutCENTER);
}
public static void main(String[] args) {
JTableTest self = new JTableTest();
selfsetVisible(true);
}
}import javautilArrayList;
import javautilArrays;
import javautilList;
import javaxswingtableAbstractTableModel;
public class TestTableModel extends AbstractTableModel {
private List<Student> data = ArraysasList(new Student("001", "王二", 20), new Student("002",
"王二小", 19), new Student("003", "张三", 20), new Student("004", "张三丰", 21), new Student("005",
"李四", 21), new Student("006", "李四光", 19));
private List<Integer> searchHitRows = new ArrayList<Integer>();
@Override
public int getRowCount() {
return datasize();
}
@Override
public int getColumnCount() {
return 3;
}
@Override
public String getColumnName(int column) {
if (column == 0)
return "学号";
else if (column == 1)
return "姓名";
return "年龄";
}
@Override
public Object getValueAt(int rowIndex, int columnIndex) {
Student student = dataget(rowIndex);
if (columnIndex == 0)
return studentgetNum();
else if (columnIndex == 1)
return studentgetName();
return studentgetAge();
}
/ 按姓名搜索 /
public void doSearchByName(String key) {
searchHitRowsclear();
if (key == null || ""equals(key))
return;
for (int i = 0; i < datasize(); i++) {
Student studentI = dataget(i);
String value = studentIgetName();
if (valueindexOf(key) < 0)
continue;
int j = 0;
for (j = i - 1; j >= 0; j--) {
Student studentJ = dataget(j);
String valueJ = studentJgetName();
if (valueJindexOf(key) >= 0)
break;
}
Student temp = dataget(j + 1);
dataset(j + 1, studentI);
dataset(i, temp);
searchHitRowsadd(IntegervalueOf(j + 1));
}
fireTableDataChanged();
}
/ 按学号搜索 /
public void doSearchByNum(String key) {
searchHitRowsclear();
if (key == null || ""equals(key))
return;
for (int i = 0; i < datasize(); i++) {
Student studentI = dataget(i);
String value = studentIgetNum();
if (valueindexOf(key) < 0)
continue;
int j = 0;
for (j = i - 1; j >= 0; j--) {
Student studentJ = dataget(j);
String valueJ = studentJgetNum();
if (valueJindexOf(key) >= 0)
break;
}
Student temp = dataget(j + 1);
dataset(j + 1, studentI);
dataset(i, temp);
searchHitRowsadd(IntegervalueOf(j + 1));
}
fireTableDataChanged();
}
public void setData(List<Student> data) {
if (data == null)
throw new IllegalArgumentException("参数data不能为null。");
thisdata = data;
fireTableDataChanged();
}
public int getHitRowCount() {
return searchHitRowssize();
}
}
从数据库查询出记录后,转成Student对象列表调用TestTableModel的setData设置表格的数据。
SQL数据库,查询包含列(字段,如名称)的数据库中的所有表的步骤如下:需要准备的材料是:计算机,sql finder。
1,首先,打开sql查询器并连接到相应的数据连接,例如测试库。
2,单击“查询”按钮并键入:select table_name来自information_schemacolumns,其中table_schema =“test”和column_name =“name”;。
3,单击“运行”按钮,将查询符合条件的表名称。
4,将查询调整为:选择'store'作为table_name,`name`来自商店,其中`name` =“A”union all选择'stu'作为table_name,`name`来自stu where`name` =“A”Union所有选择'test'作为table_name,`name`来测试`name` =“A”,单击“运行”按钮查找名称为'A'的表的名称。
我只会Oracle,不知道Sql2005的存储过程怎么写,我提供一个Oracle的存储过程给你,你参照一下sql2005的特性,自己修改一下吧
CREATE OR REPLACE PROCEDURE NO_DATA_TEST AS
BEGIN DECLARE
--通过Oracle视图,查询处记录数为0的表名
CURSOR noDataTblNms IS
SELECT TABLE_NAME FROM USER_TABLES WHERE NUM_ROWS = 0;
--存储表名
tableName USER_TABLESTABLE_NAME%type;
--存储临时SQL语句
strSql VARCHAR2(200);
BEGIN
open noDataTblNms;
LOOP FETCH noDataTblNms into tableName;
EXIT WHEN noDataTblNms%NOTFOUND;
strSql := 'DROP TABLE ' || tableName;
execute immediate strSql;
END LOOP;
close noDataTblNms;
end;
END NO_DATA_TEST;
说明:其中的
SELECT TABLE_NAME FROM USER_TABLES WHERE NUM_ROWS = 0;
需要换成SQL SERVER的对应语句,你自己查一下,应该有个sysobjects的表或者视图,同时,type为‘U'
还有执行动态sql的语句execute immediate strSql;需要修改
以上就是关于ORACLE数据库 查询表名 查询列名 查询列中所有数据的语法分别是全部的内容,包括:ORACLE数据库 查询表名 查询列名 查询列中所有数据的语法分别是、mysql查找一个数据库中所有特定前缀的表、如何在SQL中查找数值所在表等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)