数据库语句的学习
数据库的安装
这里就不在说了,之前的博客已经说过了数据库的安装了。这里的主要是讲一下数据库语句的使用规则。
数据库的操作语句
数据库的操作主要是增(create)、删(drop)、改(alter)、查(show)。
1.创建数据库
create database 数据库名(charater set utf8);
2.查看数据库
show databases;
3.修改数据库属性(数据库的名字不能修改)
alter database 数据库名 set utf8;
4.删除数据库
drop database 数据库名;
对表格的操作语句
对表格的操作过程中会多一些操作,因为表中还包含了表头。
1.创建表
create table 表名(列名 数据类型 defalt 默认初始值,
列名 数据类型,
列名 数据类型,… );
对表的约束条件:
主键(非空 唯一) primary key
非空 not null
唯一 unique
检查 check()
外键 reference
2.查看表
show tables;查看表
desc 表名;查看表的结构
3.修改表
增加一列 alter table 表名 add 列名 数据类型;
修改列属性 alter table 表名 modify 列名 数据类型;
修改列名 alter table 表名 rename column 新列名 to 旧列名;
删除一列 alter table 表名 drop column 列名;
4.删除表
drop table 表名;
对数据的操作语句
1.增加数据(插入数据)
insert into 表名 value(根据表的结构填数据);
插入部分数据:
insert into 表名(列名,列名····) values(值1,值2····);
&符号的使用:是一个占位符
insert into 表名(列名,列名····) values(&V1,V2····);
拷贝表的结构:
creaet table 新表名 as select * from 旧表名 where 1=2;
拷贝数据到另外一张表:
insert into 表名 select * from 表名;
对表的约束条件:
主键(非空 唯一) primary key
非空 not null
唯一 unique
检查 check()
外键 reference
2.查看数据
公式:
select 【*】【列名】【表达式】as(起别名)
from 【表名】
where (条件)
group by
having (分组查询条件)
order by 【列名】【别名】【表达式】【序号】
注意:
1.表达式中有NULL ,计算的结果都为空,适合用nvl解决nvl(a,b)如果a为空,则取b的值。
2.distinct 是去重复,作用于后面的所有的列
3.查看数据是否为空不能用=号,用is null 或者is not null
表达式
1.case表达式
case 列名
when 条件 then 操作
when 条件 then 操作
when 条件 then 操作
else 操作
end 别名
2.decode
decode(列名,表达式,条件,操作,条件,操作,条件,操作·····)
where后面可以接:
1.比较运算符:> , >= , <, <=, !=(<>), between…and…
2.逻辑运算符 or and not
3.in集合 in( 值1,值2,值3,)
4.模糊查找 like ‘(%匹配多个字符,_匹配一个字符)’ (escape ‘\’ 指定\为转义字符)
order by排序:
默认是升序asc ,降序是desc
如果降序的时候有NULL ,NULL表示是无穷大,要排在最后使用nulls last
asc和dest只作用域前面的一列
根据次序排序的时候,次序是从1开始
group by使用(分组查询)
分组函数5个:agv(平均),count(总数),MAX(最大值),MIX(最小值),sum(总和)
注意:出现在select后面的列名如果没有出现在分组函数中,必须出现在group by后边
having后面根group by分组之后对结果过滤。
where 是在开始挑选数据的时候就过滤了。
多表查询
n个表需要n-1个条件。
假如有表A和表B。
等值和不等值连接
select a.*,b.* from A a ,B b where a.NO=b.NO;
外连接(两个表中的数据对应不平衡)
select a.*,b.* from A a ,B b where a.NO(+)=b.NO;
谁的数据对应少加(+)号
自连接(一个表中的数据有对应的关系)
既给同一张表起不同的名字
select a.*,a1.* from A a ,A a1 where a.NO(+)=b.NO;
子查询(sql语句嵌套sql语句)
可以在where,select,having,from后面放置子查询
select后面使用子查询结果只能有一条记录
3.修改数据
updata 表名 set 列名=值 where 条件;
注意:使用updata一定要使用where条件,否则会修改表中的所有的数据。
4.删除数据
delete from 表名 where 条件
注意:删除的时候一定要使用where,否则会删除所有的数据。
事务
有些数据库要自己手动的开启事务。
使用了数据库操作和表的操作数据库的事务会自动的提交,并开启下一个事务。
使用数据操作要自己commit提交。
事务主要是
commit 提交
rollback 回滚
savepoint 保存点
rollback to savepoint A ;回滚到保存点A
简单写一些数据库常用的语句,下次有时间写C++连接数据库。