mysql基本操作


显示当前存在的数据库:

show databases;

database

information_schema

mysql

performance_schema


创建数据库

create database user;

注意:在Unix下,数据库名称是区分大小写的(不像SQL关键字),因此你必须总是以test访问数据库,而不能用Test、TEST或其它一些变量。对表名也是这样的。(在Windows下,该限制不适用,尽管你必须在一个给定的查询中使用同样的大小写来引用数据库和表。但是,由于多种原因,作为最好的惯例,一定要使用与数据库创建时的同样的大小写。)


指定当前使用的数据库

use ouyangjun;


查询当前使用的数据库

select database();


创建表

create table pet(

name varchar(20),

owner varchar(20),

species varchar(20),

sex char(1),

birth DATE,

death DATE

)


查看该数据库的表

show tables;


查看某一张表的结构

desc pet;


查看详细的创建表的sql语句

show create table pet;


将数据加载到表中

(1)通过load data

load data local infile '/home/shiyanlou/data.txt' into table pet;

(2)通过insert

insert into pet value('peffball','Diane','hamster','f','1999-03-30',NULL);


从表中检索所有记录的最简单方式是使用SELECT语句:

mysql> SELECT * FROM pet;

有可能你想到Bowser的生日看起来不太对。经过查询,你发现正确的出生年份是1989,而不是1979。

那么现在至少有两种修正方法:

编辑文件“pet.txt”改正错误,然后使用DELETE和LOAD DATA清空并重新加载表:

mysql> DELETE FROM pet;

mysql> LOAD DATA LOCAL INFILE 'pet.txt' INTO TABLE pet;

然而, 在这样操作之前,需要重新输入Puffball记录。


用一个UPDATE语句就可以修正错误记录:

mysql> UPDATE pet SET birth = '1989-08-31' WHERE name = 'Bowser';

UPDATE只更改有问题的记录,并且不需要重新加载数据库表。


选择特殊行

一般情况下你不想检索整个表的内容,特别地当表变得很大时。相反,你通常对解决一个具体的问题更感兴趣,在这种情况下在你需要添加一些限制条件:

可以从表中只选择特定的行。

例如,如果你想要验证你对Bowser的生日所做的更改是否正确或者生效,按下述方法选择Bowser的记录:

mysql> SELECT * FROM pet WHERE name = 'Bowser';


输出证实正确的年份记录为1989,而不是1979。

字符串比较时通常对大小写不敏感,因此你可以将名字指定为"bowser"、"BOWSER"等,查询结果相同。

你可以在任何列上指定条件,不只仅仅是name。例如,如果你想要知道哪个动物在1998以后出生的,尝试筛选birth列:

mysql> SELECT * FROM pet WHERE birth > '1998-1-1';


还可以使用AND语句组合筛选条件,例如,找出雌性的狗:

mysql> SELECT * FROM pet WHERE species = 'dog' AND sex = 'f';


有AND逻辑操作符,那么就有一个OR操作符:

mysql> SELECT * FROM pet WHERE species = 'snake' OR species = 'bird';


AND和OR可以混用,但AND比OR具有更高的优先级。如果你使用两个操作符,最好是使用圆括号指明如何按条件分组:

mysql> SELECT * FROM pet WHERE (species = 'cat' AND sex = 'm')

    -> OR (species = 'dog' AND sex = 'f');


选择特殊列


如果你不想看到表中的所有行,就需要指明你感兴趣的列名称,并用逗号将列名分开。

例如,如果你想要知道你的动物什么时候出生的,选择name和birth列:

mysql> SELECT name, birth FROM pet;


找出拥有宠物的所有人,可以使用以下个查询:

mysql> SELECT owner FROM pet;


请注意该查询只是简单地检索每个记录的owner列,但是他们有些名字出现多次。为了使输出减到最少(避免重复),增加关键字DISTINCT检索出每条唯一的输出记录:

mysql> SELECT DISTINCT owner FROM pet;


可以使用一个WHERE子句同时进行行选择与列选择。例如,要想查询狗和猫的出生日期,使用以下查询:

mysql> SELECT name, species, birth FROM pet

    -> WHERE species = 'dog' OR species = 'cat';


行分类

你可能已经注意到前面的例子中行并没有以特定的顺序显示。然而,当行按某种方式排序时,检查查询输出的时候通常变得相对简单一点。为了给结果排序,使用ORDER BY子句。 这里是对动物生日按日期排序:

mysql> SELECT name, birth FROM pet ORDER BY birth;


由于字符串类型的数据对大小写并不敏感。这意味着,对于大小写不同其他都一样的列,排序后的结果都不会更改。这种情况下,可以使用BINARY强制执行区分大小写的排序功能,


如:ORDER BY BINARY col_name。


默认排序是升序,也就是最小的值排在第一。要想以降序排序,在你正在排序的列名旁边增加DESC(降序 )关键字:

mysql> SELECT name, birth FROM pet ORDER BY birth DESC;


可以对多个列进行排序,并且可以按不同的方向对不同的列进行排序。例如,按升序对动物的种类进行排序,然后按降序根据生日对各动物种类进行排序(最年轻的动物在最前面),使用下列查询:


mysql> SELECT name, species, birth FROM pet

    -> ORDER BY species, birth DESC;

注意DESC关键字仅适用于在它前面的列名(birth);不影响pecies列的排序顺序。