/*数据库建立*/
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]
/*建立索引*/
在读者表中建立学号索引
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
/*数据库安全性操作*/