SQL server 基本语句

--查询数据库是否存在

if exists ( select * from sysdatabases where [name]='TestDB')

print 'Yes, the DB exists'

else

print 'No, need a new one?'

 

--新建一个数据库

create database TestDB on

(

    name = 'TestData',

    filename = 'G:\DBS\KeyTest.mdf',

    size = 3,

    filegrowth = 2

)

log on

(

    name = 'TestLog',

    filename = 'G:\DBS\KeyTest.ldf',

    size = 3,

    filegrowth = 10

)

 

--drop database TestDB

 

use TestDB

go

 

--新建一个表

create table [Scores]

(

    [ID] int identity(1,1) primary key,

    [Student] varchar(20) ,

    [Subject] varchar(30),

    [Score] float

)

 

--drop table [Scores]

 

--修改表中的一列

alter table Scores alter column [Student] varchar(20) not null

 

--新增一列

alter table Scores add Birthday datetime 

 

--删除一列

alter table Scores drop column Birthday

 

--往表中插入单条数据,方法:带列名

insert into Scores(Student,Subject,Score)

values('张三','语文','90')

 

--往表中插入单条数据,方法:不带列名,但要求值的类型要和列字段类型对应

insert into Scores

values('张三','英语','95')

 

--插入多条数据:用union或者union all

insert into Scores(Student,Subject,Score)

select '李四','语文','89'

union all

select '李四','英语','78'

 

--删除表中数据,没有条件时,删除所有

delete from Scores where ID in(7,8)

 

--修改表中数据

update Scores 

set Student='王五',Score='94'

where ID=10

 

--查看数据

select * from Scores

 

--查看表中最大的identity值

select @@identity

 

--查找两个表中列的值是否相同,相同则不显示,不相同的则查出结果

select * from B_PowerStation a where not exists(select * from B_PowerPile b where a.ID=b.ID)

 

--或者利用dbcc命令查看表中最大的identity值

dbcc checkident('Scores',noreseed)

 

--创建视图,全部省略视图的属性列名,由子查询目标列的字段组成

create view StudentView

as

select Student,Subject,Score

from Scores

 

--加上with check option,以后对视图的操作(增,改,删,查)都会自动加上where ID>3

/*

create view StudentView

as

select Student,Subject,Score

from Scores

where ID>3

with check option

*/

 

--创建视图,全部定义属性列名,需要定义列名的情况:

----某个目标列(子查询)不是单纯的属性列,而是聚集函数或列表达式

----多表连接时选出了几个同名列

----需要在视图中为某个列启用新的更合适的名字

create view IS_Student(Student,Subject,MaxScore)

as

select Student,Subject,Score

from Scores

where Score=(select max(Score) from Scores)

 

 

--查询视图,和基本表完全样,只不过如果视图中有with check option,会自动加上那个条件

select * 

from StudentView

 

--查询自定义列名的视图

select * 

from IS_Student

 

--对视图的insert/delete/update,和对基本表的操作一样,并且最终都是用RDBMS自动转换为对基本表的更新

--并不是所有的视图都是可更新的,因为有些视图的更新不能有意义的转换成对相应基本表的更新

 

--删除视图

drop view StudentView

 

1.  SQL常用命令使用方法:

(1)数据记录筛选:

select*from Products:查询出Products表里面的所有信息

select ProductID,ProductName from Products:查询出Products表里面所有ProductID,ProductName

select ProductID,ProductName from Products where ProductID=1:查询出Products表里ProductID=1的所有ProductID和ProductName

select* from employee where fname='Paul' and job_id=5 :查询出employee表中fname=Paul,并且job_id=5的所有记录

select*from Products where ProductID in(4,5,6):查询出Products表中ProductID为,5,6的所有信息

select*from Products where UnitPrice>10 and UnitPrice<30 order by UnitPrice:查询出Products表中<UnitPrice<30的所有信息,并按照UnitPrice的大小由小到大排序

select*from Products where UnitPrice between 10 and 30 order by UnitPrice:上面的另外一种写法

select * from Employees where FirstName like 'A%':查询出Employees中FirstName里面第一个字母是A的所有人信息

select*from Employees where FirstName like '%A%':查询出Employees中FirstName里面中间有A的所有人信息

select*from Employees where FirstName like '%A':查询出Employees中FirstName里面最后一个字母是A的所有人信息

select count(*) from Employees:查询出Employees表中的所有记录数

select min(Unitprice)from Products:查询出Products表中Unitprice的最小值

select max(Unitprice)from Products:查询出Products表中Unitprice的最大值

select avg(Unitprice)from Products:查询出Products表中Unitprice的平均值

select sum(Unitprice)from Products:查询出Products表中Unitprice的总和

select * from Products where Unitprice> (select avg(Unitprice) from Products):有子查询,查找出比平均值高的商品信息

select top 5* from Products:查询出前五条的记录信息

select distinct [name] from Category :查出Category 中不重复的name

select count(distinct name) from Category :查出Category 中不重复的name的数量

 

(2) 更新数据记录:

sql="update 数据表set 字段名=字段值where 条件表达式"

sql="update 数据表set 字段=值,字段=值……字段n=值n where 条件表达式"

 

(3) 删除数据记录:

sql="delete from 数据表where 条件表达式"

sql="delete from 数据表" (将数据表所有记录删除)

 

(4) 添加数据记录:

sql="insert into 数据表(字段,字段,字段…) values (值,值,值…)"

sql="insert into 目标数据表select 字段名from 源数据表" (把源数据表的记录添加到目标数据表)

 

(5) 数据记录统计函数:

AVG(字段名) 得出一个表格栏平均值

COUNT(*&brvbar;字段名) 对数据行数的统计或对某一栏有值的数据行数统计

MAX(字段名) 取得一个表格栏最大的值

MIN(字段名) 取得一个表格栏最小的值

SUM(字段名) 把数据栏的值相加

引用以上函数的方法:

sql="select sum(字段名) as 别名from 数据表where 条件表达式"

set rs=conn.excute(sql)

用 rs("别名") 获取统的计值,其它函数运用同上。

 

(6) 数据表的建立和删除:

CREATE TABLE 数据表名称(字段 类型(长度),字段 类型(长度) …… )

例:CREATE TABLE tab01(name varchar(50),datetime default now())

DROP TABLE 数据表名称 (永久性删除一个数据表)

 

2. 记录集对象的方法:

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为否

rs.eof 返回记录指针是否超出数据表末端,true表示是,false为否

rs.delete 删除当前记录,但记录指针不会向下移动

rs.addnew 添加记录到数据表末端

rs.update 更新数据表记录

 

3.  排序

desc就是用于查询出结果时候对结果进行排序,是降序排序,而asc就是升序。。要用与order by一起用。 

例如select * from student order by id desc; 就是把选出的结果经过“按id从大到小排序”后,把资源返回。

还可以select * from student order  by age desc,id desc;用“,”号隔开多个排序条件,这样,先按age 再按 id,就是说,先按age从大到小排序,如果有相同年龄的,那么相同年龄的学生再按他们的id从大到小排序。

DESC指排序时按降序排序ASC是升序。

 

约束篇:

1.主键约束:

要对一个列加主键约束的话,这列就必须要满足的条件就是分空

因为主键约束:就是对一个列进行了约束,约束为(非空、不重复)

以下是代码   要对一个列加主键,列名为id,表名为emp

格式为:

alter table 表格名称 add constraint 约束名称 增加的约束类型 (列名)

例子:

alter table emp add constraint ppp primary key (id)

2.check约束:

就是给一列的数据进行了限制

比方说,年龄列的数据都要大于的

表名(emp) 列名(age)

格式:

alter table 表名称 add constraint 约束名称 增加的约束类型 (列名)

例子:

alter table emp add constraint xxx check(age>20)

3.unique约束:

这样的约束就是给列的数据追加的不重复的约束类型

格式:

alter table 表名 add constraint 约束名称 约束类型(列名)

比方说可以给ename列加个unique,让ename列的数据不重复

例子:

alter table emp add constraint qwe unique(ename)

4.默认约束:

意思很简单就是让此列的数据默认为一定的数据

格式:

alter table 表名称 add constraint 约束名称 约束类型 默认值) for 列名

比方说:emp表中的gongzi列默认为

alter table emp add constraint jfsd default 10000 for gongzi

5.外键约束:

这个有点难理解了,外键其实就是引用

因为主键实现了实体的完整性,

外键实现了引用的完整性,

应用完整性规定,所引用的数据必须存在!

其实就是个引用,

比方说一个表名称叫dept 里面有列数据 一列是ID一列是ENAME

id:表示产品的编号

ename:表示产品的名称

另外一个表格名称是emp 里面有列数据,一列是ID 一列是DID

id:表示用户号

did:表示购买的产品号

要让emp表中的did列去引用dept表中的id

可以用下面的方法

格式:

alter table 表名 add constraint 约束名称 约束类型 (列名) references 被引用的表名称(列名)

例子:

alter table emp add constraint jfkdsj foreign key (did) references dept (id)

 

修改约束

 

 

转载于:https://www.cnblogs.com/Mzg121584668/p/7081041.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.tpcf.cn/news/455343.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

pythonselenium模拟登陆爬取信息_python3 使用selenium模拟登陆天眼查抓取数据

由于之前用Scrapy 抓了一些公司的名称&#xff0c;但是没有准确的联系方式&#xff0c;所以就自己就学习了一下使用selenium自动化工具&#xff0c;速度比较慢&#xff0c;网上也有很多这方面的代码&#xff0c;但是大部分的网页解析部分都出错了&#xff0c;可能是这种网站定时…

mp4格式

下面的软件下载地址&#xff1a;http://download.csdn.net/source/2607382 ftyp: 这是一个筐&#xff0c;可以装mdat等其他Box。 例&#xff1a;00 00 00 14 66 74 79 70 69 73 6F 6D 00 00 02 00 6D 70 34 31 语义为&#xff1a;ftyp: Major brand: isom Minor version: 5…

PyQt5案例汇总(简洁版)

01菜单栏 import sys from PyQt5.QtWidgets import QMainWindow, QAction, qApp, QApplication from PyQt5.QtGui import QIconclass Example(QMainWindow):def __init__(self):super().__init__()self.initUI()def initUI(self):exitAct QAction(QIcon(exit.png), &Exit,…

个人关于浮动的理解

浮动带来的影响&#xff1a; ①. 能够让浮动之后的元素布局产生混乱 &#xff08;元素浮动后脱离了标准文档流&#xff0c;它的布局也就不再遵循标准文档流的规则&#xff0c;多个浮动元素在一起的时候就会随着窗口的变化而变化&#xff0c;也就失去了稳定的布局&#xff09; ②…

接口测试 rest-assured 使用指南

转载&#xff1a;https://testerhome.com/topics/7060 原文&#xff1a;https://github.com/rest-assured/rest-assured/wiki/Usage本文github地址&#xff1a;https://github.com/RookieTester/rest-assured-doc 注意&#xff0c;如果您正在使用1.9.0或者更早的版本请参考旧文…

python中格式化字符串的作用_python中字符串格式化的意义(化妆)

格式 描述%%百分号标记 #就是输出一个%%c字符及其ASCII码%s字符串%d有符号整数(十进制)%u无符号整数(十进制)%o无符号整数(八进制)%x无符号整数(十六进制)%X无符号整数(十六进制大写字符)%e浮点数字(科学计数法)%E浮点数字(科学计数法&#xff0c;用E代替e)%f浮点数字(用小数点…

MongoDB的快速手动安装

就是关于MongoDB主从库的安装配置和启动。网上关于MongoDB的安装有大量的文章供大家学习。我这里提供一个Windows环境下MongoDB主从库的快速手动安装的方法&#xff0c;只需要三步即可。 先下载的安装包&#xff0c;解压缩后找到bin文件夹&#xff0c;将bin文件夹拷贝至你自己的…

MP4音频解码信息

文章转载自&#xff1a;http://blog.csdn.net/flyingqr/archive/2010/02/02/5282600.aspx 版权归原作者&#xff0c;编辑&#xff1a;小乙哥 MP4文件格式分为头部和数据两部分&#xff0c;头部是由许多被称作Atom的结构单元嵌套或排列而成&#xff0c;数据部分则完全为实际数据…

时序图 分支_UML用例图

UML用例图用例图有以下东东:用例参与者关联系统边界用例使用椭圆来表示&#xff0c;椭圆里边写上用例的名称:这里的用例可以理解为一个动作或行为,或者一个对象。参与者用一个小人儿,在小人儿下面写上参与者名称,例如学生:关联用一条线表示:把很多个用例放到一个大的矩形框里。…

Python脚本实现汉子转拼音

起步 中华文化博大精深&#xff0c;是中华民族的财富&#xff0c;吸收和继承发扬中 华文化&#xff0c;是现代每个炎黄子孙无可推卸的天职。 今天小编就交大家用python写一个脚本,实现汉子和拼音之间的转换 pinyin.py 汉字转拼音,With Python Example: from pinyin impor…

MySQL innodb_table_stats表不存在的解决方法

在做实验时&#xff0c;使用mysqldump命令报错[rootlinux-mysql02 3306]# mysqldump -uroot -p123456 -S /u02/data/3306/mysql.sock -A -B --events | gzip > /opt/rep.sql.gzmysqldump: Got error: 1146: Table mysql.innodb_index_stats doesnt exist when using LOCK TA…

自定义封装 banner 组件

1. 效果图预览 2.基本功能 一个简单方便的轮播图组件&#xff0c;基于viewpager 基础上进行的封装。可设置 项目中图片&#xff0c;网络图片&#xff0c; View&#xff1b;支持循环自动播放&#xff0c;手势滑动切换&#xff0c;item点击事件,可设置 点点的样式宽高、颜色、大小…

vb.net服务器启动后cpu占用了70_记一次服务器被异常程序占用的解决过程(怀疑黑客攻击)...

最近在跑实验&#xff0c;但是突然发现程序运行变慢&#xff0c;然后top命令查看程序运行情况&#xff0c;发现有异常进程&#xff0c;名字叫 bash&#xff0c;占用 2400% CPU计算资源。刚开始怀疑是挖矿程序&#xff0c;因实验室网络IP为教育网公网&#xff0c;怀疑被攻击&…

3gp文件格式研究 (转windcao的专栏)

序言 06我开始做3gp文件的播放器,但是关于3gp的文档太少了也很难找,在网友luxh的帮助下,我终于有了第一份关于3gp文件格式的文档《ISO/IEC 14496-12&#xff0c;ISO媒体文件格式》.在此真心感谢luxh的贡献.当然了是英文版的,有文档就不错了.为了便于查阅和理解,我把之后陆续找…

Android开发必用工具及其进阶途径

三百六十行&#xff0c;行行出状元&#xff0c;怎么样才能在Android行业中当个状元了&#xff0c;开发过程中的高效、自我能力的提升显得至关重要&#xff0c;步入IT行业更是要时时刻刻学习&#xff0c;新技术更新快&#xff0c;今天将介绍一下Android开发中必用工具及其进阶途…

MySQL遇到check the manual that corresponds to your MySQL server version for the right syntax错误

原来是MySQL表中不能包含关键字 转载于:https://www.cnblogs.com/flycoding/p/7088465.html

Python脚本实现图片加水印

起步 图片是指由图形、图像等构成的平面媒体,有形式的事物&#xff0c;我们看到的&#xff0c;是图画、照片、拓片等的统称。 为了保护一些原创图片的版权,某些时候我们需要在图片上面,加上水印,当然你可以用Photoshop来做,只不过如果图片数量过多,亦或者图片的动态生成的时候…

yarn 怎么查看有多个job在跑_flink on yarn 模式下提示yarn资源不足问题分析

背景在实时计算平台上通过YarnClient向yarn上提交flink任务时一直卡在那里&#xff0c;并在client端一直输出如下日志&#xff1a;(YarnClusterDescriptor.java:1036)- Deployment took more than 60 seconds. Please check if the requested resources are available in the Y…

MPEG-2TS码流编辑的原理及其应用(转载

[作者&#xff1a;辽宁电视台 赵季伟] 在当今数字媒体不断发展、新媒体业务不断涌现 的前提下&#xff0c;实践证明襁褓中的新媒体只有两种经营方略可供选择&#xff1a;或是购买并集成整套节目&#xff0c;或是低成本深加工新节目&#xff0c;再不可能去按照传统生产模式…

Python中的yield详解

阅读别人的python源码时碰到了这个yield这个关键字&#xff0c;各种搜索终于搞懂了&#xff0c;在此做一下总结&#xff1a; 通常的for…in…循环中&#xff0c;in后面是一个数组&#xff0c;这个数组就是一个可迭代对象&#xff0c;类似的还有链表&#xff0c;字符串&#xf…