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

  1. 云栖社区>
  2. 博客>
  3. 正文

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

soledad_lhc 2013-06-16 18:24:00 浏览624
展开阅读全文

        一,对数据库及表的操作

       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,它创建了联合。

     到目前为止,已使用了等号运算符联合表,它也被称为等值联合。等值联合是最常用的联合类型,但使用任何其它运算符也是可以的。

      

         

 

 

   

 

 

 

   

 

 

 

 

     

     

     

    

          

网友评论

登录后评论
0/500
评论
soledad_lhc
+ 关注