SQL server相关代码

    技术2022-07-11  93

    /*数据库建立*/ create database testbd1 on primary( name = 'testbd1_dat', filename='D:\data\testbd1.mdf', size=10MB, maxsize=50MB, filegrowth=5MB )

    log on ( name='testbd1_log', filename='D:\data\testbd1log.ldf', size=5MB, maxsize=25MB, filegrowth=5MB );

    /*更改数据库的名称*/ alter database tesebd1 modify name=testbd2;

    /*更改数据库的文件的属性*/ alter database 数据库名 modify file( name=我是傻差 , size=10MB, maxsize=50MB, filegrowth=5MB )

    /*数据库查看是否修改成功*/ exec sp_helpdb testdb

    /*删除数据库*/ drop database[数据库名];

     

     

     

     

    /*表的创建*/ create table kecheng (id int primary key not null, name varchar(10) not null, age int not null ); /*表的修改*/ /*修改该列的数据类型*/ alter table kecheng alter column name  varchar(100);

    alter table kecheng alter column age float;

    alter table kecheng alter column age not null; /*修改主键*/ alter table kecheng add constraint KID primary key (id); /*修改列名*/ /*alter table kecheng*/ exec sp_rename 'kecheng.age','userage','COLUMN'; /*添加列名*/ alter table kecheng add grade varchar(10) not null /*删除列名*/ drop table kecheng /*设置外键*/ alter table 表名 add constraint 外键名 foreign key(列名)reference 外表名(该列名)

     

    /*插入表的数据*/ insert into 表名(要插入的列名) values (数据),(数据)。。。 /*导入别的表中的数据*/ inster into 表名(要插入的列名) select 要选择插入的列名 from 选择插入的表名

    /*查询*/ distinct 去重 top 要查的行数

    select distinct 列名 from 表名 where条件 select top 行数 列名 from 表名 where条件

    /*修改表记录*/ update table 表名  set 列名=修改的值 where 条件 /*删除表记录为delete*/ delete from 表名 where 条件

     

    1.SQL 创建索引

    CREATE [ UNIQUE 唯一的意思] [ CLUSTERED聚集索引 | NONCLUSTERED非聚集索引 ] INDEX index_name ON { table | view } ( column [ ASC | DESC 升序降序] [ ,...n ] ) [] WITH < index_option > [ ,...n] ] ([ ON filegroup ]

    < index_option > ::=     { PAD_INDEX |         FILLFACTOR = fillfactor |         IGNORE_DUP_KEY |         DROP_EXISTING |     STATISTICS_NORECOMPUTE |     SORT_IN_TEMPDB  

     

    2.删除索引

    drop index index_name on table_name ;

    alter table table_name drop index index_name ;

    alter table table_name drop primary key ;

    3.当需要快速找出在某个列中有一特定值的行

    例如:有一张person表,其中有2W条记录,记录着2W个人的信息。有一个Phone的字段记录每个人的电话号码,现在想要查询出电话号码为xxxx的人的信息。

    如果没有索引,那么将从表中第一条记录一条条往下遍历,直到找到该条信息为 ;

    如果有了索引,那么会将该Phone字段,通过一定的方法进行存储,好让查询该字段上的信息时,能够快速找到对应的数据,而不必在遍历2W条数据了。 4.索引查询

    SQL Server数据库索引信息查询

    --sql server查看表中已存在的索引

    exec sp_helpindex 表名

    -- 查看某個表的索引

    SELECT * FROM sys.sysindexes WHERE id=object_id('RelactionGraph')   -- 查看整個庫的索引 SELECT * FROM sys.sysindexes   -- 查看所有庫的索引 IF object_id('tempdb..#')IS NOT NULL     DROP TABLE # SELECT * INTO # FROM sys.sysindexes WHERE 1=2   INSERT INTO #     EXEC sys.sp_MSforeachdb @command1='Select * from ?.sys.sysindexes'       SELECT * FROM #

    Oracle数据库索引信息查询 oracle对于数据库中的表信息,存储在系统表中。查询已创建好的表索引,可通过相应的sql语句到相应的表中进行快捷的查询: 1. 根据表名,查询一张表的索引  select * from user_indexes where table_name=upper('party_customer'); 2. 根据索引号,查询表索引字段 1 select * from user_ind_columns where index_name=('索引名'); 3.根据索引名,查询创建索引的语句  select dbms_metadata.get_ddl('INDEX','SQL100310102315181') from dual ; --['用户名']可省,默认为登录用户 PS:dbms_metadata.get_ddl还可以得到建表语句,如:  SELECT DBMS_METADATA.GET_DDL('TABLE','表名', ['用户名']) FROM DUAL ; //取单个表的建表语句,['用户名']可不输入,默认为登录用户

    SELECT DBMS_METADATA.GET_DDL('TABLE',u.table_name) FROM USER_TABLES u; //取用户下所有表的建表语句

    当然,也可以用pl/sqldeveloper工具来查看相关的表的各种信息。

    查询用户的索引   select  index_name,table_name,tablespace_name,       index_type,uniqueness , status        from dba_indexes where owner='TPSHDEV';   查询用户的索引列   select index_name,table_name,column_name,       index_owner,table_owner   from dba_ind_columns   where table_owner='TPSHDEV';   查询Orcale数据库执行计划 EXPLAIN PLAN FOR SELECT * FROM PARTY_CUSTOMER WHERE ID = '000000003034' ; --要解析的SQL脚本 SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY);

     

     

    创建CS_KC视图,包括计算机专业各学生的学号,其选修的课程号及成绩。要保证对该视图的修改都符合

    --专业为计算机这一条件

    create view 视图名    as

            select *

               from XSB,CJB

               WHERE XSB.学号=CJB.学号 AND 专业='计算机'

            WITH CHECK OPTION

           

    --创建计算机专业学生的平均成绩视图CS_KC_AVG,包括学号(在视图中列名为num)和平均成绩

    --(在视图中列名为score_avg)

    CREATE VIEW XS_KC_AVG(num,score_avg)

       AS

       SELECT 学号,AVG(成绩)

          FROM CJB

          GROUP BY 学号

    USE PXSCJ

    GO

     

    视图的修改

    --将CS_XS视图修改为只包含计算机专业学生的学号,姓名,和总学分

    ALTER VIEW CS_XS

    AS

       SELECT 学号,姓名,总学分

       FROM XSB

       WHERE 专业='计算机'

     

    --视图CS_KC是加密存储视图,修改其定义,包括学号,姓名,选修的课程号,课程名和成绩

    ALTER VIEW CS_KC WITH ENCRYPTION

    AS

    SELECT XSB.学号,XSB.姓名,CJB.课程号,KCB.课程名,成绩

       FROM XSB,CJB,KCB

       WHERE XSB.学号=CJB.学号

          AND CJB.课程号=KCB.课程号

          AND 专业='计算机'

       WITH CHECK OPTION

    --删除视图

    DROP VIEW CS_XS,CS_KC 分类: 数据库-SQL SEVER

    /** *用户管理操作 */

    //查看数据库用户 use mysql; select User from user; 或者也可以在当前数据库中,查看当前用户; use stu; select user();

    //创建用户 use masql create user 用户名 identified by '密码'

    //删除用户 drop user 用户名

    /** *用户权限操作 */

    //查看用户的权限 select *  where user ='用户名'\G;

    //授权权限 grant all privileges on 用户名

    flush privileges;//刷新权限表

    select user.db.select_priv.insert_priv,update_priv.delete_priv     from db where user ='用户名';

    //回收权限

    revoke all privileges on stu.* to test;

    flush privileges;//刷新权限表

    select user.db.select_priv.insert_priv,update_priv.delete_priv     from db where user ='用户名';

     

     

     

     

    实例:

    /*数据库建立*/

    create database LSS

    on primary(

    name = 'LSS_dat',

    filename='D:\data\LSS.mdf',

    size=10MB,

    maxsize=50MB,

    filegrowth=5MB

    )

     

    log on (

    name='LSS_log',

    filename='D:\data\LSSlog.ldf',

    size=5MB,

    maxsize=25MB,

    filegrowth=5MB

    );

     

     

     

     

    /*建立表格*/

     

     

     

    CREATE  TABLE  DZ

    (Dno  CHAR(10) not null  PRIMARY KEY,

    Dname  CHAR(10)  not null,

    Dsex  CHAR(2)  not NULL,

    Dphone  CHAR(12) ,

    Dsdept  CHAR(20) not null,

    jieshu  CHAR(8),

    huanshu CHAR(8),

    )

     

    CREATE  TABLE  BS

    (Bno  CHAR(20)  not null  PRIMARY KEY,

    Slb  CHAR(50)  not null,

    )

     

    CREATE  TABLE GLY

    (Gno  CHAR(12) not null primary key,

    Gname  CHAR(12) not null,

    Gsex   CHAR(2) not null,

    Gphone   CHAR(12),

    Bno CHAR(20),

    foreign key(Bno) references BS(Bno)/*BS表中的Bno为该表的外键*/

    )

     

     

    CREATE  TABLE  SJ

    (Sno  CHAR(20) not null primary key,

    Sname  CHAR(50) not null,

    Szz CHAR(12) not null,

    Scbs CHAR(50) not null,

    Sjj  CHAR(200),

    )

     

     

     

    CREATE  TABLE  JHB

    (Dno  CHAR(20)  not null  primary key,

    Sname CHAR(50) not null,

    SNO  CHAR(20) not null,

    Dname  CHAR(10)  not null,

    Slb  CHAR(50) not null,

    jieshu  CHAR(8),

    huanshu CHAR(8),

    )

     

    /*插入表数据*/

     

    BS表

    INSERT INTO [dbo].[BS]

               ([Bno]

               ,[Slb])

         VALUES

              ('A' ,'数学类书籍'),('B','计算机类'),('C','语言类书籍')

     

    DZ表

    INSERT INTO [dbo].[DZ]

               ([Dno]

               ,[Dname]

               ,[Dsex]

               ,[Dphone]

               ,[Dsdept]

               ,[jieshu]

               ,[huanshu])

         VALUES

               (2018304201,'张儿' ,'男', 17364904850 ,'计算机',20200501,20200601),

                     (2018304202,'李疯','女',19485284512,'计算机',20200405,20200504),

                     (2018304251,'何老','男',17985264560,'给排水',20200421,20200601),

                     (2018304265,'吴帅','女',17945632589,'应用数学',20200104,20200205),

                     (2018304952,'宋宝','男',18945612395,'软件工程',20200321,20200421),

                     (2018304512,'康康','女',17845925632,'英语',20200405,20200408)

    GLY表

     

    INSERT INTO [dbo].[GLY]

               ([Gno]

               ,[Gname]

               ,[Gsex]

               ,[Gphone]

               ,[Bno])

         VALUES

           

                     ('A1','赵云','男',17985264563,'A'),

                     ('A2','张飞','男',14512367855,'A'),

                     ('B1','孙芳','女',15985264563,'B'),

                     ('B2','周玉','女',18525465985,'B'),

                     ('C1','张辽','男',18945627893,'C'),

                     ('C2','徐晃','男',15678944562,'C')

    GO

     

    SJ表

     

    INSERT INTO [dbo].[SJ]

               ([Sno]

               ,[Sname]

               ,[Szz]

               ,[Scbs]

               ,[Sjj])

         VALUES

               (01,'计算机组成原理','张清华','清华大学出版社','计算机专业的相关书籍'),

                     (02,'C语言','李建军','高等教育出版社','计算机编程推荐书籍'),

                     (03,'java课程设计','胡学金','江南出版社','计算机编程入门推荐书籍'),

                     (04,'高等数学','徐军','高等教育出版社','大学基础数学'),

                     (05,'大学英语','吴海飞','高等教育出版社','英语专业基础')

     

    GO

     

    JHB表

    INSERT INTO [dbo].[JHB]

               ([Dno]

               ,[Sname]

               ,[SNO]

               ,[Dname]

               ,[Slb]

               ,[jieshu]

               ,[huanshu])

         VALUES

            

                     (2018304202,'java课程设计',03,'李疯','计算机类',20200405,20200504)

    GO

     

     

    /*建立视图*/

    建立姓名视图

    create view DZ_name

      as

        select [Dname],[Dsex],[Dsdept],[Dno]

        from [dbo].[DZ]

    /*建立索引*/

     

     

     

     

    在读者表中建立学号索引

    create index 学号

           on [dbo].[DZ]([Dno] asc)

     

    删除操作为drop index学号 on [dbo].[DZ]

    /*修改操作*/

    例如读者表中修改李疯的姓名为李凤

    UPDATE [dbo].[DZ]

       SET [Dno] = '李凤'

         

     WHERE  [Dno] = '李疯'

     

    /*查找操作*/

    例如DZ中名字叫张儿的所有消息

    Select  [Dname],[Dsex],[Dsdept],[Dno]

    From DZ_name

    Where Dname=’张儿’

     

    SELECT [Dno]

          ,[Dname]

          ,[Dsex]

          ,[Dphone]

          ,[Dsdept]

          ,[jieshu]

          ,[huanshu]

      FROM [dbo].[DZ]

      where [Dname]='张儿'

    GO

     

    /*删除操作*/

    删除DZ表中康康的记录

     

    DELETE FROM [dbo].[DZ]

          WHERE [Dname]='康康'

    GO

    /*数据库安全性操作*/

     

     

     

     

    Processed: 0.011, SQL: 9