MySQL 笔记

下面是阅读 MySQL 5.0 Reference Manual 第三章 Tutorial 的笔记。o(╯□╰)o,不记下来容易忘。

1、与服务器的连接与断开

与数据库服务器的连接通常需要提供一个用户名(user name)、密码(password),如果不是在数据库服务器所在的电脑上面登录的,还需要提供一个服务器主机地址(host name)。登录的方式如下:

shell>mysql -h hostname -u username -p

Enter 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;
 
创建一个表的语句就比较麻烦了,好在现在我们有一些工具可以利用,如 PowerDesigner 和 MySQL Workbench ,但是建表语句还是得掌握的:
   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';
4.3 时间段条件查询
   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 ‘a’, ‘b’, or ‘c’. To name a range of characters, use a dash. ‘[a-z]’ matches any letter,
whereas ‘[0-9]’ matches any digit.

‘*’ matches zero or more instances of the thing preceding it. For example, ‘x*’ matches any
number of ‘x’ characters, ‘[0-9]*’ matches any number of digits, and ‘.*’ matches any number
of anything.

A REGEXP pattern match succeeds if the pattern matches anywhere in the value being tested.
(This differs from a LIKE pattern match, which succeeds only if the pattern matches the entire
value.)

To anchor a pattern so that it must match the beginning or end of the value being tested, use ‘^’
at the beginning or ‘$’ at the end of the pattern.

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
 
4.16 自动递增
   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');
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值