关系数据库(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;







  




posted @ 2020-12-03 22:40  小熊尤里  阅读(446)  评论(0)    收藏  举报