目录
一、连接和断开服务器
1.连接
$> mysql -h host -u user -p
Enter password: ********
host
并 user
表示你的 MySQL 服务器正在运行的主机名和您的 MySQL 帐户的用户名。
连接成功的话,你就可以看到图上的信息啦;接下来你就可以输入SQL语句。
2.断开连接
成功连接后,可以随时通过在提示符 处键入QUIT
(或\q
)断开连接
mysql> QUIT
Bye
二、简单的查询
1.查询服务器的版本号和当前日期
mysql> SELECT VERSION(), CURRENT_DATE;
每个人的服务器版本号是不一样的,可以康康我的
通过这个查询我们来总结有关mysql的小小知识点
查询通常由一个 SQL 语句和一个分号组成。(有一些例外情况可能会省略分号。
QUIT
前面提到过 )当您发出查询时,mysql将其发送到服务器执行并显示结果,然后打印另一个
mysql>
提示以指示它已准备好进行另一个查询。mysql以表格形式(行和列)显示查询输出。第一行包含列的标签。以下行是查询结果。通常,列标签是您从数据库表中获取的列的名称。如果您正在检索表达式而不是表列的值(如刚刚显示的示例中所示),mysql使用表达式本身标记列。
mysql显示返回了多少行以及查询执行了多长时间,大致了解服务器性能。这些值是不精确的,因为它们代表挂钟时间(不是 CPU 或机器时间),并且因为它们受服务器负载和网络延迟等因素的影响。
注意:
关键字可以以任何字母大小写输入。
mysql> SELECT VERSION(), CURRENT_DATE;
mysql> select version(), current_date;
mysql> SeLeCt vErSiOn(), current_DATE;
这三条语句都是一样的喔!
我们再来看一个例子: mysql用作简单的计算器
2.取消命令
如果你决定不想执行正在输入的查询,键入以下命令取消它 \c
:
取消命令之后,可以接着输入其他命令。
三、创建和使用数据库
1.使用使用SHOW语句找出服务器上当前存在哪些数据库
mysql> SHOW DATABASES;
2.访问已有的数据库
mysql> USE mysql
Database changed
注意:use语句可以不要分号哦【;】
use语句必须在一行中给出
3.创建一个数据库
mysql> CREATE DATABASE happy;
!!数据库的名称是区分大小写的
4.使用数据库
mysql> USE happy
Database changed
四、创建表
1.查看数据库
mysql> SHOW TABLES;
Empty set (0.00 sec)
可以看到这个数据库此时是空的哦。
2. CREATE TABLE语句来指定表格的布局
mysql> CREATE TABLE pet (name VARCHAR(20), owner VARCHAR(20),
species VARCHAR(20), sex CHAR(1), birth DATE, death DATE);
这是一个pet表,包括了动物的姓名、所有者、物种、性别、出生和死亡。
3.SHOW TABLES显示创建的表
mysql> SHOW TABLES;
4.DESCRIBE查看表中的内容
mysql> DESCRIBE pet;
小小总结一夏*~*
下面这张图展示了创建和选择数据库以及创建表、查看表的全过程
五、将数据加载到表中
方法一:文本文件加载pet.txt
到 pet
表中
①先把表中的数据写入文本文件pet.txt中;
②将文本文件加载pet.txt
到 pet
表中
mysql> LOAD DATA LOCAL INFILE '/path/pet.txt' INTO TABLE pet;
方法二:使用INSERT语句每次添加一条信息
假如:小杨得到了一只名为“奥利奥”的猫,可以按照表中的格式输入以下命令
mysql> INSERT INTO pet VALUES ('aoliao','xiaoyang','cat','f','2022-07-11',NULL);
六、从表中检索信息(表的增、删、改、查)
1.使用SELECT语句从表中提取信息
一般形式:
SELECT what_to_select
FROM which_table
WHERE conditions_to_satisfy;
what_to_select
表示你想看到什么。这可以是列列表,也*
可以表示“所有列”。”
which_table
表示要从中检索数据的表。该WHERE
子句是可选的。如果存在,
conditions_to_satisfy
则指定行必须满足才能有资格检索的一个或多个条件。
2.选择所有数据
SELECT从表中检索所有内容 的最简单形式:
mysql> SELECT * FROM pet;
*表示所有列的简写
3.修改表中错误信息
mysql> UPDATE pet SET birth = '2022-06-06' WHERE name = 'xuewa';
可以看到名字为xuewa的猫的生日被改为了2022-06-06.
4.选择特定行
1.选择在 2002年期间或之后出生的动物
mysql> SELECT * FROM pet WHERE birth >= '2002-01-01';
2.使用AND逻辑运算符和OR运算符
AND并且 OR可以混合使用,尽管 AND优先级高于 OR. 如果您同时使用这两个运算符,最好使用括号来明确指示应如何对条件进行分组
mysql> SELECT * FROM pet WHERE species = 'dog' OR species = 'bird';
5.选择特定列
不想查看表中的整行,只需命名您感兴趣的列,用逗号分隔
mysql> SELECT name, birth FROM pet;
只查看姓名和生日这两列。
1.DISTINCT关键字
最小化输出,只需通过添加关键字检索每个唯一的输出记录一次 DISTINCT。
mysql> SELECT DISTINCT owner FROM pet;
2.使用WHERE
子句将行选择与列选择结合起来
mysql> SELECT name, species, birth FROM pet
WHERE species = 'dog' OR species = 'cat';
6.排序行
1.使用ORDER BY
子句对结果进行排序
mysql> SELECT name, birth FROM pet ORDER BY birth;
2. DESC关键字
默认排序的顺序是升序,如果需要降序,需要用到DESC关键字
mysql> SELECT name, birth FROM pet ORDER BY birth DESC;
DESC
关键字仅适用于紧接在其前面的列名 ( ) birth
;它不影响species
列排序顺序。
七、日期计算
MySQL 提供了几个函数,您可以使用它们来执行日期计算
1.计算每个宠物的年龄,使用TIMESTAMPDIFF()功能。它的参数是你想要表达结果的单位,以及取差的两个日期。
mysql> SELECT name, birth, CURDATE(),
TIMESTAMPDIFF(YEAR,birth,CURDATE()) AS age
FROM pet;
TIMESTAMPDIFF()函数解析
第一个参数:表示结果的单位,这里的单位是year;
第二、三个参数:取差的两个日期【eg:birth;CURDATE()】(以年为单位)DATE
CURDATE表示当前的日期。
八、计数行
1.使用COUNT(*)计算行数
mysql> SELECT COUNT(*) FROM pet;
2.COUNT(*)与GROUP BY的结合使用
mysql> SELECT species, COUNT(*) FROM pet GROUP BY species;
上面显示了每个物种的动物数量
九、使用多个表
该
pet
表会记录您拥有的宠物。如果您想记录有关它们的其他信息,例如它们生活中的事件,例如去看兽医或产仔时,您需要另一张表。这一张表包括:
宠物名称,以便您知道每个事件与哪种动物有关。
一个日期,以便您知道事件发生的时间。
描述事件的字段。
一个事件类型字段,如果您希望能够对事件进行分类。
mysql> CREATE TABLE event (name VARCHAR(20), date DATE,
type VARCHAR(15), remark VARCHAR(255));
建表
mysql> INSERT INTO event VALUES('aoliao','2022-07-11','shouyi','jiaoduanle');
mysql> INSERT INTO event VALUES('xuewa','2022-07-11','chanzai','4cat,3f,1m');
mysql> INSERT INTO event VALUES('111111','2010-01-01','chanzai','5dog,2f,3m');
mysql> INSERT INTO event VALUES('222222','2020-02-02','chanzai','3bird,3f');
假设您想了解每只宠物的产仔年龄。我们之前看到了如何从两个日期计算年龄。母亲的产仔日期在
event
表中,但要计算她在该日期的年龄,您需要她的出生日期,该日期存储在pet
表中。这意味着查询需要两个表:
mysql> SELECT pet.name,
TIMESTAMPDIFF(YEAR,birth,date) AS age,
remark
FROM pet INNER JOIN event
ON pet.name = event.name
WHERE event.type = 'litter';
使用多个表查询的注意点
用FROM
子句连接两个表,因为查询需要从这两个表中提取信息。当组合(连接)来自多个表的信息时,需要指定一个表中的记录如何与另一个表中的记录匹配。这很容易,因为它们都有一
name
列。该查询使用ON
子句根据name
值匹配两个表中的记录。该查询使用 an
INNER JOIN
来组合表。当且仅当两个表都满足子句中指定的INNER JOIN
条件时,才允许任一表中的行出现在结果中 。
ON
在此示例中,ON
子句指定 表中的name
列pet
必须与表中的name
列 匹配event
。如果名称出现在一个表中而另一个表中未出现,则该行不会出现在结果中,因为ON
子句中的条件失败。因为
name
列出现在两个表中,所以在引用该列时,必须具体说明您指的是哪个表。这是通过将表名添加到列名来完成的。