一,对数据库及表的操作
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,它创建了联合。
到目前为止,已使用了等号运算符联合表,它也被称为等值联合。等值联合是最常用的联合类型,但使用任何其它运算符也是可以的。