关于数据库的建立及增删改查
Posted 花伶
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于数据库的建立及增删改查相关的知识,希望对你有一定的参考价值。
我们打开这个软件首先要看看是否存在这个数据库可以使用show databases:查看数据库是否存在如果不存在我们可以新建数据库用create database+数据库的名字;(新建数据库)use+数据库的名字;database changed(用这个数据库)。而后就可以建立表了。用select *from+表名查看表中的数据。
现在先说一下怎样建立一个基本的表格
Create table+表名(<列明><数据的类型>[列级的约束条件]
<列明><数据的类型>[列级的约束条件]
.....);
例如建立一个“课程”表course.
Create table course
(cno char(4)primary key,//列级完整性约束条件,cno是主码
Cname char(40)not null,//列级完整性约束性条件,cname不能取空值
Cpno char(4),
Ccredit smallint,
Foreing key (cpno)references course(cno)//表级完整性条件,cno是外码,被参照表是course,被参照列是cno
);
参照表与被参照表是同一个表
下面就来简单的介绍一下增删改查
一 增
1 .使用insert插入单行数据:语法:insert [into]<表名> [列名] values <列值>
例:insert into Students (姓名,性别,出生日期) values (‘邢金聪‘,‘男‘,‘1990/6/15‘)
注意:如果省略表名,将依次插入所有列
2.使用insert,select语句将现有表中的 数据添加到已有的新表中
语法:insert into <已有的新表> <列名> select <原表列名> from <原表名>
例:insert into addressList (‘姓名‘,‘地址‘,‘电子邮件‘)selectname,address,email from Strdents
注意:查询得到的数据个数、顺序、数据类型等,必须与插入的项保持一致
二 删
1.使用delete删除数据某些数据 语法:delete from <表名> [where <删除条件>]
例:delete from awhere name=‘邢金聪‘(删除表a中列值为邢金聪的行)
注意:删除整行不是删除单个字段,所以在delete后面不能出现字段名
2.使用truncate table 删除整个表的数据
语法:truncate table<表名>
例:truncate table addressList
注意:删除表的所有行,但表的结构、列、约束、索引等不会被删除;不能用于有外建约束引用的表
3删除基本表
Drop table<表名>[restrict /cascade];restrict原本就有限制,约束之意若选择restrict,则该表的删除是有限制条件的。欲删除的基本表不能被其他表的约束条件所引用(如check,foreign key等约束),不能有视图,不能有触发器(trigger),不能有存储过程或函数等。如果存在这些依赖该表的对象,则此表将不能被删除。而cascade本身有串联的意思,若选择cascade,则该表的删除将没有限制条件。在删除基本表的同时,相关的依赖对象例如视图,都将被删除。
三、改
1使用update更新修改数据
语法:update <表名> set <列名=更新值> [where <更新条件>]
例:truncate table addressList
注意:删除表的所有行,但表的结构、列、约束、索引等不会被删除;不能用于有外建约束引用的表
2这个用alter table语句修改基本表
Alter table<表名>
[add [column]<新列名><数据类型>[完整性约束]
[add<表级完整性约束>]
[drop[column]<列名>[cascade/restrict]]
[drop constraing<完整性约束>[restrict/cascade]]
[alter column<列名><数据类型>];
其中<表名>是要修改的基本表,add子句用于增加新列,新的列级完整性约束条件和新的表级完整性约束条件。Drop column子句用于删除表中的列,如果指定了cascade短语,则自动删除引用该列的其它对象比如视图;如果指定了restrict短语,则该列被其他对象引用,rdbms将拒绝删除该列。Drop constraint子句用于删除指定的完整性约束条件。Alter column子句用于修改原有的列定义,包括修改列名和数据类型。我一下子把alter table 的语句放在一起,没有分增加或删除。
四、查
1.普通查询
语法:select <列名>
from <表名>
[where <查询条件表达试>]
[order by<排序的列名>[asc或desc]] ;
其中where子句表达式从from子句指定的基本表,视图或派生表中找出满足该条件的元组,再按select子句中的目标列表达式选出元组中的属性值形成的结果表
1).查询所有数据行和列
例:select * from a
说明:查询a表中所有行和
2).查询部分行列--条件查询
例:select i,j,k from a where f=5
说明:查询表a中f=5的所有行,并显示i,j,k3列
3).在查询中使用AS更改列名
例:select name as 姓名 from a where gender=‘男‘
说明:查询a表中性别为男的所有行,显示name列,并将name列改名为(姓名)显示
4).查询空行
例:select name from a where e-mail is null
说明:查询表a中e-mail为空的所有行,并显示name列;SQL语句中用is null或者is not null来判断是否为空行
5).在查询中使用常量
例:select name ‘廊坊‘ as 地址 from a
说明:查询表a,显示name列,并添加地址列,其列值都为‘廊坊‘
6).查询返回限制行数(关键字:top )
例1:select top 6 name from a
说明:查询表a,显示列name的前6行,top为关键字(oracle 中没有top关键字用rownum替代)
select * from a where rownum<6
7).查询排序(关键字:order by , asc , desc)
例:select name
from a
where grade>=60 分组查询
order by desc
说明:查询表中成绩大于等于60的所有行,并按降序显示name列;默认为ASC升序 2.模糊查询
1).使用like进行模糊查询
注意:like运算符只用语字符串,多表
例:select * from a where name like ‘赵%‘
说明:查询显示表a中,name字段第一个字为赵的记录
2).使用between在某个范围内进行查询
例:select * from a where age between 18 and 20
说明:查询显示表a中年龄在18到20之间的记录
3).使用in在列举数值内进行查询(in后是多个的数据) 例:select name froma where address in (‘廊坊‘,‘石家庄‘,‘唐山‘)
说明:查询表a中address值为廊坊或者石家庄或者唐山的记录,显示name字段 3.分组查询
1).使用group by进行分组查询
例:select studentID as 学员编号, AVG(score) as 平均成绩 (注释:这里的score是列名)
from score (注释:这里的score是表名)
group by studentID 2).使用having子句进行分组筛选
例:select studentID as 学员编号, AVG
from score
group by studentID
having count(score)>1
说明:接上面例子,显示分组后count(score)>1的行,由于where只能在没有分组时使用,分组后只能使用having来限制条件, 4.多表联接查询
1).内联接
①在where子句中指定联接条件
例:select a.name,b.mark
from a,b
where a.name=b.name
说明:查询表a和表b中name字段相等的记录,并显示表a中的name字段和表b中的mark字段
以上是关于关于数据库的建立及增删改查的主要内容,如果未能解决你的问题,请参考以下文章