sql中创建基本表应使用什么语句

sql中创建基本表应使用什么语句,第1张

sql语句中创建表的语句为“CREATE TABLE”。 具体语法格式为“CREATE TABLE table表名([表定义选项])[表选项][分区选项];”;其中[表格定义选项]的格式为“列名1类型1 [,]列名n类型n”。、在MySQL中,可以使用CREATE TABLE语句创建一个表。CREATE TABLE语句的主要语法和指令如下:创建表:要创建具有给定名称的表,您必须拥有创建该表的权限。:指定要创建的表的名称,该名称在CREATE TABLE之后给出,并且必须符合标识符命名规则。:表创建定义,由列名(col_name)、列定义(column_definition)和可能的空描述、完整性约束或表索引组成。默认情况下,表是在当前数据库中创建的。如果该表已经存在,没有当前数据库或数据库不存在,将会出现错误。

三种方法分别如下:

1、使用向导创建数据库。

2、使用企业管理器创建数据库。

3、使用Transact-SQL的CREATE DATABASE语句创建数据库 。

依据数据库的名称创建标识,将所述数据库的名称和所述标识作为第一key值,将所述数据库的信息进行保存并作为第一value值,得到所述数据库对应的KV记录;在所述数据库中建立数据表;将所述数据库的名称和数据表的名称作为第二key值。

将所述数据表的信息进行保存并作为第二value值得到所述数据表对应的KV记录;在所述数据表中插入数据;将所述数据库的名称,数据表的名称和数据的名称作为第三key值,将所述数据的信息进行保存并作为第三value值,得到所述数据对应的KV记录;获得所述适用SQL查询方法的KV数据库。

扩展资料:

SQL中的查询语句只有一个:SELECT,它可与其它语句配合完成所有的查询功能。SELECT语句的完整语法,可以有6个子句。

查询语句的完整的语法如下:

SELECT 目标表的列名或列表达式集合

FROM 基本表或(和)视图集合

〔WHERE条件表达式〕

〔GROUP BY列名集合

〔HAVING组条件表达式〕〕

〔ORDER BY列名〔集合〕…〕

简单查询,使用TOP子句,查询结果排序order by 默认ASC升序,使用关键词DESC降序。带条件的查询where,使用算术表达式,使用逻辑表达式,使用between和in关键字。

参考资料来源:百度百科-SQL数据库

CREATE DATABASE 为SQl语句,用于创建数据库。

语法

CREATE DATABASE database_name

[ ON

[ < filespec > [ ,n ] ]

[ ,< filegroup > [ ,n ] ]

]

[ LOG ON { < filespec > [ ,n ] } ]

[ COLLATE collation_name ]

[ FOR LOAD | FOR ATTACH ]

< filespec > ::=

[ PRIMARY ]

([ NAME =logical_file_name ,]

FILENAME ='os_file_name'

[ ,SIZE =size ]

[ ,MAXSIZE ={ max_size| UNLIMITED } ]

[ ,FILEGROWTH =growth_increment ] )[ ,n]

< filegroup > ::=

FILEGROUP filegroup_name< filespec > [ ,n]

参数

database_name

新数据库的名称。数据库名称在服务器中必须唯一,并且符合标识符的规则。database_name最多可以包含 128 个字符,除非没有为日志指定逻辑名。如果没有指定日志文件的逻辑名,则 Microsoft&reg; SQL Server™ 会通过向 database_name追加后缀来生成逻辑名。该 *** 作要求 database_name在 123 个字符之内,以便生成的日志文件逻辑名少于 128 个字符。

ON

指定显式定义用来存储数据库数据部分的磁盘文件(数据文件)。该关键字后跟以逗号分隔的 <filespec> 项列表,<filespec> 项用以定义主文件组的数据文件。主文件组的文件列表后可跟以逗号分隔的 <filegroup> 项列表(可选),<filegroup> 项用以定义用户文件组及其文件。

n

占位符,表示可以为新数据库指定多个文件。

LOG ON

指定显式定义用来存储数据库日志的磁盘文件(日志文件)。该关键字后跟以逗号分隔的 <filespec> 项列表,<filespec> 项用以定义日志文件。如果没有指定 LOG ON,将自动创建一个日志文件,该文件使用系统生成的名称,大小为数据库中所有数据文件总大小的 25%。

FOR LOAD

支持该子句是为了与早期版本的 Microsoft SQL Server 兼容。数据库在打开 dbo use only数据库选项的情况下创建,并且将其状态设置为正在装载。SQL Server 70 版中不需要该子句,因为 RESTORE 语句可以作为还原 *** 作的一部分重新创建数据库。

FOR ATTACH

指定从现有的一组 *** 作系统文件中附加数据库。必须有指定第一个主文件的 <filespec> 条目。至于其它 <filespec> 条目,只需要与第一次创建数据库或上一次附加数据库时路径不同的文件的那些条目。必须为这些文件指定 <filespec> 条目。

附加的数据库必须使用与 SQL Server 相同的代码页和排序次序创建。应使用 sp_attach_db系统存储过程,而不要直接使用 CREATE DATABASE FOR ATTACH。只有必须指定 16 个以上的 <filespec> 项目时,才需要使用 CREATE DATABASE FOR ATTACH。

如果将数据库附加到的服务器不是该数据库从中分离的服务器,并且启用了分离的数据库以进行复制,则应该运行 sp_removedbreplication从数据库删除复制。

collation_name

指定数据库的默认排序规则。排序规则名称既可以是 Windows 排序规则名称,也可以是 SQL 排序规则名称。如果没有指定排序规则,则将 SQL Server 实例的默认排序规则指派为数据库的排序规则。

有关 Windows 和 SQL 排序规则名称的更多信息,请参见 COLLATE。

PRIMARY

指定关联的 <filespec> 列表定义主文件。主文件组包含所有数据库系统表。还包含所有未指派给用户文件组的对象。主文件组的第一个 <filespec> 条目成为主文件,该文件包含数据库的逻辑起点及其系统表。一个数据库只能有一个主文件。如果没有指定 PRIMARY,那么 CREATE DATABASE 语句中列出的第一个文件将成为主文件。

NAME

为由 <filespec> 定义的文件指定逻辑名称。如果指定了 FOR ATTACH,则不需要指定 NAME 参数。

logical_file_name

用来在创建数据库后执行的 Transact-SQL 语句中引用文件的名称。logical_file_name在数据库中必须唯一,并且符合标识符的规则。该名称可以是字符或 Unicode 常量,也可以是常规标识符或定界标识符。

FILENAME

为 <filespec> 定义的文件指定 *** 作系统文件名。

'os_file_name'

*** 作系统创建 <filespec> 定义的物理文件时使用的路径名和文件名。os_file_name中的路径必须指定 SQL Server 实例上的目录。os_file_name不能指定压缩文件系统中的目录。

如果文件在原始分区上创建,则 os_file_name必须只指定现有原始分区的驱动器字母。每个原始分区上只能创建一个文件。原始分区上的文件不会自动增长;因此,os_file_name指定原始分区时,不需要指定 MAXSIZE 和 FILEGROWTH 参数。

SIZE

指定 <filespec> 中定义的文件的大小。如果主文件的 <filespec> 中没有提供 SIZE 参数,那么 SQL Server 将使用 model数据库中的主文件大小。如果次要文件或日志文件的 <filespec> 中没有指定 SIZE 参数,则 SQL Server 将使文件大小为 1 MB。

size

<filespec> 中定义的文件的初始大小。可以使用千字节 (KB)、兆字节 (MB)、千兆字节 (GB) 或兆兆字节 (TB) 后缀。默认值为 MB。指定一个整数,不要包含小数位。size的最小值为 512 KB。如果没有指定 size,则默认值为 1 MB。为主文件指定的大小至少应与 model数据库的主文件大小相同。

MAXSIZE

指定 <filespec> 中定义的文件可以增长到的最大大小。

max_size

<filespec> 中定义的文件可以增长到的最大大小。可以使用千字节 (KB)、兆字节 (MB)、千兆字节 (GB) 或兆兆字节 (TB) 后缀。默认值为 MB。指定一个整数,不要包含小数位。如果没有指定 max_size,那么文件将增长到磁盘变满为止

说明在磁盘即将变满时,Microsoft Windows NT&reg; S/B 系统日志会警告 SQL Server系统管理员。

UNLIMITED

指定 <filespec> 中定义的文件将增长到磁盘变满为止。

FILEGROWTH

指定 <filespec> 中定义的文件的增长增量。文件的 FILEGROWTH 设置不能超过 MAXSIZE 设置。

growth_increment

每次需要新的空间时为文件添加的空间大小。指定一个整数,不要包含小数位。0 值表示不增长。该值可以 MB、KB、GB、TB 或百分比 (%) 为单位指定。如果未在数量后面指定 MB、KB 或 %,则默认值为 MB。如果指定 %,则增量大小为发生增长时文件大小的指定百分比。

如果没有指定 FILEGROWTH,则默认值为 10%,最小值为 64 KB。指定的大小舍入为最接近的 64 KB 的倍数。

扩展资料

组成

在正式学习SQL语言之前,首先让我们对SQL语言有一个基本认识,介绍一下SQL语言的组成:

1、一个SQL数据库是表(Table)的集合,它由一个或多个SQL模式定义。

2、一个SQL表由行集构成,一行是列的序列(集合),每列与行对应一个数据项。

3、一个表或者是一个基本表或者是一个视图。基本表是实际存储在数据库的表,而视图是由若干基本表或其他视图构成的表的定义。

4、一个基本表可以跨一个或多个存储文件,一个存储文件也可存放一个或多个基本表。每个存储文件与外部存储上一个物理文件对应。

5、用户可以用SQL语句对视图和基本表进行查询等 *** 作。在用户角度来看,视图和基本表是一样的,没有区别,都是关系(表格)。

6、SQL用户可以是应用程序,也可以是终端用户。SQL语句可嵌入在宿主语言的程序中使用,宿主语言有FORTRAN,COBOL,PASCAL,PL/I,C和Ada语言等。SQL用户也能作为独立的用户接口,供交互环境下的终端用户使用。

参考资料来源:百度百科-SQL数据库

参考资料来源:百度百科-Create Database

一 数据库链路的建立

数据库链路的建立语法一般是 CREATE DATABASE LINK [db_link_name] CONNECT TO[user_name] IDENTIFIED BY [password] USING [tns_name] ;

其中:

[DB_LINK_NAME] 是所要连接的数据库的服务名 也就是该数据库的真实名称(通常就是SID) [USRE_NAME] 是所要连接的用户名称 [PASSWORD] 是所要连接的用户的密码 [TNS_NAME] 是所要连接的数据库的服务命名 也就是在本机上建立的NET 服务命名

当使用当前用户做为连接者时 语法可以是 CREATE DATABASE LINK [db_link_name] CONNECT TO CURRENT_USER USING [tns_name] (某些情况下这种方法建立的数据库链路都未处于活动状态 不知道是不是语法有误 暂不推荐使用)

当使用已连接用户做为连接者时 语法可以是 CREATE DATABASE LINK [db_link_name]USING [tns_name]

要建立公共的数据库链路语法可以是 只要在CREATE后加PUBLIC关键字就可以了

假如你在init ora文件里的global_names = true只能用上面的方法 如果global_names =false [DB_LINK_NAME]不一定要是数据库的真实名称 可以是一个随意的名字 也就是说 当global_names = true时 数据库的每一个用户只能有一个数据库链路 而当global_names = false时 每一个用户都可以建立N多个链路 但一般情况下是没有意义的

二 数据库链路的使用

数据库链路的主要用途就是实现对远程数据库的访问 你可以通过数据库链路直接对远程数据库

的表进行读写 也可以在本地建立远程数据库的视图和同意词 另外在进行双机热备份时也要用到数据库链路

直接访问 SELECT FROM [user_name] [table_name]@[db_link_name];INSERT UPDATE DELETE等也同样适用

建立同义词 CREATE SYNONYM [user_name] [synonym_name] FOR [user_name] [table_name]@[db_link_name] ; 视图也是一个道理

由于双机热备是另一个复杂的问题 本文暂不赘述 如果想在两个数据库间实现几个表的同步 做一个双机太复杂 可以考虑用触发器来解决 在触发器中用以上方法引用远程表 对其进行插入 删除也可以做到同步

参考示例如下

数据库之间的链接建立在DATABASE LINK上 要创建一个DB LINK 必须先在每个数据库服务器上设置链接字符串

链接字符串即服务名 首先在本地配置一个服务名 地址指向远程的数据库地址 服务名取为将来你要使用的数据库链名

创建数据库链接

进入系统管理员SQL> *** 作符下 运行命令

SQL>create public database link beijing connect to scott identified by tiger using tobeijing ;

则创建了一个以scott用户和北京数据库的链接beijing 我们可以查询北京的scott数据:

SQL>select from emp@beijing;

这样就可以把深圳和北京scott用户的数据做成一个整体来处理

建立同义词 为了使有关分布式 *** 作更透明 ORACLE数据库里有同义词的对象synonymSQL>create synonym bjscottemp for emp@beijing;

于是就可以用bjscottemp来替代带@符号的分布式链接 *** 作emp@beijing

lishixinzhi/Article/program/SQL/201311/16235

一、

创建数据库1

语法:

//database_name

为数据库的名字CREATE

DATABASE

database_name

一、

创建表1

语法:CREATE

TABLE

table_name

(

{

column_name

data_type

[

<特殊参数>]

}

[

,n

]

)

建表例:学号姓名性别年龄班级最多20个字,主键最多10个字最多1个字

最多10个字

create

table

B(

编号int

Identity(1,1),

学号varchar(20)

Primary

Key,

姓名varchar(10)

not

null,

性别varchar(2)

not

null)

一、基础

1、说明:创建数据库

CREATE DATABASE database-name

2、说明:删除数据库

drop database dbname

3、说明:备份sql server

--- 创建 备份数据的 device

USE master

EXEC sp_addumpdevice 'disk', 'testBack', 'c:\mssql7backup\MyNwind_1dat'

--- 开始 备份

BACKUP DATABASE pubs TO testBack

4、说明:创建新表

create table tabname(col1 type1 [not null] [primary key],col2 type2 [not null],)

根据已有的表创建新表:

A:create table tab_new like tab_old (使用旧表创建新表)

B:create table tab_new as select col1,col2… from tab_old definition only

5、说明:删除新表

drop table tabname

6、说明:增加一个列

Alter table tabname add column col type

注:列增加后将不能删除。DB2中列加上后数据类型也不能改变,唯一能改变的是增加varchar类型的长度。

7、说明:添加主键: Alter table tabname add primary key(col)

说明:删除主键: Alter table tabname drop primary key(col)

8、说明:创建索引:create [unique] index idxname on tabname(col…)

删除索引:drop index idxname

注:索引是不可更改的,想更改必须删除重新建。

9、说明:创建视图:create view viewname as select statement

删除视图:drop view viewname

10、说明:几个简单的基本的sql语句

选择:select from table1 where 范围

插入:insert into table1(field1,field2) values(value1,value2)

删除:delete from table1 where 范围

更新:update table1 set field1=value1 where 范围

查找:select from table1 where field1 like ’%value1%’ ---like的语法很精妙,查资料!

排序:select from table1 order by field1,field2 [desc]

总数:select count as totalcount from table1

求和:select sum(field1) as sumvalue from table1

平均:select avg(field1) as avgvalue from table1

最大:select max(field1) as maxvalue from table1

最小:select min(field1) as minvalue from table1

11、说明:几个高级查询运算词

A: UNION 运算符

UNION 运算符通过组合其他两个结果表(例如 TABLE1 和 TABLE2)并消去表中任何重复行而派生出一个结果表。当 ALL 随 UNION 一起使用时(即 UNION ALL),不消除重复行。两种情况下,派生表的每一行不是来自 TABLE1 就是来自 TABLE2。

B: EXCEPT 运算符

EXCEPT 运算符通过包括所有在 TABLE1 中但不在 TABLE2 中的行并消除所有重复行而派生出一个结果表。当 ALL 随 EXCEPT 一起使用时 (EXCEPT ALL),不消除重复行。

C: INTERSECT 运算符

INTERSECT 运算符通过只包括 TABLE1 和 TABLE2 中都有的行并消除所有重复行而派生出一个结果表。当 ALL 随 INTERSECT 一起使用时 (INTERSECT ALL),不消除重复行。

注:使用运算词的几个查询结果行必须是一致的。

12、说明:使用外连接

A、left (outer) join:

左外连接(左连接):结果集几包括连接表的匹配行,也包括左连接表的所有行。

SQL: select aa, ab, ac, bc, bd, bf from a LEFT OUT JOIN b ON aa = bc

B:right (outer) join:

右外连接(右连接):结果集既包括连接表的匹配连接行,也包括右连接表的所有行。

C:full/cross (outer) join:

全外连接:不仅包括符号连接表的匹配行,还包括两个连接表中的所有记录。

12、分组:Group by:

一张表,一旦分组 完成后,查询后只能得到组相关的信息。

组相关的信息:(统计信息) count,sum,max,min,avg 分组的标准)

在SQLServer中分组时:不能以text,ntext,image类型的字段作为分组依据

在selecte统计函数中的字段,不能和普通的字段放在一起;

13、对数据库进行 *** 作:

分离数据库: sp_detach_db; 附加数据库:sp_attach_db 后接表明,附加需要完整的路径名

14如何修改数据库的名称:

sp_renamedb 'old_name', 'new_name'

二、提升

1、说明:复制表(只复制结构,源表名:a 新表名:b) (Access可用)

法一:select into b from a where 1<>1(仅用于SQlServer)

法二:select top 0 into b from a

2、说明:拷贝表(拷贝数据,源表名:a 目标表名:b) (Access可用)

insert into b(a, b, c) select d,e,f from b;

3、说明:跨数据库之间表的拷贝(具体数据使用绝对路径) (Access可用)

insert into b(a, b, c) select d,e,f from b in ‘具体数据库’ where 条件

例子:from b in '"&ServerMapPath("")&"\datamdb" &"' where

4、说明:子查询(表名1:a 表名2:b)

select a,b,c from a where a IN (select d from b ) 或者: select a,b,c from a where a IN (1,2,3)

5、说明:显示文章、提交人和最后回复时间

select atitle,ausername,badddate from table a,(select max(adddate) adddate from table where tabletitle=atitle) b

6、说明:外连接查询(表名1:a 表名2:b)

select aa, ab, ac, bc, bd, bf from a LEFT OUT JOIN b ON aa = bc

7、说明:在线视图查询(表名1:a )

select from (SELECT a,b,c FROM a) T where ta > 1;

8、说明:between的用法,between限制查询数据范围时包括了边界值,not between不包括

select from table1 where time between time1 and time2

select a,b,c, from table1 where a not between 数值1 and 数值2

9、说明:in 的使用方法

select from table1 where a [not] in (‘值1’,’值2’,’值4’,’值6’)

10、说明:两张关联表,删除主表中已经在副表中没有的信息

delete from table1 where not exists ( select from table2 where table1field1=table2field1 )

11、说明:四表联查问题:

select from a left inner join b on aa=bb right inner join c on aa=cc inner join d on aa=dd where

12、说明:日程安排提前五分钟提醒

SQL: select from 日程安排 where datediff('minute',f开始时间,getdate())>5

13、说明:一条sql 语句搞定数据库分页

select top 10 b from (select top 20 主键字段,排序字段 from 表名 order by 排序字段 desc) a,表名 b where b主键字段 = a主键字段 order by a排序字段

具体实现:

关于数据库分页:

declare @start int,@end int

@sql nvarchar(600)

set @sql=’select top’+str(@end-@start+1)+’+from T where rid not in(select top’+str(@str-1)+’Rid from T where Rid>-1)’

exec sp_executesql @sql

注意:在top后不能直接跟一个变量,所以在实际应用中只有这样的进行特殊的处理。Rid为一个标识列,如果top后还有具体的字段,这样做是非常有好处的。因为这样可以避免 top的字段如果是逻辑索引的,查询的结果后实际表中的不一致(逻辑索引中的数据有可能和数据表中的不一致,而查询时如果处在索引则首先查询索引)

14、说明:前10条记录

select top 10 form table1 where 范围

15、说明:选择在每一组b值相同的数据中对应的a最大的记录的所有信息(类似这样的用法可以用于论坛每月排行榜,每月热销产品分析,按科目成绩排名,等等)

select a,b,c from tablename ta where a=(select max(a) from tablename tb where tbb=tab)

16、说明:包括所有在 TableA 中但不在 TableB和TableC 中的行并消除所有重复行而派生出一个结果表

(select a from tableA ) except (select a from tableB) except (select a from tableC)

17、说明:随机取出10条数据

select top 10 from tablename order by newid()

18、说明:随机选择记录

select newid()

19、说明:删除重复记录

1),delete from tablename where id not in (select max(id) from tablename group by col1,col2,)

2),select distinct into temp from tablename

delete from tablename

insert into tablename select from temp

评价: 这种 *** 作牵连大量的数据的移动,这种做法不适合大容量但数据 *** 作

3),例如:在一个外部表中导入数据,由于某些原因第一次只导入了一部分,但很难判断具体位置,这样只有在下一次全部导入,这样也就产生好多重复的字段,怎样删除重复字段

alter table tablename

--添加一个自增列

add column_b int identity(1,1)

delete from tablename where column_b not in(

select max(column_b) from tablename group by column1,column2,)

alter table tablename drop column column_b

20、说明:列出数据库里所有的表名

select name from sysobjects where type='U' // U代表用户

21、说明:列出表里的所有的列名

select name from syscolumns where id=object_id('TableName')

22、说明:列示type、vender、pcs字段,以type字段排列,case可以方便地实现多重选择,类似select 中的case。

select type,sum(case vender when 'A' then pcs else 0 end),sum(case vender when 'C' then pcs else 0 end),sum(case vender when 'B' then pcs else 0 end) FROM tablename group by type

显示结果:

type vender pcs

电脑 A 1

电脑 A 1

光盘 B 2

光盘 A 2

手机 B 3

手机 C 3

23、说明:初始化表table1

TRUNCATE TABLE table1

24、说明:选择从10到15的记录

select top 5 from (select top 15 from table order by id asc) table_别名 order by id desc

以上就是关于sql中创建基本表应使用什么语句全部的内容,包括:sql中创建基本表应使用什么语句、sql数据库创建查询的方法有哪些、通过SQL语句使用什么命令创建数据库等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/sjk/9874886.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-02
下一篇 2023-05-02

发表评论

登录后才能评论

评论列表(0条)

保存