SQL基础(二)

top 

用于规定要返回的记录的数目

select top number | percent column_name(s) from table_name


like  以及 not like

用于在where 子句中搜索列中的指定模式

select column_name(s) from table_name  where column_name like pattern 

select  * from persons where city like '%lon%'

 

SQL通配符

在搜索数据库中的数据时,SQL通配符可以替代一个或多个字符,通配符必须和LIKE一起使用。

% 替代一个或多个字符

_  下划线仅替代一个字符

[charlist] 字符列中的任何单一字符

[^charlist]或[!charlist] 不在字符列中的任何单一字符

select * from persons where city like '[ALN]%'  居住的城市以 A ,L或 N开头的人


 

in 允许我们在where 子句中规定多个值

select column_name(s) from table_name where column_name in (v1,v2,v3``````)


 

between ····· and

选取介于两个值之间的数据范围

select column_name(s) from table_name where column_name between value1 and value2

某些数据库不包括边界,某些包括

判断字符顺序的时候可以使用这个


 

sql alias 

可以为列名称和表名称指定别名

select column_name(s) from table_name as alias_name

select column_name as alias_name from table_name


 

sql join 根据两个或 多个表中列之间的关系,从这些表中查询数据

数据库中的表可通过键将彼此联系起来。主键是一个列,在这个列中每一行的值都是唯一的。在表中,每个主键的值都是唯一的,这样做的目的是在不重复每个表中的所有数据的情况下,把表间的数据交叉捆绑在一起

select p.firstname,p.lastname,o.orderno from persons as p inner join orders o on p.id_p = o.id_p 

inner join 内连接  在表中存在至少一个匹配时,则返回行

join 如果表中有至少一个匹配,则返回行

select column_name(s) from table_name1 inner join table_name2 on table_name1.column_name = table_name2.column_name

left join 即使右表中没有匹配,也从左表返回所有的行

select column_name(s) from table_name1 left_join table_name2 on table_name1.column_name = table_name2.column_name

right join 即使左表中没有匹配,也从右表返回所有的行

select column_name(s) from table_name1 right join table_name2 on table_name1.column_name = table_name2.column_name

full join 只要其中一个表中存在匹配,就返回行。

select column_name(s) from table_name1 full join table_name2 on table_name1.column_name = table_name2.column_name


sql union

用于合并两个或多个select 语句的结果集

select column_name(s) from table_name1

union

select column_name(s) from table_name2

注意:union 内部的select语句必须拥有相同数量的列,列也必须拥有相似的数据类型。同时,每条select语句中的列的顺序必须相同。

union 和union all 执行结果的唯一区别就是,union 会将相同结果的行合并成一行,而union all会显示所有的

union 结果集中的列名总是等于union第一个select中的列名


select into 

从一个表中选取数据,然后把数据插入另一个表中。常用于创建表的备份复件或者用于对记录进行存档。

select * into new_table_name [in externaldatabase] from old_tablename

select column_name(s) into new_table_name [in externaldatabase] from old_tablename

new_table_name 该数据库不能是已经存在的表


 

create table table_name(

id int primary key identity(1,1) not null,

column1 varchar(20) not null,

column2 datetime ,

column3 decimal(18,2) not null,

id_p int foreign key references table_name2(id_p)

)

SQL 约束

not null  不接受null值

unique   唯一标识数据库表中的每条记录,没有相等的 

primary key    主键

foreign key   外键  foreign key (id_p) references persons(id_p)

check  用于限制列中的值的范围

default   用于向列中插入默认值


 CONSTRAINT 

【ADD CONSTRAINT 约束名 UNIQUE (Id_P,LastName)】

alter table persons drop constraint 约束名

alter table orders add constraint 约束名 foreign key  (id_p) references persons(id_p)

alter table persons add constraint chk_person check (id>0 and city ='sandnes') 

alter table persons alter column city drop default 


 create index 语句用于在表中创建索引,在不读取整个表的情况下,索引使数据库应用程序可以更快地查找数据

用户无法看到索引,它们只能被用来加速搜索/查询

注:更新一个包含索引的表需要比更新一个没有索引的表更多的时间,这是由于索引本身也需要更新。因此,理想的做法是在常常被搜索到的列(以及表)上面创建索引。

create index index_name on table_name (column_name)

create unique index index_name on table_name(column_name) 唯一的索引意味着两个不能拥有相同的索引值。

create index personindex on person (lastname desc)


drop 

drop index 索引名 on 表名

drop table 表名

drop database 数据库名

truncate table 表名  仅删除表内的数据,不删除表本身


alter table 添加,修改或删除列

alter table table_name add column_name datatype

alter table table_name drop  column  column_name 

alter table table_name alter column column_name datatype 改变表中列的数据类型

如果column有索引,则不能对该列进行数据类型修改或者删除,只有删除索引后,才可以对该类进行操作


auto-increment

插入表中时生成一个唯一的数字


view 

视图是基于SQL语句的结果集的可视化的表。

视图包含行和列,就像一个真实的表。视图中的字段是来自一个或多个数据库中的真实的表中的字段。我们可以向视图添加SQL函数、where以及

join语句,我们也可以提交数据,就像这些来自于某一个单一的表。

数据库的设计和结构不会受到视图中的函数、where或join语句的影响。

create view view_name as select column_name(s) from table_name where condition

create view 必须是批处理中仅有的语句,即查询中不能有其他语句

 更新视图:create or replace view yma1_view as select year,amount from yma1【在测试的时候,出错,错误提示:or 附近存在语法错误】

 删除视图:drop view view_name


 

 日期

在处理日期时,需要确保所插入的日期格式,与数据库中日期列的格式相匹配。如果数据包含的只是日期部分,运行查询就不会出问题,但是,

如果涉及时间,情况就会变得复杂。

 

posted @ 2018-03-22 17:28  冬月二四  阅读(215)  评论(0编辑  收藏  举报