在SQL中,查询数据库中的表名、列名、主键以及自动增长值是数据库管理和开发过程中常见的需求。以下是一些具体的SQL语句实例,适用于不同的数据库系统,主要以SQL Server为例进行讲解。
1. **查询数据库中用户创建的表**
```sql
-- 在SQL Server中
SELECT name AS tablename
FROM jsj01..sysobjects
WHERE type='U' AND name NOT IN ('dtproperties')
```
这个查询将返回`jsj01`数据库中所有用户创建的表的名称。
2. **查询表里的字段信息**
```sql
-- 在SQL Server中
SELECT *
FROM syscolumns
WHERE id = object_id('docs')
```
此查询返回`docs`表的所有列信息。
3. **查询数据库中所有数据类型**
```sql
SELECT name, xtype
FROM systypes
```
这将列出数据库中所有可用的数据类型。
4. **查询表中所有字段及对应的数据类型**
```sql
SELECT a.name AS fieldname, b.name AS type
FROM syscolumns AS a
JOIN systypes AS b
ON a.xtype = b.xusertype
WHERE id = object_id('docs')
```
这个查询连接`syscolumns`和`systypes`表,给出`docs`表中每个字段及其对应的数据类型。
5. **查询表字段、类型、说明**
```sql
SELECT a.name AS fieldname, b.name AS type, c.value AS comment
FROM syscolumns AS a
FULL JOIN systypes AS b
ON a.xtype = b.xusertype
FULL JOIN ::fn_listextendedproperty(NULL, 'user', 'dbo', 'table', 'docs', 'column', default) AS c
```
这个查询还包括了字段的注释信息,如果存在的话。
6. **查询表里的主键**
```sql
-- SQL Server 2000
SELECT column_name AS primarykey
FROM [jsj01].INFORMATION_SCHEMA.KEY_COLUMN_USAGE
WHERE Table_name='docs' AND constraint_name LIKE 'pk%'
-- SQL Server 2005及以上版本
SELECT column_name AS primarykey
FROM [jsj01].INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE
WHERE Table_name='docs' AND constraint_type='PRIMARY KEY'
```
这将返回`docs`表的主键列名。如果主键由多个列组成,这些列都会被列出。
7. **查询表中自动增长的字段**
```sql
SELECT a.name AS column_name, b.name AS data_type
FROM syscolumns AS a, systypes AS b
WHERE a.id = object_id('docs')
AND a.xtype = b.xusertype
AND a.autoval IS NOT NULL
```
这个查询找出`docs`表中设置为自动增长的字段及其数据类型。
以上SQL语句实例可以帮助你获取数据库中关于表、列、主键和自动增长值的基本信息。请注意,不同数据库系统可能有不同的系统视图或函数来获取这些信息,因此在实际应用时需要根据所使用的数据库系统进行调整。例如,MySQL、Oracle和PostgreSQL等数据库系统会使用它们特定的语法和对象来完成类似的操作。