mysql连接和断开

  mysql -h host -u user -p********   /*建议不要在命令行中输入密码,因为这样做会使其暴露给在您的计算机上登录的其他用户窥探*/
mysql -u user -p******** /*登陆自己主机上的服务器*/
mysql /*允许匿名访问*/

host:主机名

user:用户名

****:密码

出现:ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)就是服务器没开

断开输入quit 或者\q

输入查询

  mysql>SELECT VERSION();            /*查询版本号*/
mysql>SELECT CURRENT_DATE; /*查询时间*/

关键字不区分大小写

mysql 通过查找终止分号来确定语句的结束位置,而不是查找输入行的结尾

/c中断

创建和使用数据库

查询当前存在的数据库

  mysql>show databases;
Database changed

如果您没有该 SHOW DATABASES 权限 ,则不会显示您没有权限的数据库 。

创建一个数据库

  mysql>create database mytest;          /*数据库名字区分大小写mytest和MYTEST不一样*/

如果出现 ERROR 1044 (42000): Access denied for user 'micah'@'localhost' to database 'menagerie' 说明你没有权限区创建一个数据库

选择一个数据库来使用

  mysql>use test      /*假设计算机存在test数据库*/

当然也可以在调用命令行时选择要使用的数据库,如下

  mysql -h host -u user -p mytest********

可以随时查看当前选择使用哪个数据库

  mysql>SELECT DATABASE();

创建表

创建表后,可以查看数据库中有几个表

  mysql>show tables;

使用 CREATE TABLE 语句指定表的布局:

  mysql>create table pet (name VARCHAR(20), owner VARCHAR(20),
mysql>species VARCHAR(20), sex CHAR(1), birth DATE, death DATE);

查看表的格式,可以使用DESCRIBE语句:

  mysql>DESCRIBE pet;
+---------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+---------+-------------+------+-----+---------+-------+
| name | varchar(20) | YES | | NULL | |
| owner | varchar(20) | YES | | NULL | |
| species | varchar(20) | YES | | NULL | |
| sex | char(1) | YES | | NULL | |
| birth | date | YES | | NULL | |
| death | date | YES | | NULL | |
+---------+-------------+------+-----+---------+-------+

把数据加载到表中

  1. 创建一个文本文件 pet.txt ,每行包含一个记录,其值由制表符(tab)分隔,并按照 CREATE TABLE 语句 中列出的顺序给出 。 对于缺失值(例如未知性别或仍然生活的动物的死亡日期),使用 NULL 值。 要在文本文件中表示这些,请使用 \N 反斜杠,大写N(用表格记录宠物们的状况)

    文本文件格式

    xiaohong xiaoniao bird \N 1997-12-09 \N

要将文本文件pet.txt加载到pet表中,如下。

  mysql> load data local infile '/path/pet.txt' INTO TABLE pet;(linux环境,windows环境可能会出问题)

如果在linux下还是失败了,则可能是默认情况下MySQL未启用本地文件功能

  1. 如果要一次添加一条新记录,可以用INSERT

假设xiaoming得到了一只名为 “ xiaohong ” 的新小狗 。

  mysql> insert into pet
values ('xiaoming','xiaohong','dog','f','1999-03-30',NULL);

字符串和日期值在此处指定为带引号的字符串。 此外, INSERT 可以 NULL 直接 插入 以表示缺失值。

从表中检索信息

select语句用于从表中提取信息。语句的一般形式为:

SELECT what_to_select /指示您要查看的内容。这可以是列的列表,也可以是表示“所有列”。/

FROM which_table /
指示从哪个表里面检索数据/

WHERE conditions_to_satisfy /
需要满足什么条件*/

选择数据

最简单的形式 SELECT 从表 中 检索所有内容:

  mysql> SELECT * FROM pet;

  mysql> SELECT * FROM pet;
+----------+--------+---------+------+------------+------------+
| name | owner | species | sex | birth | death |
+----------+--------+---------+------+------------+------------+
| Fluffy | Harold | cat | f | 1993-02-04 | NULL |
| Claws | Gwen | cat | m | 1994-03-17 | NULL |
| Buffy | Harold | dog | f | 1989-05-13 | NULL |
| Fang | Benny | dog | m | 1990-08-27 | NULL |

如果发现有错误

  1. 编辑文件 pet.txt 以更正错误,然后清空表并使用 DELETE 和 重新加载它 LOAD DATA

    mysql> delete from pet

    mysql>load data local infile 'pet.txt' INTO TABLE pet;

  2. 使用UPDATE语句仅修复错误的记录

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

  3. 选择特定行

    mysql>select * from pet where name = 'Bowser';

    可以在任何列上指定条件,而不仅仅是 name

    mysql>select * from pet where birth >= '1998-1-1';

    也可以结合条件来定位雌性狗

    mysql>select * from pet where species = 'dog' and sex = 'f';

    有and就有or

    mysql>select * from pet where species = 'dog' or species = 'snake';

    AND 和 OR 可以混合,但 AND 优先级高于 OR 。 如果同时使用这两个运算符,最好使用括号明确指出条件应如何分组

    mysql>select * from pet where (species = 'cat' AND sex = 'm')

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

  4. 选择特定列

    mysql>SELECT name, birth FROM pet;

    要找出谁拥有宠物,

    mysql>SELECT owner FROM pet;

    加关键字检索每个唯一的输出记录一次 DISTINCT

    mysql>SELECT DISTINCT owner FROM pet;

    可以使用 WHERE 子句将行选择与列选择组合在一起,例如,要仅获取狗和猫的出生日期,请使用以下查询

    mysql>SELECT birth from pet where pieces = 'dog' or pieces = 'cat';

  5. 排序行

    mysql>select name, birth from pet order by birth; //升序排列

    mysql>select name,birth from pet order by birth DESC; //降序排列

    可以对多个列进行排序,并且可以按不同方向对不同列进行排序。 例如,要按动物类型按升序排序,然后按动物类型中的出生日期按降序排序(同种动物最年轻的动物首先)

    mysql>select name ,birth from pet order by speces ,birth desc;

日期计算

TIMESTAMPDIFF() 它的参数是你想要表达结果的单位,以及两个可以取得差异的日期。例子显示了每只宠物的出生日期,当前日期和年龄。 一个 别名age是用来制造最终输出列标签

  mysql> SELECT name, birth, CURDATE(),TIMESTAMPDIFF(YEAR,birth,CURDATE()) AS age
FROM pet;

还可以通过添加一个 ORDER BY 子句来对输出进行排序

  mysql>SELECT name, birth, CURDATE(),TIMESTAMPDIFF(YEAR,birth,CURDATE()) AS age
FROM pet
ORDER BY name;

可以使用类似的查询来确定已经死亡的动物的死亡年龄。您可以通过检查死亡值是否为NULL来确定这些动物是哪些。然后,对于那些具有非NULL值的人,计算有生之年:

  mysql:SELECT name, birth, death,TIMESTAMPDIFF(YEAR,birth,death) AS age
FROM pet
WHERE death IS NOT NULL
ORDER BY age;

MySQL提供了用于提取日期的部分,如一些功能 YEAR() , MONTH() 和 DAYOFMONTH()

  mysql>SELECT name, birth, MONTH(birth) FROM pet;

查看下个月生日的宠物(今天是1.27)

  mysql>SELECT name ,birth FROM pet WHERE MONTH(birth) = 2;

当然也可以在使用模函数(MOD)将月份值包装为0(如果当前值为12)之后,将当前月份后的下个月加1,以得到下个月:

  myql>SELECT name, birth FROM petWHERE MONTH(birth) = MOD(MONTH(CURDATE()), 12) + 1;

NULL值的使用

  测试NULL请使用 IS NULL 和 IS NOT NULL 运算符

模式匹配

SQL模式匹配使您可以使用 _ 匹配任何单个字符并 % 匹配任意数量的字符(包括零个字符)。 在MySQL中,SQL模式默认情况下不区分大小写。

要查找以 b 下列 开头的名称

  SELECT * FROM pet where name LIKE 'b%';

要查找以以下结尾的名称 fy

  SELECT * FROM pet where name LIKE '%fy';

要查找包含名称 w

  SELECT * FROM pet where name LIKE '%w%';

要查找包含五个字符的名称

  SELECT * FROM pet where name LIKE '_____';

MySQL提供的另一种模式匹配使用扩展的正则表达式

MySQL提供的另一种模式匹配使用扩展的正则表达式。在测试此类型的模式是否匹配时,请使用REGEXP_LIKE()函数(或REGEXP或RLIKE运算符,它们是REGEXP_LIKE()的同义词)。

* . 匹配任何单个字符。

* 字符类 [...] 匹配括号内的任何字符。 例如, [abc] 匹配 a , b 或 c 。 要命名一系列字符,请使用短划线。 [a-z] 匹配任何字母,而 [0-9] 匹配任何个位数。

* * 匹配前面事物的零个或多个实例。 例如, a* 匹配任意数量的 a 字符, [0-9]* 匹配任意数量的数字,并 .* 匹配任意数量的任何数字。

* 如果模式匹配正在测试的值中的任何位置,则正则表达式模式匹配成功。 (这与 LIKE 模式匹配 不同, 模式匹配仅在模式与整个值匹配时才会成功。)

* 要锚定模式以使其必须与要测试的值的开头或结尾匹配,请使用模式 ^ 的开头或 $ 结尾。

要查找 以b开头的名称

  mysql>SELECT * FROM pet WHERE REGEXP_LIKE(name, '^b');

要强制将正则表达式比较区分大小写,请使用区分大小写的排序规则,或使用 BINARY 关键字使其中一个字符串成为二进制字符串,或指定 c 匹配控制字符。 这些查询中的b 仅匹配小写 :

SELECT * FROM pet WHERE REGEXP_LIKE(name,'^ b'COLLATE utf8mb4_0900_as_cs);

SELECT * FROM pet WHERE REGEXP_LIKE(name,BINARY'^ b');

SELECT * FROM pet WHERE REGEXP_LIKE(name,'^ b','c');

要查找以fy结尾的名称

  mysql>SELECT * FROM pet WHERE REGEXP_LINE(name.'fy$');

要查找包含a的名称

  mysql>SELECT * FROM pet WHERE REGEXP_LINE(name.'a');

要查找包含五个字符的名称

  mysql>SELECT * FROM pet WHERE REGEXP_LINE(name.'^.....$');

计数行

如果想知道拥有多少只宠物,或者每个所有者拥有多少只宠物,或者您可能进行动物普查操作。COUNT(*)计算行数,因此用于计算动物数量的查询如下所示:

  mysql>SELECT COUNT(*) FROM pet;

如果您想知道每个主人有多少宠物,GROUP BY 对每个记录进行分组 owner

  mysql>SELECT owner , COUNT(*) FROM pet GROUP BY owner;

动物普查

  mysql>SELECT species, COUNT(*) FROM pet GROUP BY species;

性别普查

  mysql>SELECT sex, COUNT(*) FROM pet GROUP BY sex;

每种物种和性别组合的动物数量

  mysql>SELECT species, sex, COUNT(*) FROM pet GROUP BY species, sex;

对猫和狗进行人口普查

  mysql>SELECT species, sex, COUNT(*)
FROM pet
WHERE species = 'dog' OR species = 'cat'
GROUP BY species, sex;

使用多个表

宠物发生的事件event

name date type remark

Fluffy 1995-05-15 litter 4 kittens, 3 female, 1 male

Buffy 1993-06-23 litter 5 puppies, 2 female, 3 male

Buffy 1994-06-19 litter 3 puppies, 3 female

Chirpy 1999-03-21 vet needed beak straightened

Slim 1997-08-03 vet broken rib

Bowser 1991-10-12 kennel

Fang 1991-10-12 kennel

Fang 1998-08-28 birthday Gave him a new chew toy

Claws 1998-03-17 birthday Gave him a new flea collar

  mysql>CREATE TABLE event (name VARCHAR(20), date DATE,type VARCHAR(15), remark VARCHAR(255));

  mysql>load data local infile 'event.txt' into table event;

  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 。

  • 该查询使用a INNER JOIN 来组合表。 一个 INNER JOIN 或者从表许可证行当且仅当两个表满足所规定的条件,以显示在结果 ON 子句。 在这个例子中, ON 子句指定 name 列中的 pet 表必须的匹配 name 列 event 表。 如果名称出现在一个表中但不出现在另一个表中,则该行不会出现在结果中,因为该 ON 子句中 的条件 失败。

  • 由于 name 列出现在两个表中,因此您必须具体说明引用该列时的表。 这是通过将表名添加到列名称来完成的。

无需具有两个不同的表即可执行联接

如pet之间的交配

  mysql>SELECT p1.name, p1.sex, p2.name, p2.sex, p1.species
FROM pet AS p1 INNER JOIN pet AS p2
ON p1.species = p2.species
AND p1.sex = 'f'
AND p1.death IS NULLAND p2.sex = 'm'
AND p2.death IS NULL;

获得有关数据库和表的信息

  SELECT DATABASE();            //展示目前所选的数据库

  SHOW DATABASE();              //列出所有的数据库

  DESCRIBE pet;                 //描述一个表

查询

建立一个商城可能会用到的表

  CREATE TABLE shop (
article INT UNSIGNED DEFAULT '0000' NOT NULL,
dealer CHAR(20) DEFAULT '' NOT NULL,
price DECIMAL(16,2) DEFAULT '0.00' NOT NULL,
PRIMARY KEY(article, dealer));
INSERT INTO shop VALUES
(1,'A',3.45),(1,'B',3.99),(2,'A',10.99),(3,'B',1.45),
(3,'C',1.69),(3,'D',1.25),(4,'D',19.95);

建立表后有以下内容

  SELECT * FROM shop ORDER BY article;

  SELECT * FROM shop ORDER BY article;

+---------+--------+-------+

| article | dealer | price |

+---------+--------+-------+

| 1 | A | 3.45 |

| 1 | B | 3.99 |

| 2 | A | 10.99 |

| 3 | B | 1.45 |

| 3 | C | 1.69 |

| 3 | D | 1.25 |

| 4 | D | 19.95 |

+---------+--------+-------+

最大的项目编号

  select max(article)as article from shop;

查找最贵商品的数量,经销商和价格

  mysql>SELECT article, dealer, price
FROM shop
WHERE price=(SELECT MAX(price) FROM shop);

找到每个编号商品的最高价格。

  SELECT article, MAX(price) AS price
FROM shop
GROUP BY article
ORDER BY article;

对于每篇文章,找到价格最贵的经销商或经销商。

  SELECT article, dealer, price
FROM shop s1
WHERE price=(SELECT MAX(s2.price)
FROM shop s2
WHERE s1.article = s2.article)
ORDER BY article;

mysql创建和使用数据库的更多相关文章

  1. MySQL创建和操作数据库表demo

    [1]建立员工档案表要求字段:员工员工编号,员工姓名,性别,工资,email,入职时间,部门. [2]合理选择数据类型及字段修饰符,要求有NOT NULL,auto_increment, primar ...

  2. MySQL创建和修改数据库语法

    1.创建数据库语法: CREATE {DATABASE | SCHEMA} [IF NOT EXISTS] db_name    [create_specification [, create_spe ...

  3. Mysql创建和删除数据库

    很久没有使用命令行操作Mysql,百度搜罗,重新整理,加强记忆,便于查询. 以下命令均在win7,64位操作系统下,cmd命令行操作: 一.创建1个Mysql 数据库 方法1:1. cmd下输入:my ...

  4. mysql创建表和数据库

    创建数据库,创建数据库表,例子.MySQL语句   1.创建数据库:    创建的代码:create  数据库的代码:database   数据库表名:随便起,只要自己记住就行.test create ...

  5. Python MySQL - 创建/查询/删除数据库

    #coding=utf-8 import mysql.connector import importlib import sys #连接数据库的信息 mydb = mysql.connector.co ...

  6. 【学亮IT手记】mysql创建/查看/切换数据库

    --创建数据库 create database web_test1 CHARACTER set utf8; --切换数据库 use web_test1; --查看当前使用的数据库 select DAT ...

  7. 【转载并整理】mysql 创建用户,数据库

    http://www.jb51.net/article/31850.htm https://www.cnblogs.com/SQL888/p/5748824.html http://www.cnblo ...

  8. mysql创建utf-8字符集数据库

    CREATE DATABASE db_name DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci; CREATE DATABASE 的语法:CREA ...

  9. mysql 创建 mb4 字符集数据库

    create database sina default character set utf8mb4 collate utf8mb4_unicode_ci; show variables like ' ...

随机推荐

  1. Spring(3) --事务,隔离级别,设计模式

    什么是事务?事物的四大特性? 事务是指单个逻辑工作单元执行的一系列操作(ACID),这些操作要么全部执行,要么全部不执行,是不可中断的. (1)原子性(Atomicity)是指事务所有操作是不可中断的 ...

  2. Angular入门到精通系列教程(4)- 开发环境搭建以及入手项目

    1. 本地开发环境搭建 1.1. node.js 1.2. Angular CLI 2. 开发工具 - Visual Studio Code 第一个Anuglar项目 创建第一个anuglar项目 A ...

  3. collection常用功能:

    collection常用功能: Collection是所有单列集合的父接口,因此在collection中定义了单列集合(List)和(Set)通用的一些方法.这些方法可用于操作所有的单列集合,方法如下 ...

  4. 2021升级版微服务教程5—通过IDEA运行多个项目实例「模拟集群」

    2021升级版SpringCloud教程从入门到实战精通「H版&alibaba&链路追踪&日志&事务&锁」 教程全目录「含视频」:https://gitee.c ...

  5. 我的程序员之路:自学Java篇

    序章 时光疾驰,从事IT行业已两年有余. 16年11月开始自学Java,从此开启自学之路,后来实习期自学大数据.python.爬虫等,最终成长为一名平凡的程序员.回首望去,一路上的过往历历在目,有初学 ...

  6. 使用OpenCV进行简单的人像分割与合成

    图像合成 实现思路 通过背景建模的方法,对源图像中的动态人物前景进行分割,再将目标图像作为背景,进行合成操作,获得一个可用的合成影像. 实现步骤如下. 使用BackgroundSubtractorMO ...

  7. 谈谈你不知道的gist

    1.Gist是什么关于Gist的详细介绍,请阅读官方文档About gists,下面只简略介绍部分功能: Gist是一种与其他人共享代码片段和粘贴的简单方法. 当您需要与同事或朋友共享示例代码或技术时 ...

  8. 2021升级版微服务教程7-OpenFeign实战开发和参数调优

    2021升级版SpringCloud教程从入门到实战精通「H版&alibaba&链路追踪&日志&事务&锁」 教程全目录「含视频」:https://gitee.c ...

  9. 【Oracle】10g 11g下载路径

    现在直接点击不能下载了 要经过oracle许可才可以下载 如果嫌麻烦可以用迅雷直接下载密码是这个 一般不会动了 大家也不用帮我找回密码了 每次都改 也很麻烦的用迅雷下就不用密码了 下载也不会卡到最后 ...

  10. 【易筋经】Llinux服务器初始化及常用命令大全

    Llinux服务器初始化及常用命令大全 1.关闭防火墙以及内核安全机制 systemctl stop firewalld systemctl disable firewalld ##永久性关闭 set ...