数据库的查询

 

关键字的输入不区分大小写,下面这几种情况是等效的

mysql> SELECT VERSION(), CURRENT_DATE;

mysql> select version(), current_date;

mysql> SeLeCt vErSiOn(), current_DATE;

如果您决定不执行正在进入的查询,请通过输入 \c 取消它:

mysql> SELECT

    -> USER()

    -> \c

mysql>

mysql>

准备接受新的查询

->

等待多行查询的下一行

'>

等待下一行,等待以一个引号开始的字符串完成。

">

等待下一行,等待以双引号开始的字符串的完成(")

`>

等待下一行,等待以双引号开始的字符串的完成(`)

/*>

等待下一行,等待以*开始的注释完成

 

使用show语句查找服务器上当前存在的数据库mysql> show databases;

访问demo数据库mysql> use demo

use,像quit一样,不需要分号。(如果愿意的话,可以用分号终止这种语句;它没有任何害处)。

 

 

创建和选择一个数据库

创建数据库

mysql> CREATE DATABASE menagerie;

使用数据库

  创建完数据库,如果要使用它,必须得显示的声明。让menagerie成为当前的操作的数据库,用下面这个语句

mysql> USE menagerie

Database changed

您的数据库只需要创建一次,但每次开始MySQL会话时都必须选择它以供使用。您可以通过发布一个use语句来实现这一点,如上示例中所示。或者,也可以在调用mysql时在命令行中选择数据库。只要在您可能需要提供的任何连接参数之后指定它的名称。

shell> mysql -h host -uroot -p menagerie

Enter password: ******

使用select database();查看当前使用的数据库

mysql> select database();

创建表

查看表  使用show tables;查看当前库中的表

mysql> show tables;

 

使用create table 语句来指定表的结构

mysql> CREATE TABLE pet (name VARCHAR(20), owner VARCHAR(20),

    -> species VARCHAR(20), sex CHAR(1), birth DATE, death DATE);

创建表后,show tables 应该产生一些输出:

mysql> SHOW TABLES;

为了验证您的表是按照预期的方式创建的,使用DESCRIBE语句:

mysql> describe pet;

以下依次出现的顺序为:

SELECT

  [FROM table_references

    [WHERE where_condition]

    [GROUP BY {col_name | expr | position}

      [ASC | DESC], ... [WITH ROLLUP]]

    [HAVING where_condition]

    [ORDER BY {col_name | expr | position}

      [ASC | DESC], ...]

    [LIMIT {[offset,] row_count | row_count OFFSET offset}]

往表里加载数据

当您希望每次添加一条新记录时,请使用INSERT语句字符串和日期值在这里指定为引用字符串。

mysql> INSERT INTO pet

    -> VALUES ('Puffball','Diane','hamster','f','1999-03-30',NULL);

往表里检索数据

SELECT

    [FROM table_references

    [WHERE where_condition]

    [GROUP BY {col_name | expr | position}

      [ASC | DESC], ... [WITH ROLLUP]]

    [HAVING where_condition]

    [ORDER BY {col_name | expr | position}

      [ASC | DESC], ...]

    [LIMIT {[offset,] row_count | row_count OFFSET offset}]

数据库的选择、创建、删除和更改

use用于选定一个默认数据库;

create database用于创建数据库;

drop database用于删除数据库;

alter database用于更改数据库的全局属性。

选择数据库:use db_name

创建数据库:create databas db_name

删除数据库 DROP DATABASE db_name

更改数据库 ALTER DATABASE

索引

ALTER TABLE tb1_name ADD INDEX index_name(index_columns);

ALTER TABLE tb1_name ADD UNIQUE index_name(index_columns);

ALTER TABLE tb1_name ADD PRIMARY KEY (index_columns);

ALTER TABLE tb1_name ADD FULLTEXT index_name(index_columns);

ALTER TABLE tb1_name ADD SPATIAL index_name(index_columns);

PRIMARY KEY或UNIQUE索引。这两种索引很相似,主要区别为:

1,每个表只能包含一个primary key。因为primary key的名字总是为primary,而同一个表不允许有两个同名的索引。可以在一个表里放置多个unique索引。

2,primary key不可以包含null值,而unique索引可以。如果某个unique索引包含了null值,那么它就可以包含多个null值。这是因为null值不会与任何值相等,甚至与另一个null值也一样不相等。

 

SELECT语句的基本语法,如下所示:

SELECT select_list                    #所选择的的列

FROM table_list                       #要查询的那些表

WHERE row_constraint                  #行必须满足的条件

GROUP BY grouping_columns             #结果如何分组

ORDER BY sorting_columns              #结果如何排序

HAVING group_constraint               #分组必须满足的条件

LIMIT count;                          #限制结果里的行数

内连接t1里的每一行将于t2里的每一行进行组合 

select * from t1 inner join t2;  或者

select t1.*,t2.* from t1 inner join t2;

根据某个表里的每一行与另一个表里的每一行得到全部可能组合的连接操作,叫做生成笛卡尔积(cartesian product)。

 

限制笛卡尔积,使用where子句 select * from t1 inner join t2 where t1.i1=t2.i2;

连接类型cross join和join都等同于inner join

内连接只会显示在两个表里都匹配上的行。外连接除了显示同样的匹配结果,还可以吧其中一个表在另一个表里没有匹配的行业显示出来。外链接分为左连接和右连接两种。

左连接:

对于左表查询出的每一行,不管它在右表里是否有匹配,left join都会强制结果集包含一行记录。在结果集里,对于在右表里没有匹配的结果行,它们会有一个特征,即来自右表的所有列都为null。

 select * from t1 inner join t2 where t1.i1=t2.i2;

 select * from t1 left join t2 on t1.i1=t2.i2;

 

 

 

猜你喜欢

转载自blog.csdn.net/niuniu_666/article/details/81120990