您的位置:首页 > 数据库

SQL 语言对数据库的操作(一)

2013-06-16 18:24 246 查看
一,对数据库及表的操作

1,创建数据库

CREATE DATABASE +数据库名

2,删除数据库

DROP DATABASE+数据库名称

3,创建表

CREATE TABLE name_of_table

(

name_of_column column_datatype

)

4,更该现有表

更改一个现有表的关键字是ALTER TALBLE,这个语句允许添加并删除一个现有表中的列。但是在许多ANSI SQL语言中,ALTER TABLE 语句不能改变一个现有列的数据类型,然而许多RDBMS(RelationalDatabase Management System)扩展了ALTER TABLE语句,并包含了他们自己的改变列定义方式的一样。

添加新列 的语法:

ALTER TABLE name_of _talbe

ADD name_of_field data_type

ALTER TABLE 是告诉数据库系统做些什么的关键字。在ALTER TABLE 语句之后,给出需要变更的表的名称,最后,上面的语法告诉数据库系统需要添加一个什么样的列,然后提供该列的名称和他的数据类型。

5,删除现有列

为了删除现有列,需要告诉RDBMS,要更改删除的列的表是哪个,要删除表中的那一列。

语法:

ALTER TABLE name_of_table

DROP COLUMN name_of_field

二,对列的操作

1,插入数据

INSERT INTO 语句使得新数据插入到数据库中变得非常容易。需要说明的是,想那个表中插入数据,向那一列中插入数据,以及插入什么数据。

基本语法:

INSERT INTO table_name (colunm_names) VALUE (data_value)

2,更新数据

与插入数据一样,更新数据时也要明确要更新哪一个数据,基本语法:

UPDATE table_name

SET column_name=value

WHERE condition

3,删除数据

(1)无条件的简单用法:如果想从表中删除所有的记录,则可以不必用到WHERE子句来添加条件约束。语法如下: DELETE FROM table_name

(2)有约束的用法: DELETE FROM talbe_name WHERE conditon

在使用where子句添加约束后,可以删除特定的记录。

三,从数据库中提取信息

1,SELECT语句

对SELECT语句的最早接触还是在红皮书的五个例子中,当时看着注释,只知道是根据条件从数据库中选择符合条件的数据。对它的用法不是很懂。现在才有了一点认识。

(1)最简单的SELECT 语句

最简单的SELECT语句就是说明从哪个表中获得哪些列的数据,语句格式:

SELECT colunm1,column2,column3,colunm4,.....from table-name

当一个表中有很多列但是我们又懒得列举那些列名时,我们可以采用这个格式:

SELECT * FROM table-name

2,仅返回不同的行

有了最基本的SELECT语句,我们就可以在这个节点上向SELECT语句里面加入东西,来使SELECT语句更加精准的选择出我们想要得到的结果。

如果想知道一个记录中的唯一值,我们可以在语句中加入DISTINCT这一关键字。

语法:SELECT DISTINCT colunm_name FROM table_name

3,使用别名

为什么要使用别名呢?比如像我们班有很多人,而我的记性又很差,2年60几个人还没记住,但是当提到一个人时,我又会很快的想起他来,因为我给他们每个人都起了一个非常容易想起来的名字,比如:冬瓜。我记忆他们时,使用的就是别名。

同样,在数据库中,我们可以给每一列都起一个别名。

例如:SELECT LastName AS Surname FROM Memberdetils.

如上例所示,我们可以加入AS来实现命名别名。

4,利用WHERE 子句,逻辑运算符,算数运算符,过滤结果

利用WHERE 子句和各类运算符,可以形成条件,用来筛选出结果。

5,利用ORDER BY 排序结果

在完成筛选结果后,我们大多数情况下要显示我们的数据,这是,我们可以利用ORDER BY语句,实现对结果的有序显示。

ORDER BY 语句位于SELECT语句的末尾,它允许指定一个列或者是多个列,这些列确定了结果的顺序,以及顺序是升序还是降序。默认时,ORDER BY语句是升序显示。

如果要指定按照降序显示,则可以加入DESC关键字。

如:SELECT YearReleased

FROM Films

ORDER BY YearReleased DESC

6,连接列

在Oracle和IBM DB2中,存在两种串连文本数据基于文本的列的方式。第一种方式是使用串连运算符,在这两个系统中是使用两条(||)字符。第二种方式是使用CONCAT()函数。

Oracle和DB2都支持第二种串连方式:CONCAT()函数。需要向这个函数传递两个参数,参数可以是列或者文本字符串,该函数将返回它们的连接结果。

MySql使用函数进行串连。第一个函数是CONCAT(),,它的工作方式与Oracle和DB2中所使用的CONCAT()函数相似。但是,与这两个数据库系统不同的是,它可以使用两个或更多个参数。因此,如果想连接3个列,则可以编写如下所示的查询:

SELECT CONCAT(memberid,firstname,lastname) FROM memberdetails,除了连接列之外,CONCAT()也可以连接字符串字面量。如下:SELECT CONCAT(‘ the member is called',firstname,' ',lastname) as 'member name' FROM memberdetails.

第二种连接方式是使用MYSQL所提供的CONCAT_WS()函数,该函数在所串连的每一列或字面量之间添加一个分隔符。如果想在每一列之间添加一个空格,则可以编写类似于如下所示的查询:SELECT CONCAT_WS(' ',' THE MEMBER IS CALLED',firstname,lastname) AS 'MEMBER NAME'

7,从多个表中选择数据,创建联合

内部联合组合两个表,并基于两个表中的列链接或联合它们。内部联合允许指定那些列组成联合,并基于什么条件。为了创建一个内部联合,必须指定被联合的两个表,以及联合基于的一个或多个列。其语法格式如下:

table1 INNER JOIN table2 on column_from_table1=column_from_table2

使用INNER JOIN 或者JOIN创建表之间的联合,实际上不是联合表的仅有方式。但是应当使用它们,因为INNER JOIN 和JOIN能够显式的声明联合哪些表,这使得SQL语句具有更好的可读性。创建内部联合的另一种方式是,简单的在WHERE子句中指定链接。重写上面的SQL语句,如下:

SELECT Filmname,yearreleased,rating

FROM films,category

WHERE films.categoryid=category.category AND category.categoryid=9

WHERE子句声明了films.categoryid应当等于category.categoryid,它创建了联合。

到目前为止,已使用了等号运算符联合表,它也被称为等值联合。等值联合是最常用的联合类型,但使用任何其它运算符也是可以的。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: