关系数据库(MySQL\Sqlserver\Oracle)
1.server management studio 是 SQL server的可视化管理工具。
2.在实例中---》安全性---》登录名---》sa----》属性下,修改密码为空,登录不需要密码。
3.我们通常说的数据库是数据。sql server中,数据库由文件和文件组组成。数据库中的所有数据和对象都存储在文件中。文件有主要文件(.mdf),次要文件(.ndf),事务日志文件(.ldf)
4.创建数据库:
create database mrkj
on
(
name=mrdat,
filename="G:\sql\mrkj.mdf",
size=10,
maxsize=100,
filegrowth=5
)
5. 在关系型数据库中,要体现完整性约束,有一个外键约束,定义为“当一个表中的某列是另外一个表中的主键时,那么这两个表就有了关系,这个列就是第二个表的外键”。这里要说明的是,两个表或者多个表的关系有三种“一对一”,一对多,多对多的关系。所创建的关系类型取决于相关联的列是如何定义的。关于列与列进行关联,我们在操作中,就是通过设置关系中主外键进行关联。所以外键约束本质就是关系的创建或者维护,个人理解,实际就是纯理论而已。
6.用户定义的局部变量用@
eg: declare @coursename varchar(20)
select @coursename=cname from course where cname="计算机网络"
print @coursename
7.@@ 全局变量,系统内部事先定义好的变量
8.流程控制语句
1)return,return 1-14 都有返回的内定值
2)goto命令用来改变程序执行的流程
3)waitfor指定时间用的,常用delay设定等待时间,time设置等待结束的时间点
9.备份还原:backup和restore(SQL SERVER)
backup database db_test to disk="backup.bak"
restore database db_test from disk="backup.bak" with replace
10. 数学函数
1) ABS(绝对值函数): select ABS(1), ABS(0),ABS(-1) 输出:1,0,1
2)PI(圆周率): select PI() as pi
3) power(乘方):select power(2,2),power(2,3),power(2,4)
4) rand(0~1的随机数):select rand(100) 返回的是0到1的随机数,100表示随意的种子数
5)round(四舍五入)函数:select round(123.9994,3),round(123.4235,3)=123.9990,123.4240
11.日期函数:getdate(当前系统日期)
12.当对视图中的数据进行修改时,相应的基表数据也被修改;若基表的数据被修改,视图中的对应数据也会自动修改
13.复制表:select * into b from a where 1<>1 (或者1=2,拷贝结构) (where1=1,拷贝表结构和数据内容)
insert into b(a, b, c) select d,e,f from a; (拷贝数据)
14.日程安排提前五分钟提醒
SQL: select * from 日程安排 where datediff('minute', 开始时间 , getdate())>5
15.两张关联表,删除主表中已经在副表中没有的信息
Delete from info where not exists (select * from infobz where info.infid=infobz.infid )
16. select courseid, coursename ,score ,decode(sign(score-60),-1,'fail','pass') as mark from course(oracle中pl/sql用法,decode相当于if then ; sign用于两个数的比较(score-60)=-1,则为fail,否则为pass)
(SQL: select courseid, coursename ,score ,(case when score<60 then 'fail' else 'pass' end) as mark from course )
17.索引:一个表的存储由两部分组成:数据页、索引页。相对于数据页,索引页相对较小,我们在数据检索的时候,首先找到索引页面,从中找到所需的指针,然后通过指针找到数据页,读取数据,提高查询速度。索引有聚集索引和非聚集索引,一般表都有且仅有唯一的一个聚集索引,非聚集索引可以有多个。
18.mysql数据库的备份与恢复:
1)为什么要备份与还原?
备份的角度:保护数据记录,用于大数据分析等
还原的角度:被盗,误操作等。
2)数据备份
(1)数据表备份:直接进入到数据库文件夹中,进行数据文件的拷贝。(适用于存储引擎是myisam。mysql数据库有很多存储引擎,但是最常用的就是myisam和innodb引擎,因为这两个是开源免费的)
存储引擎的概念:mysql进行数据存储的方式。
innodb引擎:只有表结构,数据全部在ibdata文件中。所以不能直接拷贝,不适用于数据表备份。
myisam引擎:表(.frm)、索引(.myi)、数据(.myd)都是独立的文件,分开的,直接拷贝是可以的,适用于数据表备份。
( 2 ) 单表数据备份:每次只能备份一张表,且只能备份数据。(表结构不能备份)通常的使用:将表中的数据进行导出到文件。
备份:select * into outfile 'd:/server/temp/student.txt' from 表名
还原:load data infile 'd:/server/temp/student.txt' into table 表名
( 3 ) sql备份: 备份的是sql语句,系统会对表结构以及数据进行处理,变成相应的sql语句,然后进行备份,还原的时候只要执行sql指令即可。
mysql没有提供备份的指令,需要利用mysql提供的软件,mysqldump.exe。此软件也是一种客户端,需要操作服务器:必须直接认证。
语法:mysqldump -hPup 数据库名 表名1,表名2>外部文件目录
sql还原数据:
1. mysql -hPup 数据库名字< 备份文件目录
2.source D:/server/temp/studnet.sql(备份文件目录)
(4)增量备份:不是针对数据或者sql指令进行备份;是针对mysql服务器的日志文件进行备份。增量备份:指定时间段开始进行备份,备份数据不会重复,而且所有的操作都会备份。(大项目都用增量备份)
19.SQL Server中对象命名规则:
第一种:server.database.owner_name.object_name
第二种:database.owner_name.object_name
第三种:server..owner_name.object_name
第四种:server...object_name
第五种:database..object_name
第六种:object_name
20.Bcp命令用法
实例:这里我们以AdventureWorks样例数据库为例进行实验
1.将表中数据导出到一个文件中(使用可信链接)
bcp AdventureWorks.Sales.Currency out c:\Currency.dat -T -c
上面的参数 out 表示输出文件,c:\Currency.dat是文件名和路径,-T表示可信连接。-c表示以字符形式输出,如果使用-w(宽字符)的话,输出内容相同,但是输出文件的大小将增加一倍。如果你要将导出的Currency.dat文件导入到非sql server数据库中,那么使用-w比较好。
2.将表中数据导出到一个文件中(使用混合模式身份验证)
bcp AdventureWorks.Sales.Currency out c:\Currency.dat -c -Usa -P123456 -s.
这个数据导出语句与前面的不同之处是,前面使用可信连接,也就是windows验证,不需要输入用户名和密码。而此时使用的是sql server 验证方式,所以得输入sql server数据库用户名与密码。这里-S表示要连接的数据源,我这里-S.表示连接本地的默认实例,如果不加-S这个参数也会连接到默认实例中,如果要连接命名实例的话,可以使用参数:-S<server_name\instance_name>.
3.将文件中的数据导入到表中
bcp AdventureWorks.Sales.Currency2 in c:\Currency.date -T -c
如果你要使用bcp导入数据,那么必须有表结构,上述导出是没有表结构的,需要提前建立表结构:
select * into AdventureWorks.Sales.Currency2 from AdventureWorks.Sales.Currency where 1=2
4.如果要根据某种条件来导出数据的话,可以使用queryout关键字
bcp "SELECT Name FROM AdventureWorks.Sales.Currency" queryout c:\Currency.Name.dat -T -c
5.bcp本身就可应用于大数据量的批量导入,不过他是命令行形式,如果要使用sql命令进行大数据量的批量导入,可以使用bulk insert。
bulk insert csdn1
from 'D:\www.csdn.net.sql'
with(N
--FORMATFILE = 'C:\BCPFORMAT.xml',
--FirstRow --default 1
--KEEPIDENTITY,
fieldterminator = ' # ',
rowterminator = '\n'
) 其中fieldterminator = ' # ',表示列分隔符,rowterminator = '\n'表示行分隔符。
21.限制结果
sql server: select top 5 prod_name from Products;
oracle: select prod_name from Products where ROWSUM<=5;
mysql: select prod_name from Products limit 5;
22.NOT操作符
select prod_name from Products where not vend_id = 'DLL01' ORDER BY prod_name;(打印除了DLL01之外的所有)
23.方括号【】通配符
找到所有名字是J或者M开头的联系人
select cust_conderct from Customers where cust_contact like '[JM]%' order by cust_contact;

浙公网安备 33010602011771号