/*数据库建立*/ 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
/*数据库安全性操作*/