![]() |
||||||||||||||||||||||
| 网络数据库教程 | ||||||||||||||||||||||
| Richard Dice | ||||||||||||||||||||||
|
|
|
||||||||||||||||||||
|
第四页:MySQL, SQL, DDL,和DML 同MySQL的互动交流指的是用它的语言SQL(结构化程序语言)。SQL一般划分为两部分,第1部分叫做DDL,即数据定义语言(data definition language),你用SQL这个单元告诉MySQL如何设立表格。还有一部分是DML,即数据控制语言( data manipulation language),这个单元用于从你的表格中获取数据。 这里是计划:我将启动mysql,生成一个表格,然后在表格中输入数据,然后检查我刚输入的数据。(我用加重体显示的文字解释各项指令的含义) rdice:# mysql test
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 4 to server version: 3.21.28-gamma-log
Type 'help' for help.
mysql> create table albums ( 这里我在使用DDL
-> title varchar(100), 设置表格,在表格中
-> artist varchar(100), 我将存储一些
-> released date); 音乐资料
Query OK, 0 rows affected (0.07 sec)
现在是DML,用于告诉MyDQL在album中加入记录
mysql> insert into albums(title,artist,released)
-> values('Selling England By The Pound','Genesis','1973-01-01');
Query OK, 1 row affected (0.08 sec)
这里是DML声明,它将使我看到我刚才加入的内容
注意*在SQL语言中指“所有列”
mysql> select * from albums;
+------------------------------+---------+------------+
| title | artist | released |
+------------------------------+---------+------------+
| Selling England By The Pound | Genesis | 1973-01-01 |
+------------------------------+---------+------------+
1 row in set (0.06 sec)
MySQL所认可的所有SQL的语法在MySQL文献中都有详细说明,你随时可以查阅。即使今天的课程也已经涉及了许多进出知识,所以你应该仔细研究一下它。 生成表格的级别语法是: create table 表格名 (
列1 列1数据类型,
列2 列2数据类型,
...
列_x 列_x数据类型
)
各列可以使用的数据类型可以在MySQL文献中找到。在本例中我使用了"date"数据类型以及变量长度字符串。"varchar" 字符串的长度由预设的长度限制,在变量中,是100。 要结束mysql中的一个声明,你需要键入一个分号,然后回车。mysql将告诉你的“query(SQL中任何指令的术语)”状态,以及处理所用时间。 insert(插入)的语言更简单: insert into 表格(列1,列2,...,列_x)
values(value1,value2,...,value_x)
字符串必须用引号圈起来。 select(选择)是SQL非常有用的声明,必要的时候,它的用法可能会非常复杂。 如果在该数据库中我存储了几百个音乐文件,而且我只想看一下有Genesis创作的作品,我就可以用select发出一个声明查询我所需要的内容: select title, released
from albums
where artist = 'Genesis'
order by released
这次我按名称圈定了我所感兴趣的列,而不是用* 通配符。命令行where artist = 'Genesis'限制必须查询MySQL记录中由Genesis创作的作品,我还命令MySQL将该作曲家的唱片按照发行日期排序。 除了insert和select指令,还有两种基本的DML指令:update(更新)和delete(删除)。 update使你能够改变在表格行中存储的数据;delete使你能删除表格中的一行。 这些指令的使用范例: 我发现Selling England 的发行日期是2月1日而不是1月1日。所以我更新我的记录:
mysql> update albums
-> set released = '1973-02-01'
-> where title = 'Selling England by the Pound'
-> and artist = 'Genesis';
Query OK, 1 row affected (0.03 sec)
mysql> select * from albums;
+------------------------------+---------+------------+
| title | artist | released |
+------------------------------+---------+------------+
| Selling England by the Pound | Genesis | 1973-02-01 |
| Wind & Wuthering | Genesis | 1976-01-01 |
| We Can't Dance | Genesis | 1991-01-01 |
+------------------------------+---------+------------+
3 rows in set (0.00 sec)
如果我认为我不喜欢Genesis ...
mysql> delete from albums where artist = 'Genesis';
Query OK, 3 rows affected (0.00 sec)
mysql> select * from albums;
Empty set (0.00 sec)
使用"update" 和"delete" 指令时,你需要用where指明查询条件(否则你的表格中的每一行都会被修改或删除,你必须小心) 互联网中有一个很好的SQL教程,我建议仔细阅读该教程。它并不完全适用于MySQL,这是因为SQL也有不同的“方言”。该教程所讲的内容基本适用于MySQL,但有一些细微的区别,在MySQL的SQL文献中有具体说明。 今天的课程的最后,我们将再次研究一下mysqlshow: rdice:# mysqlshow test
Database: test
+--------+
| Tables |
+--------+
| albums |
+--------+
rdice:# mysqlshow test albums
Database: test Table: albums Rows: 0
+----------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------+--------------+------+-----+---------+-------+
| title | varchar(100) | YES | | | |
| artist | varchar(100) | YES | | | |
| released | date | YES | | | |
+----------+--------------+------+-----+---------+-------+
mysqlshow记录了我们在mysql中所作的一切工作。当你要求mysqlshow显示表格信息时,它并不告诉你在表格中具体有什么信息,它只是告诉你表格中目前有多少行,它告诉你的是表格的结构。我们已经了解了"Field"和"Type" ,其他的表格资料年可以从MySQL的文献中找到详细内容)。>> 网络数据库教程 |
||||||||||||||||||||||
| 本栏目内容归Wired
Digital Inc.所有, |
||||||||||||||||||||||