sql数据库基本操作 sql数据库入门
大家好,今天小编来为大家解答sql数据库基本操作这个问题,sql数据库入门很多人还不知道,现在让我们一起来看看吧!
SQL数据库 基本的操作语句(增、删、改、查)
例子
create table useInfo--创建用户表
(
useId int identity(1,1) priamry key not null,--用户Id,设为主键,标识列,不为空。
useName varchar(10) not null,--用户名称,不为空
useSex char(2) not null--用户性别,不为空
)
go--批处理
insert into useInfo(useName,useSex) values('小明','男')--想表useInfo里添加信息,Id是标识列,所以不用自己手动添加,它会自动添加,所以只需添加姓名和性别。
update useInfo set useName='大明' where useName='小明'--把表里名字叫小明的人名字改为大明
delete from useInfo where useName='大明'--根据姓名删除表里的信息。
truncate table useInfo--把表里的所有信息都删了,而且把标志列的数清零。如果用delete删除表里的信息则不会把标识列清零。
select* from useInfo--查询useInfo表里的所有信息*表示所有
select 1 from useInfo where useName='大明'--按条件查询,查询表里名字叫大明的人的信息
sql基本命令都是什么含义,求列表解释
--SQL基本命令
--数据定义语言
Create(创建)
Alter(更改)
Drop(删除)
--数据操纵语言
Insert(插入)
select(选择)
delete(删除)
update(更新)
--事务控制语言
commit(提交)
savepoint(保存点)
rollback(回滚)
--数据控制语言
Grant(授权)
Revoke(回收)
--Orcale数据类型
--字符数据类型
char这种数据类型的列长度可以是1到2000个字节。
varchar2该数据类型的大小在1-4000个字节范围内
long这种数据类型可存储最大2GB。
--数值数据类型
number数据类型可以存储正数、负数、零、定点数和精度为38位的浮点数。
--日期时间数据类型
date数据类型使用七个字节固定长度,每个字节分别存储世纪、年、月、日、小时、分和秒。从4712年1月1日到公元9999年12月13日。
Timestamp数据类型用于存储日期的年、月、日以及时间的小时、分和秒值。秒值是精确到小数点后6位。该数据类型还包括了时区信息。
--Raw和LongRaw数据类型
Raw数据类型
Raw数据类型用于存储基于字节的数据。如二进制数据或字节串,该数据类型最多能存储2000个字节。
LongRaw数据类型用于存储可变长度的二进制数据,最多能存储2GB。(该数据不能使用索引,long受到的所有限制对longraw数据类型同样有效)
--LOB数据类型
Clob数据类型能够存储大量字符数据。该数据类型可以存储单字节数据和多字节字符数据。clob可用于存储非结构化的XML文档。
Blob数据类型可以存储较大的二进制对象,如图形、视频剪辑和声音剪辑等。
Bfile数据类型能够将二进制文件存储二进制文件存储在数据库外部的操作系统文件中。Bfile列存存储一个Bfile定位器。它指向位于服务器文件系统上的二进制文件。支持的文件最大为4GB。
--查看指定伪列用户(scott)
select rowid,ename,comm from emp where sal=1500
--查看伪列数
select* from emp where rownum<2
--数据定义语言
create table(需要创建的表)
alter table(需要更改的表)
truncate table(需要截断的表)
drop table(需要删除的表)
--create table保命令
create table [所有者即模式的名称,如果用户在自己的模式中创建表,则可以不指定所有者名称。][需要创建的表名]
([列的名称] [数据类型及长度]);
--例子(在当前用户下创建了一张名为(Cool)的表,里有有三个列分别是:Cool_ID、Cool_Name、Cool_like):
create table Cool(
Cool_ID number,
Cool_Name varchar(20),
Cool_like varchar(30));
--在表中插入数据
insert into Cool values(8850,'酷儿','编写Java应用程序');
insert into Cool values(8851,'酷儿','编写Java应用程序1');
insert into Cool values(8852,'酷儿','编写Java应用程序2');
insert into Cool values(8853,'酷儿','编写Java应用程序3');
insert into Cool values(8854,'酷儿','编写Java应用程序4');
insert into Cool values(8856,'酷儿','编写Java应用程序5');
insert into Cool values(8855,'酷儿','编写Java应用程序6');
--alter table命令
alter table [需要更改的表命称] [模式(modify=更改,add=添加,drop=删除)](表中的列名)
--例子
--更改表中Cool_like列数据长度更改为15
alter table cool modify(cool_name varchar(15));
--插入数据进行测试第一条数据可以顺利插入到列中,而第二条数据则不能插入列数,应为它的长度己超过了15个字符。(执行结果为:Error位于第一行:ora-01401:插入数据值对于列过大);
insert into Cool values(8855,'酷儿Test','编写Java应用程序、游戏等等。');
insert into Cool values(8855,'测试用户名,此列长度将超过15个字符。','编写Java应用程序、游戏等等。');
--在表中添加一个列,在表中添加一个Cool_Tel来存储电话号码。
alter table Cool add(Cool_Tel varchar(12));
insert into Cool values(8856,'酷儿8856','编写Java应用程序','13529424360');
--在表中删除Cool_Tel列;
alter table cool drop column cool_tel;
--Truncate table命令
--删除表中的记录而不删除列,此方法不能回滚因为它不使用事务处理。(优点:删除速度快)
truncate table cool;(执行结果:表己截断)
--desc查看cool表的结构
desc cool;
--drop table命令
--删除Cool表。此方法可以使用事务回滚。
drop table cool;
--数据操纵语言
--选择命令(Select)
select* from emp;(查询表中所有数据)
select* from emp where ename='adams';(按条件查询表中数据)
select distinct* from emp;(不选择表中的重复行,使用distinct关键字);
select* from cool where cool_name='酷儿' order by cool_id asc;(按Coo_ID进行升序排序)
select* from cool where cool_name='酷儿' order by cool_id desc;(按Coo_ID进行降序排序)
create table CoolDemo as select* from cool;(用现有表Cool创建一个新表,数据包括在select语包里,可以是所有,也可以是指定的列)
create table CoolDemo2 as select* from cool where 1= 2;(此条件不成立,所有只创建了表结构,没有数据)
select cool_id+10 sum,cool_name from cool;(此条语句使用了别名sum并且是cool_id+10语后的值,但原始值不会改变。)
--插入命令(Insert)
insert into cool values(8857,'酷儿','编写Java应用程序');(在Cool表中插入数据)
insert into cool(cool_name,cool_like) values('酷儿','编写Java应用程序null');(只插入姓名列(cool_name)和爱好列(cool_like)的值)
insert into cool values(8858,'酷儿',null);(在cool表中跳过了cool_like列,使用空值来填充)
alter table cool add(cool_date date);(在表中添加一个日期列,以便下面插入日期值)
insert into cool values(8859,'酷儿','编写Java应用程序8859','22-11月-06');(此条语句在Cool表中cool_date列插入了2006年11月12日的日期)
insert into cool select* from cooldemo;(此条语句插入了来自期它表的数据)
--更新命令(Update)
update cool set cool_name='酷儿至酷' where cool_name='酷儿';(如果cool_name列的值等于(酷儿)那么就将它更改为(酷儿至酷),这是有条件的查询)
update cool set cool_name='酷儿';(此条语句将cool_name列的所有值更改为(酷儿))
--删除命令(delete)
delete cool where cool_like='编写Java应用程序null';(如果cool表中cool_like列值等于(编写Java应用程序null)就删除它)
--提交命令(Commit)
commit;(提交事务)
commit work;(功能同上)
--标记命令(SavePoint)
savepoint savepoint_id;(它用来标记事务中可以应用回滚的点。)
--回滚事务(RollBack)
rollback;
rollback work;
rollback to savepoint [自己标记的记录点];
--数据控制语言
--授权命令(Grant)
Grant [操作权限如:select,update,delete等] on [表名称] to [用户名]
grant select,update,delete on cool to hedong911;(此条语句授权给用户hedong911查询、更新、删除cool表的权力)
grant update(cool_id,cool_name) on cool to hedong911;(此条语句授权给用户hedong911更新cool表(cool_id,cool_name)列权力)
grant select on cool to hedong911 with grant option;(此语句授权的用户hedong911可以给其它用户授权)
--回收授权命令(revoke)
revoke select,update,delete on cool to hedong911;(此条语句回收了hedong911的查询、更新、删除权力)
--算术操作符
(跳过)
--比较操作符
--比较操作符包括(=、!=、<、>、<=、>=、between……and(检查是否在两个值之间)、in(与列表中的值相匹配)、like(匹配字符模式)和is null(检查是否为空),最后四个操作符还可以和not(非)一起使用如:not between……and等
select* from cool where cool_name!='1';
select* from cool where cool_name like'酷儿';
select* from cool where cool_id< 8853;
select* from cool where cool_id> 8853;
select* from cool where cool_id<= 8853;
select* from cool where cool_id>= 8853;
select* from cool where cool_like in('编写Java应用程序');
--逻辑操作符
--逻辑操作符包括and(与)、or(或)和now(非);
select* from cool where cool_id<=8856 and cool_id>= 8853;
select* from cool where cool_id=9999 or cool_like in('编写Java应用程序');
--集合操作符
--联合查询(union)
select* from cool union select* from cooldemo;(此条语句将Cool和CoolDemo两张表的查询结果合拼,并删除重复行)
--联合所有查询(union all)
select* from cool union all select* from cooldemo;(此条语句将Cool和CoolDemo两张表的查询结果合拼,不删除重复行)
--交集查询(intersect)
select* from cool intersect select* from cooldemo;(此条语句查询两张表都有的行)
--减集查询(minus)
select* from cool minus select* from cooldemo;(此条语句返回第二张表没有的数据)
--连接(||)操作符
select('用户编号:'||cool_id||'姓名是:'||cool_name||'爱好是:'||cool_like||'日期是:'||cool_date) from cool where cool_id=8859;(运行结果:用户编号:8859姓名是:酷儿爱好是:编写Java应用程序8859日期是:22-11月-06)
SQL数据库语句大全
经典SQL语句大全
下列语句部分是Mssql语句,不可以在access中使用。
SQL分类:
DDL—数据定义语言(CREATE,ALTER,DROP,DECLARE)
DML—数据操纵语言(SELECT,DELETE,UPDATE,INSERT)
DCL—数据控制语言(GRANT,REVOKE,COMMIT,ROLLBACK)
首先,简要介绍基础语句:
1、说明:创建数据库
CREATE DATABASE database-name
2、说明:删除数据库
drop database dbname
3、说明:备份sql server
---创建备份数据的 device
USE master
EXEC sp_addumpdevice'disk','testBack','c:\mssql7backup\MyNwind_1.dat'
---开始备份
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 a.a, a.b, a.c, b.c, b.d, b.f from a LEFT OUT JOIN b ON a.a= b.c
B:right outer join:
右外连接(右连接):结果集既包括连接表的匹配连接行,也包括右连接表的所有行。
C:full outer join:
全外连接:不仅包括符号连接表的匹配行,还包括两个连接表中的所有记录。
其次,大家来看一些不错的sql语句
1、说明:复制表(只复制结构,源表名:a新表名:b)(Access可用)
法一:select* into b from a where 1<>1
法二: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'"&Server.MapPath(".")&"\data.mdb"&"' 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 a.title,a.username,b.adddate from table a,(select max(adddate) adddate from table where table.title=a.title) b
6、说明:外连接查询(表名1:a表名2:b)
select a.a, a.b, a.c, b.c, b.d, b.f from a LEFT OUT JOIN b ON a.a= b.c
7、说明:在线视图查询(表名1:a)
select* from(SELECT a,b,c FROM a) T where t.a> 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 table1.field1=table2.field1)
11、说明:四表联查问题:
select* from a left inner join b on a.a=b.b right inner join c on a.a=c.c inner join d on a.a=d.d 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.排序字段
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 tb.b=ta.b)
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、说明:删除重复记录
Delete from tablename where id not in(select max(id) from tablename group by col1,col2,...)
20、说明:列出数据库里所有的表名
select name from sysobjects where type='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
随机选择数据库记录的方法(使用Randomize函数,通过SQL语句实现)
对存储在数据库中的数据来说,随机数特性能给出上面的效果,但它们可能太慢了些。你不能要求ASP“找个随机数”然后打印出来。实际上常见的解决方案是建立如下所示的循环:
Randomize
RNumber= Int(Rnd*499)+1
While Not objRec.EOF
If objRec("ID")= RNumber THEN
...这里是执行脚本...
end if
objRec.MoveNext
Wend
这很容易理解。首先,你取出1到500范围之内的一个随机数(假设500就是数据库内记录的总数)。然后,你遍历每一记录来测试ID的值、检查其是否匹配RNumber。满足条件的话就执行由THEN关键字开始的那一块代码。假如你的RNumber等于495,那么要循环一遍数据库花的时间可就长了。虽然500这个数字看起来大了些,但相比更为稳固的企业解决方案这还是个小型数据库了,后者通常在一个数据库内就包含了成千上万条记录。这时候不就死定了?
采用SQL,你就可以很快地找出准确的记录并且打开一个只包含该记录的recordset,如下所示:
Randomize
RNumber= Int(Rnd*499)+ 1
SQL="SELECT* FROM Customers WHERE ID="& RNumber
set objRec= ObjConn.Execute(SQL)
Response.WriteRNumber&"="& objRec("ID")&""& objRec("c_email")
不必写出RNumber和ID,你只需要检查匹配情况即可。只要你对以上代码的工作满意,你自可按需操作“随机”记录。Recordset没有包含其他内容,因此你很快就能找到你需要的记录这样就大大降低了处理时间。
再谈随机数
现在你下定决心要榨干Random函数的最后一滴油,那么你可能会一次取出多条随机记录或者想采用一定随机范围内的记录。把上面的标准Random示例扩展一下就可以用SQL应对上面两种情况了。
为了取出几条随机选择的记录并存放在同一recordset内,你可以存储三个随机数,然后查询数据库获得匹配这些数字的记录:
SQL="SELECT* FROM Customers WHERE ID="& RNumber&" OR ID="& RNumber2&" OR ID="& RNumber3
假如你想选出10条记录(也许是每次页面装载时的10条链接的列表),你可以用BETWEEN或者数学等式选出第一条记录和适当数量的递增记录。这一操作可以通过好几种方式来完成,但是 SELECT语句只显示一种可能(这里的ID是自动生成的号码):
SQL="SELECT* FROM Customers WHERE ID BETWEEN"& RNumber&" AND"& RNumber&"+ 9"
注意:以上代码的执行目的不是检查数据库内是否有9条并发记录。
随机读取若干条记录,测试过
Access语法:SELECT top 10* From表名 ORDER BY Rnd(id)
Sql server:select top n* from表名 order by newid()
mysql select* From表名 Order By rand() Limit n
Access左连接语法(最近开发要用左连接,Access帮助什么都没有,网上没有Access的SQL说明,只有自己测试,现在记下以备后查)
语法 select table1.fd1,table1,fd2,table2.fd2 From table1 left join table2 on table1.fd1,table2.fd1 where...
使用SQL语句用...代替过长的字符串显示
语法:
SQL数据库:select case when len(field)>10 then left(field,10)+'...' else field end as news_name,news_id from tablename
Access数据库:SELECT iif(len(field)>2,left(field,2)+'...',field) FROM tablename;
Conn.Execute说明
Execute方法
该方法用于执行SQL语句。根据SQL语句执行后是否返回记录集,该方法的使用格式分为以下两种:
1.执行SQL查询语句时,将返回查询得到的记录集。用法为:
Set对象变量名=连接对象.Execute("SQL查询语言")
Execute方法调用后,会自动创建记录集对象,并将查询结果存储在该记录对象中,通过Set方法,将记录集赋给指定的对象保存,以后对象变量就代表了该记录集对象。
2.执行SQL的操作性语言时,没有记录集的返回。此时用法为:
连接对象.Execute"SQL操作性语句" [, RecordAffected][, Option]
·RecordAffected为可选项,此出可放置一个变量,SQL语句执行后,所生效的记录数会自动保存到该变量中。通过访问该变量,就可知道SQL语句队多少条记录进行了操作。
·Option可选项,该参数的取值通常为adCMDText,它用于告诉ADO,应该将Execute方法之后的第一个字符解释为命令文本。通过指定该参数,可使执行更高效。
·BeginTrans、RollbackTrans、CommitTrans方法
这三个方法是连接对象提供的用于事务处理的方法。BeginTrans用于开始一个事物;RollbackTrans用于回滚事务;CommitTrans用于提交所有的事务处理结果,即确认事务的处理。
事务处理可以将一组操作视为一个整体,只有全部语句都成功执行后,事务处理才算成功;若其中有一个语句执行失败,则整个处理就算失败,并恢复到处里前的状态。
BeginTrans和CommitTrans用于标记事务的开始和结束,在这两个之间的语句,就是作为事务处理的语句。判断事务处理是否成功,可通过连接对象的Error集合来实现,若Error集合的成员个数不为0,则说明有错误发生,事务处理失败。Error集合中的每一个Error对象,代表一个错误信息。
SQL语句大全精要
2006/10/26 13:46
DELETE语句
DELETE语句:用于创建一个删除查询,可从列在 FROM子句之中的一个或多个表中删除记录,且该子句满足 WHERE子句中的条件,可以使用DELETE删除多个记录。
语法:DELETE [table.*] FROM table WHERE criteria
语法:DELETE* FROM table WHERE criteria='查询的字'
说明:table参数用于指定从其中删除记录的表的名称。
criteria参数为一个表达式,用于指定哪些记录应该被删除的表达式。
可以使用 Execute方法与一个 DROP语句从数据库中放弃整个表。不过,若用这种方法删除表,将会失去表的结构。不同的是当使用 DELETE,只有数据会被删除;表的结构以及表的所有属性仍然保留,例如字段属性及索引。
UPDATE
有关UPDATE,急!!!!!!!!!!!
在ORACLE数据库中
表 A( ID,FIRSTNAME,LASTNAME)
表 B( ID,LASTNAME)
表 A中原来ID,FIRSTNAME两个字段的数据是完整的
表 B中原来ID,LASTNAME两个字段的数据是完整的
现在要把表 B中的LASTNAME字段的相应的数据填入到A表中LASTNAME相应的位置。两个表中的ID字段是相互关联的。
先谢谢了!!!!
update a set a.lastname=(select b.lastname from b where a.id=b.id)
掌握SQL四条最基本的数据操作语句:Insert,Select,Update和Delete。
练掌握SQL是数据库用户的宝贵财富。在本文中,我们将引导你掌握四条最基本的数据操作语句—SQL的核心功能—来依次介绍比较操作符、选择断言以及三值逻辑。当你完成这些学习后,显然你已经开始算是精通SQL了。
在我们开始之前,先使用CREATE TABLE语句来创建一个表(如图1所示)。DDL语句对数据库对象如表、列和视进行定义。它们并不对表中的行进行处理,这是因为DDL语句并不处理数据库中实际的数据。这些工作由另一类SQL语句—数据操作语言(DML)语句进行处理。
SQL中有四种基本的DML操作:INSERT,SELECT,UPDATE和DELETE。由于这是大多数SQL用户经常用到的,我们有必要在此对它们进行一一说明。在图1中我们给出了一个名为EMPLOYEES的表。其中的每一行对应一个特定的雇员记录。请熟悉这张表,我们在后面的例子中将要用到它。
关于本次sql数据库基本操作和sql数据库入门的问题分享到这里就结束了,如果解决了您的问题,我们非常高兴。