查询表格的结构用desc table_name;
一、data definition language
1、建表格
create table table_name(column1 datatype [not null] [not null primary key], column2 datatype [not null],..)
datatype - 资料的格式
not null - 不可以允许资料有空的
primary key - 是本表的主键
实例:create table randy (name char(10),age integer);
2、更改表格
alter table table_name add column column_name datatype
增加一个栏位(没有删除某个栏位的语法)
实例:alter table randy add address varchar(100); --在实际应用中不能有column关键字
alter table table_name add primary key (column_name)
更改表的定义把某个栏位设为主键
实例: alter table randy add primary key (name);
alter table table_name drop primary key (column_name)
把主键的定义删除
实例: alter table randy drop primary key; --实际应用中不需要column_name
3、建立索引
create index index_name on table_name (column_name)
说明:对某个表格的栏位建立索引可以增加查询时的速度
实例: create index randyindex on randy (name);
4、删除
删除表 drop table_name
删除索引 drop index_name
注意不能删除表中的某个栏位
实例:drop table table_name;
drop index index_name; --删除时需要指明table 或 index 关键字
二、资料形态 datatypes
smallint 16 位元的整数。
interger 32 位元的整数。
decimal(p,s) p 精确值和 s 大小的十进位整数,精确值p是指全部有几个数(digits)大小值,s是指小数後有几位数。如果没有特别指定,则系统会设为 p=5; s=0 。
float 32位元的实数。
double 64位元的实数。
char(n) n 长度的字串,n不能超过 254。
varchar(n) 长度不固定且其最大长度为 n 的字串,n不能超过 4000。
graphic(n) 和 char(n) 一样,不过其单位是两个字元 double-bytes,n不能超过127。这个形态是为支援两个字元长度的字体,例如中文字。
vargraphic(n) 可变长度且其最大长度为 n 的双字元字串,n不能超过 2000。
date 包含了年份、月份、日期。
time 包含了 小时、分钟、秒。
timestamp 包含了年、月、日、时、分、秒、千分之一秒。
三、资料操作 data manipulation language
1、增加资料
insert into table_name (column1,column2,...) values (value1,value2,...)
实例: insert into randy (name,age) values (''l'',16); --字符串要用'' ''表示。
insert into randy values (''wei'',26,''xiddian''); --没有指定column则会按照栏位顺序填入资料
注意table_name也可以是景观view_name;
insert into table_name (column1,column2,...) select column1x,column2x,... from another_table
说明:也可以经过一个子查询把别的表格的资料填入
实例: insert into randy select * from copyrandy;
2、查询资料
select column1,column2 from table_name
select * from table_name where column1 = xxx [and column2 > yyy] [or column3 <> zzz]
实例: select * from randy where name<>''l'' and age<27;
select * from table_name order by column2 [desc]
说明:order by 是指定以某个栏位做排序,[desc]是指从大到小排列,而默认是从小到大排列。
实例:select * from randy order by age desc; --[desc]的[]只是说明是可选项
组合查询:联合一个以上的表格才能够得到结果
select * from table1,table2 where table1.colunn1=table2.column1
实例:select * from randy,copyrandy where randy.age=copyrandy.age;
整合性查询
select count(*) from table_name where column_name = xxx
说明:符合条的资料共有几笔
实例: select count(*) from randy where age<30;
select sum(column1) from table_name
说明:计算出总和,所选的栏位必须是可数的数字形态
实例:select sum(age) from randy;
除此以外还有avg(),max(),min()等函数。
select column1,avg(column2) from table_name group by column1 having avg(column2)>xxx
说明:group by column 以column1为一组计算column2的平均值,如果column1只有一列数据,则avg(column2)则是column2本身。
having 必须和group by 一起使用作为整合性的限制。
实例:select name,avg(age) from randy group by name having avg(age)<27;
复合性查询
select * from table1_name where exists (select * from table2_name where conditions)
说明:exists 指存在与否
实例: select * from randy where exists (select * from copyrandy where age=26); --where 后面的部分只是一个条件condition,如果条件为真则执行前面的部分,前面部分执行的内容和条件无关。
select * from table_name1 where column1 in (select column1 from table_name2 where conditions)
说明:in后面是一个集合表示column1存在集合里面
select出来的资料形态必须符合column1
实例:select * from randy where name in (select name from copyrandy);
其他查询
select * from table_name1 where column1 like ''x%''
说明:like必须与后面的''x%''相呼应表示以x开头的子串
实例: select * from randy where name like ''w%'';
select * from table_name1 where column1 in (''xxx'',''yyy'',...)
说明:in后面是一个集合,表示column1在集合里面
实例:select * from randy where name in (''ling'',''wei'',''ran'');
select * from table_name1 where column1 between xx and yy
说明:between表示column1的值介于xx与yy之间
实例:select * from randy where age between 1 and 27;
3、更改资料
update table_name set column1=''xxx'' where conditions
实例:update randy set name=''ling'' where age=16;
4、删除资料
delete from table_name where conditions
实例:delete from randy where name=''ling'';
日期的比较不同的数据库有不同的表达式
1)access数据库 where mydate>#2000-01-01#
2)Oracle数据库 where mydate>case(''2000-01-01'' as date) 或 where mydate>to_date(''2000-01-01'',''yyyy-mm-dd'')
一、data definition language
1、建表格
create table table_name(column1 datatype [not null] [not null primary key], column2 datatype [not null],..)
datatype - 资料的格式
not null - 不可以允许资料有空的
primary key - 是本表的主键
实例:create table randy (name char(10),age integer);
2、更改表格
alter table table_name add column column_name datatype
增加一个栏位(没有删除某个栏位的语法)
实例:alter table randy add address varchar(100); --在实际应用中不能有column关键字
alter table table_name add primary key (column_name)
更改表的定义把某个栏位设为主键
实例: alter table randy add primary key (name);
alter table table_name drop primary key (column_name)
把主键的定义删除
实例: alter table randy drop primary key; --实际应用中不需要column_name
3、建立索引
create index index_name on table_name (column_name)
说明:对某个表格的栏位建立索引可以增加查询时的速度
实例: create index randyindex on randy (name);
4、删除
删除表 drop table_name
删除索引 drop index_name
注意不能删除表中的某个栏位
实例:drop table table_name;
drop index index_name; --删除时需要指明table 或 index 关键字
二、资料形态 datatypes
smallint 16 位元的整数。
interger 32 位元的整数。
decimal(p,s) p 精确值和 s 大小的十进位整数,精确值p是指全部有几个数(digits)大小值,s是指小数後有几位数。如果没有特别指定,则系统会设为 p=5; s=0 。
float 32位元的实数。
double 64位元的实数。
char(n) n 长度的字串,n不能超过 254。
varchar(n) 长度不固定且其最大长度为 n 的字串,n不能超过 4000。
graphic(n) 和 char(n) 一样,不过其单位是两个字元 double-bytes,n不能超过127。这个形态是为支援两个字元长度的字体,例如中文字。
vargraphic(n) 可变长度且其最大长度为 n 的双字元字串,n不能超过 2000。
date 包含了年份、月份、日期。
time 包含了 小时、分钟、秒。
timestamp 包含了年、月、日、时、分、秒、千分之一秒。
三、资料操作 data manipulation language
1、增加资料
insert into table_name (column1,column2,...) values (value1,value2,...)
实例: insert into randy (name,age) values (''l'',16); --字符串要用'' ''表示。
insert into randy values (''wei'',26,''xiddian''); --没有指定column则会按照栏位顺序填入资料
注意table_name也可以是景观view_name;
insert into table_name (column1,column2,...) select column1x,column2x,... from another_table
说明:也可以经过一个子查询把别的表格的资料填入
实例: insert into randy select * from copyrandy;
2、查询资料
select column1,column2 from table_name
select * from table_name where column1 = xxx [and column2 > yyy] [or column3 <> zzz]
实例: select * from randy where name<>''l'' and age<27;
select * from table_name order by column2 [desc]
说明:order by 是指定以某个栏位做排序,[desc]是指从大到小排列,而默认是从小到大排列。
实例:select * from randy order by age desc; --[desc]的[]只是说明是可选项
组合查询:联合一个以上的表格才能够得到结果
select * from table1,table2 where table1.colunn1=table2.column1
实例:select * from randy,copyrandy where randy.age=copyrandy.age;
整合性查询
select count(*) from table_name where column_name = xxx
说明:符合条的资料共有几笔
实例: select count(*) from randy where age<30;
select sum(column1) from table_name
说明:计算出总和,所选的栏位必须是可数的数字形态
实例:select sum(age) from randy;
除此以外还有avg(),max(),min()等函数。
select column1,avg(column2) from table_name group by column1 having avg(column2)>xxx
说明:group by column 以column1为一组计算column2的平均值,如果column1只有一列数据,则avg(column2)则是column2本身。
having 必须和group by 一起使用作为整合性的限制。
实例:select name,avg(age) from randy group by name having avg(age)<27;
复合性查询
select * from table1_name where exists (select * from table2_name where conditions)
说明:exists 指存在与否
实例: select * from randy where exists (select * from copyrandy where age=26); --where 后面的部分只是一个条件condition,如果条件为真则执行前面的部分,前面部分执行的内容和条件无关。
select * from table_name1 where column1 in (select column1 from table_name2 where conditions)
说明:in后面是一个集合表示column1存在集合里面
select出来的资料形态必须符合column1
实例:select * from randy where name in (select name from copyrandy);
其他查询
select * from table_name1 where column1 like ''x%''
说明:like必须与后面的''x%''相呼应表示以x开头的子串
实例: select * from randy where name like ''w%'';
select * from table_name1 where column1 in (''xxx'',''yyy'',...)
说明:in后面是一个集合,表示column1在集合里面
实例:select * from randy where name in (''ling'',''wei'',''ran'');
select * from table_name1 where column1 between xx and yy
说明:between表示column1的值介于xx与yy之间
实例:select * from randy where age between 1 and 27;
3、更改资料
update table_name set column1=''xxx'' where conditions
实例:update randy set name=''ling'' where age=16;
4、删除资料
delete from table_name where conditions
实例:delete from randy where name=''ling'';
日期的比较不同的数据库有不同的表达式
1)access数据库 where mydate>#2000-01-01#
2)Oracle数据库 where mydate>case(''2000-01-01'' as date) 或 where mydate>to_date(''2000-01-01'',''yyyy-mm-dd'')