使用mysql创建和使用数据库

原创
2016/08/29 17:55
阅读数 134

学习使用以下操作:

  • 创建数据
  • 创建表
  • 导入或插入数据
  • 通过各种方式从表中检索数据
  • 使用复杂的表

查看当前服务器中的数据库:

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;

未完待续……(练习简直太长了呀~~)

 

参考:

  1. http://dev.mysql.com/doc/refman/5.7/en/database-use.html
展开阅读全文
打赏
0
4 收藏
分享
加载中
更多评论
打赏
0 评论
4 收藏
0
分享
返回顶部
顶部