--[1]创建一个登录名pbMaster密码
USE master
GO
--创建登录名
CREATE LOGIN pbMaster WITH PASSWORD='123456'
GO
--[2]创建数据库用户
USE E_Market
GO
--MasterDBUser是数据库用户名,pbMaster是登录名
CREATE USER MasterDBUser FOR LOGIN pbMaster
GO
--[3]赋予用户操作权限
USE E_Market
GO
--为表UserInfo赋予查看,新增,修改的操作权限MasterDBUser数据库用户GRANT SELECT,INSERT,UPDATE ON UserInfo TO MasterDBUser
GO
--[4]收回新增的操作权限
USE E_Market
GO
REVOKE INSERT ON UserInfo TO MasterDBUser
GO
--使用sql语句来查看数据的状态,这里shuhan是数据库SELECT state_desc FROM sys.databases WHERE name='shuhan'
--数据类型
char和varchar:汉字点两个字节,英文、数字或字符占一个字节性别:男女
char(2)或者是varchar(2)
nchar和nvarchar:无论是汉字还是英文,数字或字符都占一个
性别:男女
nchar(1)或者nvarchar(1)
固定长度与非固定长度:
身份证号:18位长度固定,char(18)或nchar(18)
住址:varchar(255)或nvarchar(255)
如果住址中存在汉字、数字,nvarchar(255),
小说或新闻:text,或ntext
--新建数据库create database数据库名
create database shuhan
ON PRIMARY--主文件组
(
NAME='E_Market_data',--逻辑文件名
--物理文件名
FILENAME='H:\project\E_Market_data.mdf', SIZE=5MB,--初始大小
MAXSIZE=100MB,--最大容量
FILEGROWTH=15%--增长率
),
FILEGROUP FG--创建了一个次文件组(日志) (
NAME='E_Market2_data',
FILENAME='H:\project\E_Market2_data.ndf', SIZE=4MB,
FILEGROWTH=10%
)
LOG ON--日志文件
(
NAME='E_Market_log',
FILENAME='H:\project\E_Market_log.ldf',
SIZE=5MB,
FILEGROWTH=0--未启用自动增长
),
(
NAME='E_Market2_log',
FILENAME='H:\project\E_Market2_log.ldf',
SIZE=3MB,
FILEGROWTH=10%,
MAXSIZE=100MB
)
--建人物表的同时建字段
create table renwu--create table表名
(
bianhao int,--编号
xingming nvarchar(5),--姓名
xingbie nchar(1),--性别
zhiwu nvarchar(50),--职务
nianling int,--年龄
--numeric(),6表示一共占个字符,表示小数位占位
gongzi numeric(6,2),--工资
buzhu numeric(5,1)--补助
)
--添加记录
--insert into表名values(添加数据)
insert into renwu values(1,'刘备','男','主公',40,9999,1000) insert into renwu values(2,'甘夫人','女','夫人',28,8000,500) insert into renwu values(3,'诸葛亮','男','军师',38,9500,650) insert into renwu values(4,'关羽','男','将军',36,7000,700) insert into renwu values(5,'张飞','男','将军',37,6500,400) insert into renwu values(6,'赵子龙','男','将军',30,6500,600) --删除全部记录
delete from renwu
--按条件删除记录delete from表名where按什么条件
--(含条件)删除
delete from renwu where bianhao=2
--将已删除的数据从新添加
insert into renwu(bianhao,xingming,xingbie,zhiwu,nianling,gongzi)values(2,'甘夫人','女','夫人',28,8000) --删除表drop table表名
drop table renwu
--检测要删除的表是否存在
USE shuhan
GO
SELECT*FROM renwu
--如果存在就将其表删除,否则不执行删除语句
IF EXISTS(SELECT*FROM sysobjects WHERE name='gsyg')
DROP TABLE gsyg
GO
--CHARINDEX:在一个字符串中查找另一个字符串,如果找到返回找到的位置,如果没有找到返回--两个参数,不指定开始位置,默认从开始
SELECT CHARINDEX('zxw','https://www.doczj.com/doc/c39741691.html,')
--三个参数,第一个是查找的,第二个是源字符串,第三个是开始查找的位置
SELECT CHARINDEX('zxw','https://www.doczj.com/doc/c39741691.html,',10)
--将函数放在查询语句中进行使用
--查询“何双呈”的邮箱中"@"符号的位置
SELECT CHARINDEX('@',Email)FROM UserInfo
WHERE UserName='何双呈'
SELECT*FROM UserInfo WHERE UserName='何双呈'
--使用CHARINDEX的目的是想把邮箱中的用户名提取出来
--LEN:求子符串的长度
SELECT LEN(Email)FROM UserInfo WHERE UserName='何双呈'
--LEFT从字符串的左边截取指定个数的字符
SELECT LEFT(Email,CHARINDEX('@',Email)-1)
FROM UserInfo WHERE UserName='何双呈'
--REPLACE替换一个字符串的字符
SELECT REPLACE('我最喜欢的颜色是白色','白色','绿色')
SELECT REPLACE('我最喜欢的颜色是白色','白色','')--如果最后一个参数是空的话,相当于将第二个参数删除--STUFF--参数,源字符串,参数,开始位置,参数,删除的长度,参数是插入的新字符串
SELECT STUFF('ABCDEF',2,3,'我要自学网')
--查询表select*from表名
select*from renwu
--查询表中相应字段的数据
--select要查询的数据(多个数据用逗号隔开)from表名
select bianhao,gongzi from renwu
--按条件查询
--select要查询的数据(多个数据用逗号隔开)from表名where按什么条件
select bianhao,gongzi from renwu
--1、查询bianhao,xingming,gongzi并且查询工资大于的
select bianhao,xingming,gongzi from renwu where gongzi>7000
--查询不含有重复的记录select distinct要查询的数据form表名
--distinct表示去除掉重复的select distinct要查询的数据form表名
select distinct bianhao form renwu
--更改字段的别名
select bianhao编号,gongzi工资from renwu
--或者
select bianhao as'编号',gongzi as'工资'from renwu
--显示每个员工的年薪并且把字段以中文的方式显示
select xingming姓名,gongzi*12年工资from renwu
--计算年总收入(含补助),和空值做四则运算
--isnull(buzhu,0)判断是否为空,如果不为空执行逗号前面的,如果为空执行逗号后面的select xingming'姓名',gongzi*12+isnull(buzhu,0)*12'年总收入'from renwu
--查询工资在到之间的员工
select xingming'姓名',gongzi'工资'from renwu where gongzi>13000and gongzi<=18000 --查询性李的员工,查询第二个字是俊的员工
select xingming from renwu where xingming like'李%'
select xingming from renwu where xingming like'_俊%'
--批量查询
select xingming,bianhao from renwu where bianhao in(1,2,3,4,5,6)
--查询一把手,也就是头头
select xingming,zhiwu from renwu where bianhao is null
--排序(order by)默认升序desc降序中文排序按照拼音顺序和音调
select xingming,gongzi from renwu order by gongzi desc--降序
select xingming,gongzi from renwu order by gongzi--升序
--按部门编号升序,按工资降序
select xingming,bianhao,gongzi from renwu order by bianhao,gongzi desc
--用起临时名的方法算总收入并降序排序
select xingming,gongzi*12+isnull(buzhu,0)*12nianxin from renwu order by nianxin desc --显示最高工资和最低工资
select max(gongzi)from renwu
select min(gongzi)from renwu
--即显示姓名又显示最高工资
select xingming,gongzi from renwu where gongzi=(select max(gongzi)from renwu)
--显示总工资和平均工资
select sum(gongzi)'总工资',AVG(gongzi)'平均工资'from renwu
select xingming,gongzi,(select AVG(gongzi)from renwu)from renwu where gongzi>(select AVG(gongzi)from renwu) --统计有多少记录
select count(*)from renwu
--统计每个部门的平均工资和总工资,group by表示分类汇总的意思
select bianhao,AVG(gongzi),SUM(gongzi)from renwu group by bianhao--按编号分类
--显示每个部门每个职务的平均工资和最低工资
select bianhao,AVG(gongzi),MIN(gongzi),zhiwu from renwu group by bianhao,zhiwu order by bianhao
--显示平均工资低于的部门编号和平均工资.having表示二次筛选
select bianhao,AVG(gongzi)from renwu group by bianhao having AVG(gongzi)<9999
--日期函数
--【1】获得当前系统时间
SELECT GETDATE()
--【2】DATEADD()参数,指定的日期部分,参数,整数值,参数,有效的日期格式
SELECT DATEADD(MM,1,GETDATE())
--参数的整数是否允许为负数,允许
SELECT DATEADD(MM,-1,GETDATE())
--参数的整数值是否允许为小数,直接舍点小数部分取整
SELECT DATEADD(MM,1.5,GETDATE())
SELECT DATEADD(MM,1.6,GETDATE())
SELECT DATEADD(MM,1.4,GETDATE())
--【3】DATEDIFF,求两个指定日期之间的差
SELECT DATEDIFF(YY,'2008-8-8',GETDATE())
--开始日期小于结束日期,那么如果开始日期大于结束日期,结果如何?
SELECT DATEDIFF(YY,GETDATE(),'2008-8-8')
--【4】DATENAME与DATEPART
--DATENAME返回的是日期指定部分的一个字符形式,“+”起的是连接作用,因为“+”号左右都是字符形式SELECT DATENAME(YY,GETDATE())+DATENAME(DD,GETDATE())
--DATEPART返回的是日期指定部分的一个数值形式,“+”起的作用是相加运算,是算术运算符SELECT DATEPART(YY,GETDATE())+DATEPART(DD,GETDATE())
--数学函数
--【1】随机数RAND,如果指定了随机种子,那么返回的随机数都相同,
--如果没有指定随机种子,那么系统自动分配,所以每次的返回值都不相同
SELECT RAND(100)
SELECT RAND(100)
SELECT RAND()
SELECT RAND()
--【2】CEILING:英文意思是天花板,正数进位取大值,负数舍小数取大值
SELECT CEILING(9.000001)
SELECT CEILING(-9.000001)
--【3】FLOOR:英文意思是地板,正数舍小数取小值,负数进位取小值
SELECT FLOOR(9.999999)
SELECT FLOOR(-9.000001)
--【4】ROUND:对数值进行四舍五入
SELECT ROUND(123.565,2)
SELECT ROUND(-123.434,2)
--【5】ABS取绝对值,正数的绝对值是本身,负数的绝对值是相反数,的绝对值是SELECT ABS(434)
SELECT ABS(-987)
SELECT ABS(0)
--【6】系统函数CONVERT用于数据类型转换
--将字符型转为数值型
SELECT CONVERT(int,'12')+CONVERT(int,'10')--+号起的是算术运算,相加运算
--将数值型转为字符型
SELECT CONVERT(varchar(2),12)+CONVERT(varchar(2),10)--+号是连接运算符,起连接作用--将日期型转为字符型
SELECT CONVERT(varchar(10),GETDATE(),102)
SELECT CONVERT(varchar(10),GETDATE(),112)
--修改
--update表明set修改数据(多数据的用逗号隔开)where按什么条件
--如果条件是空则必须是where us null
update gsyg set nianling=23where bianhao=2
--主键
--primary Key表示主键,其特性是(不能重复,不能为空) create database shuihu
create table bumen
(
bianhao int primary Key,
mingcheng nvarchar(10),
didian nvarchar(20)
)
create table renyuan
(
paihang int primary Key,
xingming nvarchar(20),
zhiwu nvarchar(20),
shangji int,
ruzhishijian datetime,
gongzi numeric(6,1),
buzhu numeric(5,1),
--foreign Key references表示外键
bianhao int foreign Key references bumen(bianhao)
)
--多表查询
--笛卡尔集现象
--语法:select*from表名,表名
select*from renwu,bumen
--主、外键不相符的查询
select*from renwu,bumen where bumen.mingcheng=条件
--主、外键一致的查询
select*from renwu,bumen where bumen.mingcheng=条件and renwu.bianhao=bumen.bianhao
--显示编号相同的数据
select*from renwu,bumen where renwu.bianhao=bumen.bianhao
--显示姓名和所在部门以及部门编号
select xingming,mingcheng,renwu.bianhao from renwu,bumen where renwu.bianhao=bumen.bianhao
--复杂查询
--如显示李逵的上级
select shangji from renwu where xingming='李逵'--显示编号
select xingming from renwu paihang=(select shangji from renwu where xingming='李逵')--显示姓名
--子查询
--1、单行子查询
select ename,deptno,sal from emp where deptno=(select deptno from dept where loc='NEW YORK');
--2、多行子查询
SELECT ename,job,sal FROM EMP WHERE deptno in(SELECT deptno FROM dept WHERE dname LIKE'A%');
--3、多列子查询
SELECT deptno,ename,job,sal FROM EMP WHERE(deptno,sal)IN(SELECT deptno,MAX(sal)FROM EMP GROUP BY deptno);
--4、内联视图子查询
(1)SELECT ename,job,sal,rownum FROM(SELECT ename,job,sal FROM EMP ORDER BY sal);
(2)SELECT ename,job,sal,rownum FROM(SELECT ename,job,sal FROM EMP ORDER BY sal)WHERE rownum<=5;
--5、在HAVING子句中使用子查询
SELECT deptno,job,AVG(sal)FROM EMP GROUP BY deptno,job HAVING AVG(sal)>(SELECT sal FROM EMP WHERE ename='MARTIN');
--显示所有员工及上级的姓名,这里a和b是自定义的别名
select a.xingming'姓名',b.xingming'上级'from renwu a,renwu b where a.shangji=b.paihang --分页查询
--显示个到个入职的员工
select top5xingming,zhiwu,gongzi from renwu order by gongzi
--显示到个入职的员工,not in(不包含)
select top3xingming,gongzi from renwu where bianhao not in
(select top3bianhao from renwu order by gongzi)order by gongzi
--删除重复记录
--创建表
create table xiaobiao
(
xbbh int,
xbxm varchar(10)
)
insert into xiaobiao values(1,'xb1')
insert into xiaobiao values(2,'xb2')
select*from xiaobiao
--执行删除
--这里的sb是临时表
select distinct*into lsb from xiaobiao
delete from xiaobiao
insert into xiaobiao select*from lsb
drop table lsb
--内连接与外连接
select a.xingming'姓名',b.xingming'上级'from renwu a,renwu b where a.shangji=b.paihang
--左外连接和右外连接,left join左边的全部显示出来,右边跟着左边来有的显示,没有显示null select a.xingming'姓名',b.xingming'上级'from renwu a left join renwu b on a.shangji=b.paihang --约束
--约束分为not null unique(唯一)primary Key(主键)foreign Key(外键)check
create table biao
(
dbbh int primary Key,
dbxm varchar(20)unique,
dbmm varchar(20)not null,
nianling int
)
select*from biao
insert into biao(dbxm,dbmm)values('贾宝玉','jiabaoyu')
insert into biao(dbxm,nianling)values('贾宝玉',20)
create table dabiao
(
dbbh int,
dbxm varchar(20)unique,
nianling int check(nianling>=20and nianling<=30)
)
select*from dabiao
insert into dabiao values(1,'贾宝玉',20)
--默认default
create table zhongbiao
(
dbbh int primary Key,
nianling int check(nianling>=20and nianling<=30)default25) select*from zhongbiao
insert into zhongbiao(dbbh)values(1001)
insert into zhongbiao values(1002,25)
insert into zhongbiao values(1003,20)
--备份数据库
backup database数据库名to disk='e:/数据库名.bak'
--还原数据库
restore database数据库名from disk='e:/数据库名.bak'
--附加和分离数据库
--分离数据库
exec sp_detach_db'MySchool'
--附加数据库
exec sp_attach_db@dbname='MySchool',
@filename1='e:\MyApp\MySchool.mdf',
@filename2='e:\MyApp\MySchool_log.ldf'
Binary类型:
常用SQL语句大全 一、基础 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、说明:几个高级查询运算词
精典的SQL语句ffice ffice" /> 1. 行列转换--普通 假设有张学生成绩表(CJ)如下 Name Subject Result 张三语文80 张三数学90 张三物理85 李四语文85 李四数学92 李四物理82 想变成 姓名语文数学物理 张三80 90 85 李四85 92 82 declare @sql var char(4000) set @sql = 'select Name' select @sql = @sql + ',sum(case Subject when '''+Subject+''' then Res ult end) ['+Subject+']' from (select distinct Subject from CJ) as a select @sql = @sql+' from test group by name' exec(@sql) 2. 行列转换--合并 有表A, id pid 1 1 1 2 1 3 2 1 2 2 3 1 如何化成表B BR>id pid 1 1,2,3 2 1,2 3 1 创建一个合并的函数 create function fmerg(@id int) returns var char(8000) as begin declare @str var char(8000) set @str=''
select @str=@str+','+cast(pid as var char) from 表A where id=@id se t @str=right(@str,len(@str)-1) return(@str) End go --调用自定义函数得到结果 select distinct id,dbo.fmerg(id) from 表A 3. 如何取得一个数据表的所有列名 方法如下:先从SYSTEMOBJECT系统表中取得数据表的SYSTEMID,然后再SYSCOL UMN表中取得该数据表的所有列名。 SQL语句如下: declare @objid int,@objname char(40) set @objname = 'tablename' select @objid = id from sysobjects where id = object_id(@objname) select 'Column_name' = name from syscolumns where id = @objid order b y colid 是不是太简单了?呵呵不过经常用阿. 4. 通过SQL语句来更改用户的密码 修改别人的,需要sysadmin role EXEC sp_password NULL, 'newpassword', 'User' 如果帐号为SA执行EXEC sp_password NULL, 'newpassword', sa 5. 怎么判断出一个表的哪些字段不允许为空? select COLUMN_NAME from INFORMATION_SCHEMA.COLUMNS where IS_NULLABLE= 'NO' and TABLE_NAME=tablename 6. 如何在数据库里找到含有相同字段的表? a. 查已知列名的情况 SELECT https://www.doczj.com/doc/c39741691.html, as TableName,https://www.doczj.com/doc/c39741691.html, as columnname From syscolumns a INNER JOIN sysobjects b ON a.id=b.id AND b.type='U' AND https://www.doczj.com/doc/c39741691.html,='你的字段名字' b. 未知列名查所有在不同表出现过的列名 Select https://www.doczj.com/doc/c39741691.html, As tablename,https://www.doczj.com/doc/c39741691.html, As columnname From syscolumns s1, sysobjects o Where s1.id = o.id And o.type = 'U' And Exists ( Select 1 From syscolumns s2 Where https://www.doczj.com/doc/c39741691.html, = https://www.doczj.com/doc/c39741691.html, And s1.id <> s2.id ) 7. 查询第xxx行数据 假设id是主键: select *
ORACLE常用SQL语句大全 一、基础 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 nul l],..) 根据已有的表创建新表: A:select * into table_new from table_old (使用旧表创建新表) B:create table tab_new as select col1,col2… from tab_old definition only<仅适用于Oracle> 5、说明:删除表 drop table tablename
6、说明:增加一个列,删除一个列 A:alter table tabname add column col type B:alter table tabname drop column colname 注:DB2DB2中列加上后数据类型也不能改变,唯一能改变的是增加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、使用外连接
SQL查询语句大全集锦 MYSQL查询语句大全集锦 一、简单查询 简单的Transact-SQL查询只包括选择列表、FROM子句和WHERE子句。它们分别说明所查询列、查询的 表或视图、以及搜索条件等。 例如,下面的语句查询testtable表中姓名为“张三”的nickname字段和email字段。 复制内容到剪贴板 代码:SELECT `nickname`,`email`FROM `testtable`WHERE `name`='张三' (一) 选择列表 选择列表(select_list)指出所查询列,它可以是一组列名列表、星号、表达式、变量(包括局部变量和全局变量)等构成。 1、选择所有列 例如,下面语句显示testtable表中所有列的数据: 复制内容到剪贴板 代码:SELECT * FROM testtable 2、选择部分列并指定它们的显示次序 查询结果集合中数据的排列顺序与选择列表中所指定的列名排列顺序相同。 例如: 复制内容到剪贴板 代码:SELECT nickname,email FROM testtable 3、更改列标题 在选择列表中,可重新指定列标题。定义格式为: 列标题=列名 列名列标题 如果指定的列标题不是标准的标识符格式时,应使用引号定界符,例如,下列语句使用汉字显示列 标题:
复制内容到剪贴板 代码:SELECT 昵称=nickname,电子邮件=email FROM testtable 4、删除重复行 SELECT语句中使用ALL或DISTINCT选项来显示表中符合条件的所有行或删除其中重复的数据行,默认 为ALL。使用DISTINCT选项时,对于所有重复的数据行在SELECT返回的结果集合中只保留一行。 5、限制返回的行数 使用TOP n [PERCENT]选项限制返回的数据行数,TOP n说明返回n行,而TOP n PERCENT时,说明n是 表示一百分数,指定返回的行数等于总行数的百分之几。 例如: 复制内容到剪贴板 代码:SELECT TOP 2 * FROM `testtable` 复制内容到剪贴板 代码:SELECT TOP 20 PERCENT * FROM `testtable` (二) FROM子句 FROM子句指定SELECT语句查询及与查询相关的表或视图。在FROM子句中最多可指定256个表或视图, 它们之间用逗号分隔。 在FROM子句同时指定多个表或视图时,如果选择列表中存在同名列,这时应使用对象名限定这些列 所属的表或视图。例如在usertable和citytable表中同时存在cityid列,在查询两个表中的cityid时应使用下面语句格式加以限定: 复制内容到剪贴板 代码:SELECT `username`,citytable.cityid FROM `usertable`,`citytable` WHERE usertable.cityid=citytable.cityid在FROM子句中可用以下两种格式为表或视图指定别名: 复制内容到剪贴板 代码:表名 as 别名 表名别名例如上面语句可用表的别名格式表示为: 复制内容到剪贴板
sql语言 库表的增删改查常用语及语法 (1)数据记录筛选: sql="select*from 数据表where 字段名=字段值orderby字段名[desc]" sql="select*from 数据表where 字段名like'%字段值%'orderby字段名[desc]" sql="selecttop10*from 数据表where 字段名orderby字段名[desc]" sql="select*from 数据表where 字段名in('值1','值2','值3')" sql="select*from 数据表where 字段名between 值1and 值2" (2)更新数据记录: sql="update 数据表set 字段名=字段值where 条件表达式" sql="update 数据表set 字段1=值1,字段2=值2……字段n=值nwhere条件表达式" (3)删除数据记录: sql="de letefrom数据表where 条件表达式" sql="de letefrom数据表"(将数据表所有记录删除) (4)添加数据记录: sql="insertinto数据表(字段1,字段2,字段3…)values(值1,值2,值3…)" sql="insertinto目标数据表select*from 源数据表"(把源数据表的记录添加到目标数据表) (5)数据记录统计函数: AVG(字段名)得出一个表格栏平均值 COUNT(*|字段名)对数据行数的统计或对某一栏有值的数据行数统计 MAX(字段名)取得一个表格栏最大的值 MIN(字段名)取得一个表格栏最小的值 SUM(字段名)把数据栏的值相加 引用以上函数的方法: sql="selectsum(字段名)as 别名from 数据表where 条件表达式" setrs=conn.excute(sql) 用rs("别名")获取统的计值,其它函数运用同上。 (6)数据表的建立和删除: CREATETABLE 数据表名称(字段1 类型1(长度),字段2 类型2(长度)……) 例:CREATETABLEtab01 (namevarchar (50), datetimedefaultnow ()) DROPTABLE 数据表名称(永久性删除一个数据表) 4.记录集对象的方法: rs.movenext将记录指针从当前的位置向下移一行 rs.moveprevious将记录指针从当前的位置向上移一行 rs.movefirst将记录指针移到数据表第一行 rs.movelast将记录指针移到数据表最后一行 rs.absoluteposition=N 将记录指针移到数据表第N 行 rs.absolutepage=N 将记录指针移到第N 页的第一行 rs.pagesize=N 设置每页为N 条记录 rs.pagecount根据pagesize的设置返回总页数 rs.recordcount返回记录总数 rs.bof返回记录指针是否超出数据表首端,true 表示是,false 为否
SQL 常用语句+举例 相关表: 1. distinct: 剔除重复记录 例:select distinct stroe_name from Store_information 结果: 2. And / or: 并且/或 例:在表中选出所有sales 高于$1000或是sales 在$275及$500之间的记录 Select store_name ,sales from Store_information Where sales>1000 Or (sales>275 and sales <500) 3. 例:在表中查找store_name 包含 Los Angeles 或San Diego 的记录 Select * from Store_information where store_name in (‘Los Angeles ’,’San Diego ’) 结果: 4. Between : 可以运用一个范围抓出表中的值
与in 的区别:in 依照一个或数个不连续的值的限制抓出表中的值 例:查找表中介于Jan-06-1999 及Jan-10-1999 中的记录 Select * from Store_information where date between ‘Jan-06-1999’ and ‘Jan-10-1999’ 结果: 5. Like : 让我们依据一个套式来找出我们要的记录 套式通常包含: ’A_Z ’: 所有以A 开头,中间包含一个字符,以Z 结尾的字串 ’ABC%’: 所有以ABC 起头的字串 ’%XYZ ’: 所有以XYZ 结尾的字串 ’%AN%’: 所有包含AN 的字串 例:Select * from Store_information where store_name like ‘%An%’ 结果: 6. Order by: 排序,通常与ASC (从小到大,升序)、DESC (从大到小,降序)结合使用 当排序字段不止一个时,先依据字段1排序,当字段1有几个值相同时,再依据字段2排序 例:表中sales 由大到小列出Store_information 的所有记录 Select Store_name, sales,date from Store_information order by sales desc 结果: 7. 函数:AVG (平均值)、COUNT (计数)、MAX (最大值)、MIN (最小值)、SUM(求和) 语句:select 函数名(字段名) from 表名 例:求出sales 的总和 Select sum(sales) from Store_information 结果 8. COUNT (计数) 例:找出Store_information 表中 有几个store_name 值不是空的记录
一、基础 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
表操作 例1 对于表的教学管理数据库中的表STUDENTS,可以定义如下:CREATE TABLE STUDENTS, ( SNO NUMERIC (6, 0) NOT NULL, SNAME CHAR (8) NOT NULL, AGE NUMERIC(3,0), SEX CHAR(2), BPLACE CHAR(20), PRIMARY KEY(SNO) ) 例2 对于表的教学管理数据库中的表ENROLLS,可以定义如下:CREATE TABLE ENROLLS ( SNO NUMERIC(6,0) NOT NULL, CNO CHAR(4) NOT NULL, GRADE INT, PRIMARY KEY(SNO,CNO), FOREIGN KEY(SNO) REFERENCES STUDENTS(SNO), FOREIGN KEY(CNO) REFERENCES COURSES(CNO), CHECK ((GRADE IS NULL) OR (GRADE BETWEEN 0 AND 100)) ) 例3 根据表的STUDENTS 表,建立一个只包含学号、姓名、年龄的女学生表。CREATE TABLE GIRL AS SELECT SNO, SNAME, AGE FROM STUDENTS WHERE SEX='女'; 例4 删除教师表TEACHER。 DROP TABLE TEACHER 例5 在教师表中增加住址列。 ALTER TABLE TEACHERS ADD (ADDR CHAR(50))
例6 把STUDENTS表中的BPLACE列删除,并且把引用BPLACE列的所有视图和约束也一起删除。 ALTER TABLE STUDENTS DROP BPLACE CASCADE 例7 补充定义ENROLLS表的主关键字。 ALTER TABLE ENROLLS ADD PRIMARY KEY (SNO,CNO); 视图操作(虚表) 例9 建立一个只包括教师号、姓名和年龄的视图FACULTY。(在视图定义中不能包含ORDER BY子句) CREATE VIEW FACULTY AS SELECT TNO, TNAME, AGE FROM TEACHERS 例10 从学生表、课程表和选课表中产生一个视图GRADE_TABLE,它包括学生姓名、课程名和成绩。 CREATE VIEW GRADE_TABLE AS SELECT SNAME,CNAME,GRADE FROM STUDENTS,COURSES,ENROLLS WHERE STUDENTS.SNO=ENROLLS.SNO AND https://www.doczj.com/doc/c39741691.html,O=https://www.doczj.com/doc/c39741691.html,O 例11 删除视图GRADE_TABLE DROP VIEW GRADE_TABLE RESTRICT 索引操作 例12 在学生表中按学号建立索引。 CREATE UNIQUE INDEX ST ON STUDENTS (SNO,ASC) 例13 删除按学号所建立的索引。 DROP INDEX ST 数据库模式操作 例14 创建一个简易教学数据库的数据库模式TEACHING_DB,属主为ZHANG。 CREATE SCHEMA TEACHING_DB AUTHRIZATION ZHANG 例15 删除简易教学数据库模式TEACHING_DB。((1)选用CASCADE,即当删除数据库模式时,则本数据库模式和其下属的基本表、视图、索引等全
数据库基本SQL语句大全 数据库基本----SQL语句大全 一、基础 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 范围
SQL语句实例 表操作 例 1 对于表的教学管理数据库中的表STUDENTS ,可以定义如下:CREATE TABLE STUDENTS (SNO NUMERIC (6, 0) NOT NULL SNAME CHAR (8) NOT NULL AGE NUMERIC(3,0) SEX CHAR(2) BPLACE CHAR(20) PRIMARY KEY(SNO)) 例 2 对于表的教学管理数据库中的表ENROLLS ,可以定义如下: CREATE TABLE ENROLLS (SNO NUMERIC(6,0) NOT NULL CNO CHAR(4) NOT NULL GRADE INT PRIMARY KEY(SNO,CNO) FOREIGN KEY(SNO) REFERENCES STUDENTS(SNO) FOREIGN KEY(CNO) REFERENCES COURSES(CNO) CHECK ((GRADE IS NULL) OR (GRADE BETWEEN 0 AND 100))) 例 3 根据表的STUDENTS 表,建立一个只包含学号、姓名、年龄的女学生表。 CREATE TABLE GIRL
AS SELECT SNO, SNAME, AGE FROM STUDENTS WHERE SEX=' 女'; 例 4 删除教师表TEACHER 。 DROP TABLE TEACHER 例 5 在教师表中增加住址列。 ALTER TABLE TEACHERS ADD (ADDR CHAR(50)) 例 6 把STUDENTS 表中的BPLACE 列删除,并且把引用BPLACE 列的所有视图和约束也一起删除。 ALTER TABLE STUDENTS DROP BPLACE CASCADE 例7 补充定义ENROLLS 表的主关键字。 ALTER TABLE ENROLLS ADD PRIMARY KEY (SNO,CNO) ; 视图操作(虚表) 例9 建立一个只包括教师号、姓名和年龄的视图FACULTY 。( 在视图定义中不能包含ORDER BY 子句) CREATE VIEW FACULTY AS SELECT TNO, TNAME, AGE FROM TEACHERS 例10 从学生表、课程表和选课表中产生一个视图GRADE_TABLE ,它包括学生姓名、课程名和成绩。 CREATE VIEW GRADE_TABLE AS SELECT SNAME,CNAME,GRADE FROM STUDENTS,COURSES,ENROLLS WHERE STUDENTS.SNO =ENROLLS.SNO AND https://www.doczj.com/doc/c39741691.html,O=https://www.doczj.com/doc/c39741691.html,O 例11 删除视图GRADE_TABLE DROP VIEW GRADE_TABLE RESTRICT 索引操作 例12 在学生表中按学号建立索引。 CREATE UNIQUE INDEX ST ON STUDENTS (SNO,ASC) 例13 删除按学号所建立的索引。 DROP INDEX ST 数据库模式操作
Student(S#,Sname,Sage,Ssex) 学生表 Course(C#,Cname,T#) 课程表 SC(S#,C#,score) 成绩表 Teacher(T#,Tname) 教师表 create table Student(S# varchar(20),Sname varchar(10),Sage int,Ssex varchar(2)) 前面加一列序号: if exists(select table_name from information_schema.tables where table_name='Temp_Table') drop table Temp_Table go select 排名=identity(int,1,1),* INTO Temp_Table from Student go select * from Temp_Table go drop database [ ] --删除空的没有名字的数据库 问题: 1、查询“”课程比“”课程成绩高的所有学生的学号; select a.S# from (select s#,score from SC where C#='001') a,(select s#,score from SC where C#='002') b where a.score>b.score and a.s#=b.s#; 2、查询平均成绩大于分的同学的学号和平均成绩; select S#,avg(score) from sc group by S# having avg(score) >60; 3、查询所有同学的学号、姓名、选课数、总成绩; select Student.S#,Student.Sname,count(SC.C#),sum(score) from Student left Outer join SC on Student.S#=SC.S# group by Student.S#,Sname 4、查询姓“李”的老师的个数; select count(distinct(Tname)) from Teacher where Tname like '李%'; 5、查询没学过“叶平”老师课的同学的学号、姓名; select Student.S#,Student.Sname from Student
数据库经典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:mssql7backupMyNwind_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、说明: 删除新表: 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 注:索引是不可更改的,想更改必须删除重新建。
数据库基本_SQL语句大全 学会数据库是很实用D~~记录一些常用的sql语句...有入门有提高有见都没见过的...好全...收藏下... 其实一般用的就是查询,插入,删除等语句而已....但学学存储过程是好事...以后数据方面的东西就不用在程序里搞喽..而且程序与数据库只要一个来回通讯就可以搞定所有数据的操作.... 一、基础 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 范围
一个项目涉及到的50个Sql语句(整理版) --1.学生表 Student(S,Sname,Sage,Ssex) --S 学生编号,Sname 学生姓名,Sage 出生年月,Ssex 学生性别--2.课程表 Course(C,Cname,T) --C --课程编号,Cname 课程名称,T 教师编号 --3.教师表 Teacher(T,Tname) --T 教师编号,Tname 教师姓名 --4.成绩表 SC(S,C,score) --S 学生编号,C 课程编号,score 分数 */ --创建测试数据 create table Student(S varchar(10),Sname nvarchar(10),Sage datetime,Ssex nvarchar(10)) insert into Student values('01' , N'赵雷' , '1990-01-01' , N'男') insert into Student values('02' , N'钱电' , '1990-12-21' , N'男') insert into Student values('03' , N'孙风' , '1990-05-20' , N'男') insert into Student values('04' , N'李云' , '1990-08-06' , N'男') insert into Student values('05' , N'周梅' , '1991-12-01' , N'女') insert into Student values('06' , N'吴兰' , '1992-03-01' , N'女') insert into Student values('07' , N'郑竹' , '1989-07-01' , N'女') insert into Student values('08' , N'王菊' , '1990-01-20' , N'女') create table Course(C varchar(10),Cname nvarchar(10),T varchar(10)) insert into Course values('01' , N'语文' , '02') insert into Course values('02' , N'数学' , '01') insert into Course values('03' , N'英语' , '03') create table Teacher(T varchar(10),Tname nvarchar(10)) insert into Teacher values('01' , N'张三') insert into Teacher values('02' , N'李四') insert into Teacher values('03' , N'王五') create table SC(S varchar(10),C varchar(10),score decimal(18,1)) insert into SC values('01' , '01' , 80) insert into SC values('01' , '02' , 90) insert into SC values('01' , '03' , 99) insert into SC values('02' , '01' , 70) insert into SC values('02' , '02' , 60) insert into SC values('02' , '03' , 80) insert into SC values('03' , '01' , 80) insert into SC values('03' , '02' , 80) insert into SC values('03' , '03' , 80) insert into SC values('04' , '01' , 50) insert into SC values('04' , '02' , 30) insert into SC values('04' , '03' , 20) insert into SC values('05' , '01' , 76) insert into SC values('05' , '02' , 87)