SQL 关于table常用语法(一)

SQL分类:

DDL–数据定义语言(CREATE,ALTER,DROP,DELETE)

DML–数据操纵语言(SELECT,DELECT,UPDATE,INSERT)

DCL–数据控制语言(GRANT,REVOKE,COMMIT)

创建数据库:

CREATE DATABASE database_name;

删除数据库:

DROP DATABASE database_name;

1、创建表:

创建新表:
create table table_name(column1 type1 [not null][primary key],column2 type2 [not null],…);
根据已有的表创建新表:
a、create table table_new like table_old;
b、create table table_new as select column1 ,column2…from table_old definition only;

2、删除表(尽量不使用)

DROP table table_name;

3、添加主键

ALTER table table_name add primary key(column);

4、删除主键

ALTER table table_name DROP primary key(column);

5、创建一般(normal)索引

CREATE INDEX index_name ON table_name(column_name,column_name) include(score);
ALTER TABLE table_name add index index_name(column list);
(该语句添加普通索引,索引值可出现多次)

ALTER TABLE table_name add fulltext index_name(column list);
(该语句指定了索引为fulltext,用于全文索引)

6、创建唯一(unique)索引

非空索引:
CREATE UNIQUE IDNEX index_name ON table_name(column);
ALTER TABLE table_name add unique(column list);
(该语句创建索引的值必须是唯一的(除了null外,null可能会出现多次))

主键索引:
CREATE PRIMARY KEY INDEX index_name ON table_name(column);
ALTER TABLE table_name add primary key(column list);
(该语句添加了一个主键,表示索引值必须是唯一的,而且不能为null)

7、删除索引

DROP INDEX index_name on table_name;

ALTER TABLE table_name DROP INDEX index_name;

删除主键索引:
ALTER TABLE table_name DROP PRIMARY KEY;

8、表名注释

SQL语句 comment on table table_name is ‘注释内容’;

9、字段注释

SQL语句 comment on column table_name.column_name is ‘注释内容’;

10、插入数据

普通插入:
INSERT INTO table_name (column1,column2)
VALUES(value1,value2);

插入检索出来的数据:
INSERT INTO table_name1(column1,column2)
SELECT column1,column2 FROM table_name2;

讲一个表的内容插入到一个新表
CREATE TABLE table_new AS SELECT * FROM table_name;

11、更新数据

UPDATE table SET column = value WHERE id = 1(条件);

12、删除数据

DELECT FROM table_name WHERE id =1;
TRUNCATE TABLE 可以清空表,删除所有行,谨慎使用:
TRUNCATE TABLE table _name;
在使用更新和删除操作的时候一定要用WHERE子句限定条件,不然会使整张表的数据被更新和删除。可以先用SELECT语句进行测试,防止错误操作。

13、增加字段

单条:
ALTER TABLE table_name add column column_name column_type difault null/not null;

多条:
begin;
alter table table_name add column_name column_type(10);
alter table table_name add column_name column_type(10);
alter table table_name add column_name column_type(10);
alter table table_name add column_name column_type(10);
commit;

alter table table_name add (column1 type1(10),column2 type2(10),column3 type3(10),column4 type4(10));

14、修改字段

ALTER TABLE table_name modify column_name column_type(default 0) null/not null;

15、删除字段

ALTER TABLE table_name DROP column_name;

16、修改字段的名称

单条:
sp_rename ‘table_name.column_name_old’,‘table_name.column_name_new’;
ALTER TABLE table_name CHANGE column_name column_name_new column_type;

多条:
ALTER TABLE table_name CHANGE column_name column_name_new column_type;
CHANGE column_name column_name_new column_type;
CHANGE column_name column_name_new column_type;
CHANGE column_name column_name_new column_type;

17、修改字段的类型

alter table table_name alter column column_name column_type(10) not null;

18、创建序列

CREATE SEQUENCE sequence_name
[START WITH n]
[INCREMENT BY n]
[{MINVALUE n|NOMINVALURE}]
[{MAXVALUE n|NOMAXVALUE}]
[{CYCCLENNOCYCLE}]
[{CACHE|NOCACHE}];

MINVALUE n|NOMINVALURE:定义序列生成器能产生的最小值,nominvalue是默认选项,表示没有最小值定义。
这时对于递减序列,系统能够产生的最小值是10^26;对于递增序列,最小值是1。
MAXVALUE n|NOMAXVALUE :定义序列能够产生的最大值,nomaxvalue是默认选项,代表没有最大值定义。
这时对于递增序列,最大值是10^27,对于递减序列,最大值为-1.
START WITH:定义序列的初始值(即产生的第一个值),默认为1.
INCREMENT BY:用于定义序列的步长。如果省略,则默认为1,如果出现负值,则代表序列的值是按照此步长递减的。
CYCCLENNOCYCLE:表示当序列生成器的值达到限制值后是否循环。cycle代表循环。nocycle代表不循环。如果循环,则当递增序列达到最大值时,循环到最小值;对于递减序列达到最小值时,循环到最大值。如果不循环,达到限制值后,继续产生新值就会发生错误。
CACHE|NOCACHE:定义存放序列的内存块大小,默认为20.nocache表示不对序列进行内存缓冲。对序列进行内存缓冲,可以改善序列的性能。

19、创建视图

careate view view_name as … select…;

20、删除视图

drop view view_name [cascade];
cascade为级联删除

21、修改序列

ALTER SEQUENCE sequence_name
[INCREMENT BY n]
[{MAXVALUE/ MINVALUE n|NOMINVALUE/NOMAXVALUE}]
[{CYCLE|NOCYCLE}]
[{CACHE n|NOCACHE}];
注意不能修改序列的初始值。

22、删除序列

DROP SEQUENCE sequence_name;

23、查询序列

SELECT * FROM sequence_name;

24、truncate(只能用于数据特多情况)

当自己不再需要一张表的时候,就用drop;但自己仍然需要那张表,但是要删除所有记录时,用truncate;只需要删除部分记录的时候就用delete,记得用where限定。
truncate是一个能够快速清空资料表内所有资料的sql语句。并且能针对具有自动递增值的字段,做计数重置归零重新计算的作用。

eg.truncate table table_name;
注:
a、truncate table在功能上与不带where子句的delete语句相同;二者均删除表中的所有行。但truncate table 比delete速度快,且使用的系统和事务日志资源少。
b、delete语句此删除一行,并在事务日志中为所删除的每行记录一项。truncate table通过释放存储表数据所用的数据也来删除数据,并且只在事务日志上记录页的释放。
c、truncate table删除表中的所有行,但表的结构及其列、约束、索引等保持不变。新行标识所用的计数重置为该列的种子。如果想保留标识计数值,请改用delete。如果删除表定义及其数据,请用drop table。
d、对于由foreign key约束引用的表,不能使用truncate table,而应使用不带where子句的delete语句。由于truncate table不记录在日志中,所以它不能激活触发器。
e、truncate table不能用于参与了索引视图的表。
f、对用truncate table删除数据的表上增加数据时,要使用update statistics来维护索引信息。
g、如果有rollback语句,delete操作将被撤销,但truncate不会撤销。

/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值