下面是阅读 MySQL 5.0 Reference Manual 第三章 Tutorial 的笔记。o(╯□╰)o,不记下来容易忘。
1、与服务器的连接与断开
与数据库服务器的连接通常需要提供一个用户名(user name)、密码(password),如果不是在数据库服务器所在的电脑上面登录的,还需要提供一个服务器主机地址(host name)。登录的方式如下:
shell>mysql -h hostname -u username -pEnter password:********
上面的方法是在 Linux/Unix 中登录的,在 Windows 下,我们可以直接打开 MySQL 命令行工具,输入密码即可连接数据库。
如果连接数据库服务器的时候出现 ERROR 2002 (HY000) 这样的错误,这很可能是因为 MySQL 的进程(服务)没有开启。
断开与数据库的连接,键入 quit 即可,或者是简单的 /q。在 Windows 下可以直接关闭窗口。
2、简单查询示例
在保证已经连接了数据库的前提下,我们可以执行数据库查询,先试试下面的例子:
1: SELECT VERSION() ,CURRENT_DATE;
联系这个查询,我们可以得到一下几点:
①一个 SQL 语句一般都会以分号结尾,当然会有些例外情况,比如说前面提到的 quit 。
②当执行完一个语句之后 MySQL 都会有 mysql> 提示,说明 MySQL 正在等待下一条语句。
③MySQL 会以一个不是十分完美但是简约的表格给我们呈现查询结果。
④MySQL 在查询结束后会告诉我们查询的耗时,这些都是参考量,没有什么实际意义。
⑤SQL 语句不区分大小写。
此外我们还可以将查询语句当做简单的计算器使用:
1: SELECT SIN(PI()/4),(4+5)/5;
我们还可以在一行中输入多个 SQL 语句,用分号隔开,如下:
1: SELECT CURRENT_DATE;SELECT CURRENT_TIME;SELECT NOW();
如果一行输入未结束,MySQL 会在下一行提示我们继续输入。
3、新建一个数据库
在 MySQL 中叫做数据库 (Database) 的名词在有些数据库产品中叫做 Catalog。
我们用 SHOW 语句查询已经存在的数据库:
1: SHOW DATABASES;
用 USE 语句使用数据库:
1: USE DATABASE_NAME;
创建数据库的语句是:
1: CREATE DATABASE mydatabase;
一个数据库中通常包含若干张表 (tables) ,我们可以通过 SHOW 语句查询一个数据库中的所有表:
1: SHOW TABLES;
查询一张表中的信息,我们可以参考下面例句:
1: SELECT * FROM mytablename;
1: CREATE TABLE pet (name VARCHAR(20), owner VARCHAR(20), species VARCHAR(20), sex CHAR(1), birth DATE, death DATE);
我们可以利用 DESCRIBE 语句检查表项:
1: DESCRIBE pet;
创建了一个表之后,我们就要往表中填入数据了,我们使用 INSERT 语句:
1: INSERT INTO pet VALUES ('Puffball','Diane','hamster','f','1999-03-30',NULL);此外我们还可以使用 LOAD DATA 语句将大量数据录入数据库:
1: LOAD DATA LOCAL INFILE '/path/pet.txt' INTO TABLE pet LINES TERMINATED BY '/r/n';
4、数据库的查询
对数据库的查询,首先我们得指明使用的数据库,用 USE 语句。
查询语句是 SELECT ,基本格式为:
SELECT what_to_select FROM which_table WHERE conditions_to_satisfy;
4.1 查询全部
1: SELECT * FROM PET;
4.2 条件查询
1: SELECT * FROM pet WHERE name='andy';
1: SELECT * FROM pet WHERE birth>='1993-2-4' AND birth<='1995-5-5';
4.4 查询特定的列
1: SELECT name,birth FROM pet;
4.5 得到不重复数据
1: SELECT DISTINCT owner FROM pet;
4.6 排序查询
1: SELECT name, birth FROM pet ORDER BY birth;
1: SELECT name, birth FROM pet ORDER BY birth DESC;
4.7 日期计算查询
1: SELECT name, birth, CURDATE(), (YEAR(CURDATE())-YEAR(birth))- (RIGHT(CURDATE(),5)<RIGHT(birth,5)) AS age FROM pet ORDER BY age DESC;
4.8 非空查询
1: SELECT * FROM pet WHERE death IS NOT NULL;
4.9 空值查询
1: SELECT * FROM pet WHERE death IS NULL;
4.10 匹配查询
1: SELECT * FROM pet WHERE name LIKE '%fy';
‘.’ matches any single character. |
A character class ‘[...]’ matches any character within the brackets. For example, ‘[abc]’ |
‘*’ matches zero or more instances of the thing preceding it. For example, ‘x*’ matches any |
A REGEXP pattern match succeeds if the pattern matches anywhere in the value being tested. |
To anchor a pattern so that it must match the beginning or end of the value being tested, use ‘^’ |
4.11 正则表达式查询
1: SELECT * FROM pet WHERE name REGEXP 'w';
4.12 计数查询
1: SELECT species, COUNT(*) FROM pet GROUP BY species;
1: SELECT species, sex, COUNT(*) FROM pet GROUP BY species, sex;
4.13 删除记录
1: DELETE FROM pet WHERE name="andy";
4.14 创建外键
1: FOREIGN KEY (species) REFERENCES category(sepcies);
4.15 查询部分数据
1: SELECT * FROM pet LIMITE 3,2;从第三条后面数两条。o(╯□╰)o
1: CREATE TABLE blog
2: (
3: id INT PRIMARY KEY AUTO_INCREMENT,
4: title VARCHAR(50)
5: );
1: INSERT INTO blog VALUES (null,"cds");
5、MySQL 中的时间处理
5.1 得到当前时间
1: SELECT NOW();
5.2 日期格式
1: SELECT DATE_FORMAT(NOW(),'%Y-%m-%d %H:%i:%s');