数据库命令常用

 

--删除表
drop table tb_person;

--删除记录delete,删除所有的记录
delete tb_person;

--彻底删除表中所有记录,释放表空间(oracle)
truncate table tb_csii;

--删除数据库  数据文件和日志文件会删除
drop database test;

--删除一个字段(列) 表中所有记录的该字段的值都删了
alter table tb_person drop column persiondesc;
alter table tb_student drop column stuno;


--删除一行
--delete from tb_student where stuId=1;

--删除约束
alter table tb_emp drop constraint dk_sex;

--删除主键
alter table tb_test drop constraint PK__tb_test__1920BF5C;


--修改字段  修改字段的数据类型
--对于值可以转换的字段可以修改
--对于值不可以转换(varchar--> int) 必须先将表中的数据清空 再修改
alter table tb_person alter column personage varchar(10);
alter table tb_person alter column personname int;

-------------------------------------------------
----oracle中添加/修改字段------
--给tb_book表增加一个字段 不需要column关键字
alter table tb_book add book_desc varchar2(100);
--给字段修改数据类型
alter table tb_book modify  book_desc number(10);
--删除字段
alter table tb_book drop column book_desc;

--给tb_test表在id字段上创建名为tbtestid的索引
create index tbtestid on tb_test(id);

--查找表的所有索引(包括索引名,类型,构成列)表名需大写并加单引号
select t.*,i.index_type from user_ind_columns t,user_indexes i where t.index_name = i.index_name and t.table_name = i.table_name and t.table_name ='TB_TEST';

--删除索引
drop index tbtestid;

--创建表
--出版社
create table tb_publish(
publish_id  int primary key,
publish_name varchar2(20) not null,
publish_loc varchar2(50)    
);
select * from tb_publish;
--书籍
create table tb_book(
book_id int primary key,
book_name varchar2(30) not null,
book_author varchar2(20) not null,
book_price float not null,
book_date date not null,
book_num number,
publish_id int
);

--给两张表添加关键 增加外键
alter table tb_book add constraint fk_book_publish foreign key(publish_id) references tb_publish(publish_id);

--添加记录
insert into tb_book(book_id,book_name,book_author,book_price,book_date,publish_id) values(seq_book.nextval,'射雕英雄传','金庸',50,to_date('2012-12-12','yyyy-MM-dd'),3);

----oracle序列
--创建序列
create sequence seq_publish  --这一句必写 其余都可以省略
start with 1  --序列初始化值
increment by 1  --每次改变量 该值可以取负值
maxvalue 999999 --序列的最大值
minvalue 1      --最小值
cache 10        --缓存
cycle           --循环

--获取序列的当前值
select seq_publish.currval from dual;

--获取序列的下一个值
select seq_publish.nextval from dual;

--复制表结构及其数据
create table new_table as select * from tb_user;

--只复制表结构
create table new_table as select * from tb_user where 1=9;

--复制表数据
--如果表结构相同
insert into new_table select * from tb_user;
--如果表结构不相同
insert into table_name_new(column1,column2...) select column1,column2... from table_name_old
pasting

oracle创建用户,赋予权限/角色,撤销权限,权限转移,删除用户等操作(sqlplusw)
conn system/abc;
create user xiaohong identified by m123
grant connect to xiaohong;  //连接角色
grant resource to xiaohong; //资源角色
grant dba to xiaoming;      //数据库管理员角色,一般不给
connect xiaohong/m123;

修改密码
password 用户名
alter user 用户名 identified by 新密码;

给用户解锁:alter user 用户名 account unlock;

-------------------------------------------------


-- 将tb_emp表中所有人的加1岁
update tb_emp set empAge=empAge+1 where empName='张三';
update tb_emp set empAge=empAge+1 ;--批处理sql语句就相当于把这些事捆绑成一个事物


--将表中的字段重命名,修改字段名  用存储过程
sp_rename 'tb_student.stuBirthday','stubirthday','column';
sp_rename 'tb_student.stuDesc','studesc','column';
sp_rename 'tb_person.persionid','personid','column';

--修改表名
sp_rename 'tb_person','person','object';

--插入记录,插入记录的时候 非空字段一定要给值
insert into tb_student(stuname,stuage,stubirthday) values('zhangsan',45,'1967-12-12');

--查询tb_student表
select * from tb_student;

--查询id为1人得姓名和年龄
select stuname ,stuage from tb_student where stuid=1;

--修改列宽,将names最大列宽增加到10个字符(假定原为6个字符)。
alter table tb_card alter column names varchar(10);

--DB2将表ot_trans的字段trans_id修改为6(假定原来为4)
alter table ot_trans alter trans_id set data type varchar(6);

--添加字段(列), 为该表增加1列NAMEs
alter table tb_card add NAMEs varchar(20);

--修改(添加)主键
alter table tb_person add constraint pk_person1 primary key(personid);


--添加唯一约束
alter table tb_depart add constraint uk_departname unique(depp;artName);


-- 添加检查约束  年龄必须在18~50
alter table tb_emp add constraint ck_age check(empAge>18 and empAge<50
insert into tb_emp values('小强','男',55,'湖北武汉','12345678901',1);

--给两张表添加外键关联
--将tb_emp表中的depId字段外键关联tb_depart表中的departId字段
--关联表的字段如果省略 就是指该表的主键
--一张表中可以很多个外键
alter table tb_emp add constraint fk_emp_depart foreign key(depId) references tb_depart(departId);

--添加约束
alter table tb_emp add constraint dk_sex default('男') for empSex;
create table tb_test(
tid int,
tname varchar(10),
tage int default 17
)
insert into tb_emp(empName,empAge,empAddress,empTelephone,depId) values('大强',45,'湖北武汉','12345678901',1);


--查询部门人数小于2的部门id
select depId from tb_emp group  by depId having count(*)<2;

--查询每个部门平均年龄小于30的部门id
select depId from tb_emp group by depId having avg(empage)<30;

--查询显示出所有男学生的姓名及其名子的长度
select username,len(username) as 名字长度 from tb_user where userSex='男';

--随机取三条记录
select top 3 * from tb_user order by newID();

--查询数据库中所有的表名
select name from sysobjects where type='U';

--删除重复记录
delete from tb_user where userId not in (select max(userId) from tb_user group by userName,userPass);

--查询不重复记录
select distinct userName,userPass from tb_user;

--复制表结构
--1.如果新表不存在
select * into newtable from tb_user;--复制表结构及其数据       
select * into newtable from tb_user where 1=2;--只复制表结构
--2.如果存在
insert into newtable select * from oldtable  ---表结构一致
insert into newtable(列名1,列名2,.....) select 列名1,列名2....from oldtable --表结构不一致

--创建一个数据库  指定配置文件和日志文件
create database student on(
name='student_data',
filename='d:\test\student_data.mdf',
size=3,
maxsize=10,
filegrowth=1
)
log on(
name='student.log',
filename='d:\test\student_log.ldf',
size=1,
maxsize=5,
filegrowth=1
);

--在创建表的时候 通常情况下都会给定一个主键
--主键一般都是数值类型的
--主键一般都是自增长 在向表中插入记录的时候 主键的值由自增长而来 不需要我们给定
--当主键自增长了以后  一般不会改变主键
create table tb_student(
 stuid int identity(1,1) primary key,--定义主键 自增长
 stuname varchar(10) not null, --not null 非空
 stuage int not null,
 stuBirthday datetime not null,
 stuDesc  varchar(100)
);

SQL Server中的分页语句:
--pageSize=3
select top 3 * from tb_user;--第一页
select top 3 * from tb_user where userId not in (select top 3 userId from tb_user order by userId);--第二页
select top 3 * from tb_user where userId not in (select top 6 userId from tb_user order by userId);--第三页
--第二页
select top 3 * from tb_user where userId not in (select top (3*(2-1)) userId from tb_user order by userId);
--通式
select top pageSize * from tb_good where goodId not in (select top (pageSize*(currentPage-1)) goodId from tb_good order by goodId);

Orcal中的分页语句:
--第一页
select * from (select rownum as num,b.* from tb_book b) rs where rs.num>0 and rs.num<=3;
--第二页
select * from (select rownum as num,b.* from tb_book b) rs where rs.num>3*(2-1) and rs.num<=3*2;
--分页通式
select * from (select rownum as num,b.* from 表名 b) rs where rs.num>pageSize*(currentPage-1) and rs.num<=currentPage*pageSize;

--分组并排序
select * from (select a.*,row_number() over (partition by a.name order by a.id asc) rm from tb_csii a where a.name = '222222') where rm <= 10;

--rownum排序(rownum的编号不易控制)
select a.*,rownum from tb_csii a where a.name = '222222' and rownum < 10;

--oracle数据库实用查询
--查指定用户(例如scott)用到的表空间(实用)
select T.OWNER 用户名,T.TABLE_NAME 表名,t.TABLESPACE_NAME 表空间名 From dba_tables t Where t.OWNER = '大写用户名';
--查询指定用户的默认表空间、临时表空间
Select USERNAME 用户名,default_tablespace 默认表空间,temporary_tablespace  临时表空间 from dba_users  Where username = 'SCOTT';
--查看当前用户每个表占用空间的大小
Select Segment_Name,Sum(bytes)/1024/1024 From User_Extents Group By Segment_Name;
--查看每个表空间占用空间的大小
Select Tablespace_Name,Sum(bytes)/1024/1024 From Dba_Segments Group By Tablespace_Name;
--查看Oracle当前用户下的用户名、默认表空间
select username,default_tablespace from user_users;
--查看当前用户的角色
select * from user_role_privs;
--查看用户下所有的表,及其表所在的表空间等信息(实用)
select * from user_tables;

--查询oracle各表空间占用的磁盘大小,需DBA权限(实用)
select tablespace_name,sum(bytes)/1024/1024 from dba_segments group by tablespace_name;

--释放指定表所占的表空间(注:并不能释放所占磁盘空间),慎用
alter table mptransstat deallocate unused keep 0;

--查询表占用空间
select segment_name, sum(bytes)/1024/1024 Mbytese from user_segments where segment_type ='TABLE' group by segment_name;

--查看索引占用空间
select segment_name ,sum(bytes)/1024/1024 from user_segments where segment_type ='INDEX' group by segment_name;

--Oracle查询当前用户下的表个数
select count(*) from tabs;

--DB2查看指定表所在的表空间名
select tabname, tbspace from syscat.tables where tabname='OT_TRANS';

--DB2查看缓冲池信息
SELECT BPNAME,NPAGES,PAGESIZE FROM SYSCAT.BUFFERPOOLS;

--DB2创建缓冲池
CREATE BUFFERPOOL EPAYBUFFERPOOL IMMEDIATE  SIZE 250 PAGESIZE 8 K ;

--DB2修改缓冲池
ALTER BUFFERPOOL EPAYBUFFERPOOL IMMEDIATE SIZE -1;

2014/10/28 星期五

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值