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的所有ProductIDProductName

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%'查询出EmployeesFirstName里面第一个字母是A的所有人信息

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

select*from Employees where FirstName like '%A'查询出EmployeesFirstName里面最后一个字母是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列加个uniqueename列的数据不重复

例子

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.mzph.cn/news/455343.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈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…