学习使用以下操作:
- 创建数据
- 创建表
- 导入或插入数据
- 通过各种方式从表中检索数据
- 使用复杂的表
查看当前服务器中的数据库:
SHOW DATABASES;
使用数据库(USE和quit一样可以不用在语句末尾加分号):
USE world
给账号分配使用数据库的权限(这句我不是很懂):
GRANT ALL ON menagerie.* TO 'your_mysql_name'@'your_client_host';
your_mysql_name(分配给你的MySQL用户名)、your_client_host(所连接的服务器所在的主机)
创建数据库:
CREATE DATABASE menagerie;
在Unix系统中,数据库对除了关键字外的其他值大小写敏感,所以menagerie不等于Menagerie或MENAGERIE,而在windows系统中,则没有大小写的限制。为了适应不同环境下的数据库,我们应保持大小写一致,以免出错。
menagerie数据库创建成功:
使用数据库:
USE menagerie
登陆时直接连接相应的数据库:
mysql -h host -u user -p menagerie
显示当前连接的数据库:
SELECT DATABASE();
显示当前数据库中的表:
SHOW TABLES;
确认你要创建的表所需要存储的信息内容,尽量存储一些固定不常变动的内容,比如我们可以用出生日期代替年龄,这样不必经常更新数据库,mysql数据库同时还提供了一些函数以供计算。
创建表:
CREATE TABLE pet (name VARCHAR(20), owner VARCHAR(20), species VARCHAR(20), sex CHAR(1), birth DATE, death DATE);
语句太长也可换行。
查看创建的表:
DESCRIBE pet;
我们创建的表为空表,插入信息最快的方法是导入数据。
menagerie.txt文件中的数据,列之间用tab键分隔,如果数据为\N代表数据库中的null:
Whistler Gwen bird \N 1997-12-09 \N
将txt文件的内容导入数据库:
LOAD DATA LOCAL INFILE 'D:/menagerie.txt' INTO TABLE pet;
将txt文件的内容批量导入数据库:
LOAD DATA LOCAL INFILE 'D:/menagerie.txt' INTO TABLE pet
LINES TERMINATED BY '\r\n';
使用sql语句插入数据:
INSERT INTO pet
VALUES ('Puffball','Diane','hamster','f','1999-03-30',NULL);
查询数据库:
SELECT what_to_select
FROM which_table
WHERE conditions_to_satisfy;
what_to_select(要查询的内容)、which_table(查询的表)、conditions_to_satisfy(查询的条件)
查询表中所有数据:
SELECT * FROM pet;
修改数据:
UPDATE pet SET birth = '1989-08-31' WHERE name = 'Bowser';
删除整个表中的数据:
DELETE FROM pet;
误删后如果有txt备份可重新导入数据进行恢复。
获得特定的数据:
SELECT * FROM pet WHERE name = 'Bowser';
SELECT * FROM pet WHERE birth >= '1998-1-1';
SELECT * FROM pet WHERE species = 'dog' AND sex = 'f';
SELECT * FROM pet WHERE species = 'snake' OR species = 'bird';
SELECT * FROM pet WHERE (species = 'cat' AND sex = 'm')
OR (species = 'dog' AND sex = 'f');
查询条件可以用AND或者OR连接,AND的优先级高于OR,但将一组查询条件用括号包裹起来仍然是一个好习惯。
查询特定的列:
SELECT name, birth FROM pet;
查询不重复的列,使用关键字DISTINCT :
SELECT owner FROM pet;
SELECT DISTINCT owner FROM pet;
将列和行查询条件组合起来进行查询:
SELECT name, species, birth FROM pet
WHERE species = 'dog' OR species = 'cat';
根据某列的值对输出的行数据排序:
SELECT name, birth FROM pet ORDER BY birth;
根据某列的值对输出的行数据进行降序排列:
SELECT name, birth FROM pet ORDER BY birth DESC;
根据2列的值进行排序:
SELECT name, species, birth FROM pet
ORDER BY species, birth DESC;
根据当前时间和出生日期计算年龄,并将表输出在屏幕上:
SELECT name, birth, CURDATE(),
TIMESTAMPDIFF(YEAR,birth,CURDATE()) AS age
FROM pet;
按照年龄顺序排列:
SELECT name, birth, CURDATE(),
TIMESTAMPDIFF(YEAR,birth,CURDATE()) AS age
FROM pet ORDER BY age;
排除出生日期为空的并排序:
SELECT name, birth, CURDATE(),
TIMESTAMPDIFF(YEAR,birth,CURDATE()) AS age
FROM pet WHERE birth IS NOT NULL ORDER BY age;
MONTH()计算出月份:
SELECT name, birth, MONTH(birth) FROM pet;
根据计算出的月份进行筛选:
SELECT name, birth FROM pet WHERE MONTH(birth) = 5;
未完待续……(练习简直太长了呀~~)
参考:
- http://dev.mysql.com/doc/refman/5.7/en/database-use.html