mysql 相关命令
mysqladmin version
mysqladmin status
mysqlshow -u帐号 -p密码
mysqlshow -u帐号 -p密码 库名
mysql -u帐号 -p密码 -e 'SELECT Host,Db,User From db' mysql
mysqldump --quick mysql | gzip > /root/mysql.gz
mysqladmin create dbtest
gunzip < /root/mysql.gz | mysql dbtest
GRANT ALL ON menagerie.* to '帐号'@'主机';
DESCRIBE PET; 查看表信息
通过文本装载数据
LOAD DATA LOCAL INFILE '/path/pet.txt' INTO TALBE pet ;
注意如果用windows 中的编辑器(使用\r\n做为行的结束符)创建文件,应使用;
LOAD DATA LOCAL INFILE '/path/pet.txt' INTO TABLE pet
LINES TERMINATED BY '\r\n';
INSERT INTO pet VALUES ('Puffball','Diane','hamster','f','1999-03-30',NULL);
SELECT语句用来从数据表中检索信息。语句的一般格式是:
SELECT what_to_select
FROM which_table
WHERE conditions_to_satisfy;
UPDATE pet SET birth = '2013-06-20' WHERE name = 'Bowser';
SELECT * FROM pet WHERE name = 'Bowser' ;
SELECT * FORM 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');
SELECT name, birth FROM pet;
请注意该查询只是简单地检索每个记录的owner列,并且他们中的一些出现多次。为了使输出减到最少,增加关键字DISTINCT检索出每个唯一的输出记录:
mysql> SELECT DISTINCT owner FROM pet;
你可能已经注意到前面的例子中结果行没有以特定的顺序显示。然而,当行按某种方式排序时,检查查询输出通常更容易。为了排序结果,使用ORDER BY子句。
这里是动物生日,按日期排序:
mysql> SELECT name, birth FROM pet ORDER BY birth;
默认排序是升序,最小的值在第一。要想以降序排序,在你正在排序的列名上增加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);不影响species列的排序顺序。
MySQL提供了几个函数,可以用来计算日期,例如,计算年龄或提取日期部分。
要想确定每个宠物有多大,可以计算当前日期的年和出生日期之间的差。如果当前日期的日历年比出生日期早,则减去一年。以下查询显示了每个宠物的出生日期、当前日期和年龄数值的年数字。
SELECT name , birth , CURDATE(), (YEAR(CURDATE()) - YEAR(birth) - ((RIGHT(CURDATE(),5))<RIGHT(birth,5))) AS age from pet ;
可以使用一个类似的查询来确定已经死亡动物的死亡年龄。你通过检查death值是否是NULL来确定是哪些动物,然后,对于那些非NULL值的动物,需要计算出death和birth值之间的差:
mysql> SELECT name, birth, death,
-> (YEAR(death)-YEAR(birth)) - (RIGHT(death,5)<RIGHT(birth,5))
-> AS age
-> FROM pet WHERE death IS NOT NULL ORDER BY age;
可以使用一个类似的查询来确定已经死亡动物的死亡年龄。你通过检查death值是否是NULL来确定是哪些动物,然后,对于那些非NULL值的动物,需要计算出death和birth值之间的差:
mysql> SELECT name, birth, death,
-> ((YEAR(death)-YEAR(birth)) - (RIGHT(death,5)<RIGHT(birth,5)))
-> AS age
-> FROM pet WHERE death IS NOT NULL ORDER BY age;
查询使用death IS NOT NULL而非death != NULL,因为NULL是特殊的值,不能使用普通比较符来比较
如果你想要知道哪个动物下个月过生日,怎么办?对于这类计算,年和天是无关的,你只需要提取birth列的月份部分。MySQL提供几个日期部分的提取函数,例如YEAR( )、MONTH( )和DAYOFMONTH( )。在这里MONTH()是适合的函数。为了看它怎样工作,运行一个简单的查询,显示birth和MONTH(birth)的值:
mysql> SELECT name, birth, MONTH(birth) FROM pet;
找出下个月生日的动物也是容易的。假定当前月是4月,那么月值是4,你可以找在5月出生的动物 (5月),方法是:
mysql> SELECT name, birth FROM pet WHERE MONTH(birth) = 5;
如果当前月份是12月,就有点复杂了。你不能只把1加到月份数(12)上并寻找在13月出生的动物,因为没有这样的月份。相反,你应寻找在1月出生的动物(1月)。
你甚至可以编写查询,不管当前月份是什么它都能工作。采用这种方法不必在查询中使用一个特定的月份,DATE_ADD( )允许在一个给定的日期上加上时间间隔。如果在NOW( )值上加上一个月,然后用MONTH()提取月份,结果产生生日所在月份:
mysql> SELECT name, birth FROM pet
-> WHERE MONTH(birth) = MONTH(DATE_ADD(CURDATE(),INTERVAL 1 MONTH));
完成该任务的另一个方法是加1以得出当前月份的下一个月(在使用取模函数(MOD)后,如果月份当前值是12,则“回滚”到值0):
mysql> SELECT name, birth FROM pet
-> WHERE MONTH(birth) = MOD(MONTH(CURDATE()), 12) + 1;
注意,MONTH返回在1和12之间的一个数字,且MOD(something,12)返回在0和11之间的一个数字,因此必须在MOD( )以后加1,否则我们将从11月( 11 )跳到1月(1)。
SQL模式匹配允许你使用“_”匹配任何单个字符,而“%”匹配任意数目字符(包括零字符)。在 MySQL中,SQL的模式默认是忽略大小写的。下面给出一些例子。注意使用SQL模式时,不能使用=或!=;而应使用LIKE或NOT LIKE比较操作符。
要想找出以“b”开头的名字:
mysql> SELECT * FROM pet WHERE name LIKE 'b%';
要想找出以“fy”结尾的名字:
mysql> SELECT * FROM pet WHERE name LIKE '%fy';
要想找出包含“w”的名字:
mysql> SELECT * FROM pet WHERE name LIKE '%w%';
要想找出正好包含5个字符的名字,使用“_”模式字符:
mysql> SELECT * FROM pet WHERE name LIKE '_____';
由MySQL提供的模式匹配的其它类型是使用扩展正则表达式。当你对这类模式进行匹配测试时,使用REGEXP和NOT REGEXP操作符(或RLIKE和NOT RLIKE,它们是同义词)。
扩展正则表达式的一些字符是:
·‘.’匹配任何单个的字符。
·字符类“[...]”匹配在方括号内的任何字符。例如,“[abc]”匹配“a”、“b”或“c”。为了命名字符的范围,使用一个“-”。“[a-z]”匹配任何字母,而“[0-9]”匹配任何数字。
·“ * ”匹配零个或多个在它前面的字符。例如,“x*”匹配任何数量的“x”字符,“[0-9]*”匹配任何数量的数字,而“.*”匹配任何数量的任何字符。
如果REGEXP模式与被测试值的任何地方匹配,模式就匹配(这不同于LIKE模式匹配,只有与整个值匹配,模式才匹配)。
为了定位一个模式以便它必须匹配被测试值的开始或结尾,在模式开始处使用“^”或在模式的结尾用“$”。
为了说明扩展正则表达式如何工作,下面使用REGEXP重写上面所示的LIKE查询:
为了找出以“b”开头的名字,使用“^”匹配名字的开始:
mysql> SELECT * FROM pet WHERE name REGEXP '^b';
如果你想强制使REGEXP比较区分大小写,使用BINARY关键字使其中一个字符串变为二进制字符串。该查询只匹配名称首字母的小写‘b’。
mysql> SELECT * FROM pet WHERE name REGEXP BINARY '^b';
为了找出以“fy”结尾的名字,使用“$”匹配名字的结尾:
mysql> SELECT * FROM pet WHERE name REGEXP 'fy$';
为了找出包含一个“w”的名字,使用以下查询:
mysql> SELECT * FROM pet WHERE name REGEXP 'w';
既然如果一个正则表达式出现在值的任何地方,其模式匹配了,就不必在先前的查询中在模式的两侧放置一个通配符以使得它匹配整个值,就像你使用了一个SQL模式那样。
为了找出包含正好5个字符的名字,使用“^”和“$”匹配名字的开始和结尾,和5个“.”实例在两者之间:
mysql> SELECT * FROM pet WHERE name REGEXP '^.....$';
你也可以使用“{n}”“重复n次”操作符重写前面的查询:
mysql> SELECT * FROM pet WHERE name REGEXP '^.{5}$';
数据库经常用于回答这个问题,“某个类型的数据在表中出现的频度?”例如,你可能想要知道你有多少宠物,或每位主人有多少宠物,或你可能想要对你的动物进行各种类型的普查。
计算你拥有动物的总数目与“在pet表中有多少行?”是同样的问题,因为每个宠物有一个记录。COUNT(*)函数计算行数,所以计算动物数目的查询应为:
mysql> SELECT COUNT(*) FROM pet;
在前面,你检索了拥有宠物的人的名字。如果你想要知道每个主人有多少宠物,你可以使用COUNT( )函数:
mysql> SELECT owner, COUNT(*) FROM pet GROUP BY owner;
注意,使用GROUP BY对每个owner的所有记录分组,没有它,你会得到错误消息:
mysql> SELECT owner, COUNT(*) FROM pet;
ERROR 1140 (42000): Mixing of GROUP columns (MIN(),MAX(),COUNT(),...)
with no GROUP columns is illegal if there is no GROUP BY clause
COUNT( )和GROUP BY以各种方式分类你的数据。下列例子显示出进行动物普查操作的不同方式。
每种动物的数量:
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;
若使用COUNT( ),你不必检索整个表。例如,前面的查询,当只对狗和猫进行时,应为:
mysql> SELECT species, sex, COUNT(*) FROM pet
-> WHERE species = 'dog' OR species = 'cat'
-> GROUP BY species, sex;
或,如果你仅需要知道已知性别的按性别的动物数目:
mysql> SELECT species, sex, COUNT(*) FROM pet
-> WHERE sex IS NOT NULL
-> GROUP BY species, sex;
根据你从已经运行在pet表上的查询中学到的,你应该能执行对event表中记录的检索;原理是一样的。但是什么时候event表本身不能回答你可能问的问题呢?
当他们有了一窝小动物时,假定你想要找出每只宠物的年龄。我们前面看到了如何通过两个日期计算年龄。event表中有母亲的生产日期,但是为了计算母亲的年龄,你需要她的出生日期,存储在pet表中。说明查询需要两个表:
mysql> SELECT pet.name,
-> (YEAR(date)-YEAR(birth)) - (RIGHT(date,5)<RIGHT(birth,5)) AS age,
-> remark
-> FROM pet, event
-> WHERE pet.name = event.name AND event.type = 'litter';
关于该查询要注意的几件事情:
FROM子句列出两个表,因为查询需要从两个表提取信息。
当从多个表组合(联结)信息时,你需要指定一个表中的记录怎样能匹配其它表的记录。这很简单,因为它们都有一个name列。查询使用WHERE子句基于name值来匹配2个表中的记录。
因为name列出现在两个表中,当引用列时,你一定要指定哪个表。把表名附在列名前即可以实现。
你不必有2个不同的表来进行联结。如果你想要将一个表的记录与同一个表的其它记录进行比较,可以将一个表联结到自身。例如,为了在你的宠物之中繁殖配偶,你可以用pet联结自身来进行相似种类的雄雌配对:
mysql> SELECT p1.name, p1.sex, p2.name, p2.sex, p1.species
-> FROM pet AS p1, pet AS p2
-> WHERE p1.species = p2.species AND p1.sex = 'f' AND p2.sex = 'm';
如果你忘记数据库或表的名字,或给定的表的结构是什么(例如,它的列叫什么),怎么办?MySQL通过提供数据库及其支持的表的信息的几个语句解决这个问题。
你已经见到了SHOW DATABASES,它列出由服务器管理的数据库。为了找出当前选择了哪个数据库,使用DATABASE( )函数:
mysql> SELECT DATABASE();
如果你还没选择任何数据库,结果是NULL。
为了找出当前的数据库包含什么表(例如,当你不能确定一个表的名字),使用这个命令:
mysql> SHOW TABLES;
如果你想要知道一个表的结构,可以使用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 | |
+---------+-------------+------+-----+---------+-------+
Field显示列名字,Type是列的数据类型,Null表示列是否能包含NULL值,Key显示列是否被索引而Default指定列的默认值。
如果表有索引,SHOW INDEX FROM tbl_name生成有关索引的信息。
在一些例子中,使用数据库表“shop”来储存某个商人(经销商)的每件物品(物品号)的价格。假定每个商人对每项物品有一个固定价格,那么(物品,商人)即为该记录的主关键字。
启动命令行工具mysql并选择数据库:
shell> mysql your-database-name
(在大多数MySQL中,你可以使用test数据库)。
你可以使用以下语句创建示例表:
mysql> CREATE TABLE shop (
-> article INT(4) UNSIGNED ZEROFILL DEFAULT '0000' NOT NULL,
-> dealer CHAR(20) DEFAULT '' NOT NULL,
-> price DOUBLE(16,2) DEFAULT '0.00' NOT NULL,
-> PRIMARY KEY(article, dealer));
mysql> 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);
执行语句后,表应包含以下内容:
mysql> SELECT * FROM shop;
+---------+--------+-------+
| article | dealer | price |
+---------+--------+-------+
| 0001 | A | 3.45 |
| 0001 | B | 3.99 |
| 0002 | A | 10.99 |
| 0003 | B | 1.45 |
| 0003 | C | 1.69 |
| 0003 | D | 1.25 |
| 0004 | D | 19.95 |
+---------+--------+-------+
3.6.1. 列的最大值
“最大的物品号是什么?”
SELECT MAX(article) AS article FROM shop;
任务:找出最贵物品的编号、销售商和价格。
这很容易用一个子查询做到:
SELECT article, dealer, price
FROM shop
WHERE price=(SELECT MAX(price) FROM shop);
另一个解决方案是按价格降序排序所有行并用MySQL特定LIMIT子句只得到第一行:
SELECT article, dealer, price
FROM shop
ORDER BY price DESC
LIMIT 1;
注:如果有多项最贵的物品(例如每个的价格为19.95),LIMIT解决方案仅仅显示其中一个!
列的最大值:按组
任务:每项物品的的最高价格是多少?
SELECT article, MAX(price) AS price FROM shop GROUP BY article
拥有某个字段的组间最大值的行
任务:对每项物品,找出最贵价格的物品的经销商。
可以用这样一个子查询解决该问题:
SELECT article, dealer, price FROM shop s1 WHERE price=(SELECT MAX(s2.price)FROM shop s2WHERE s1.article = s2.article);
使用用户变量
你可以清空MySQL用户变量以记录结果,不必将它们保存到客户端的临时变量中。(参见 9.3节,“用户变量”.)。
例如,要找出价格最高或最低的物品的,其方法是:
mysql> SELECT @min_price:=MIN(price),@max_price:=MAX(price) FROM shop; mysql> SELECT * FROM shop WHERE price=@min_price OR price=@max_price; +---------+--------+-------+ | article | dealer | price | +---------+--------+-------+ | 0003 | D | 1.25 | | 0004 | D | 19.95 | +---------+--------+-------+
转载于:https://blog.51cto.com/ifenx/1350151
mysql 相关命令相关推荐
- The driver has not received any packets from the server.(linux中关于mysql相关命令)
原因: 1.呃呃.重启服务器,没有重新启动mysql; 2.如果还不能连接可能是3306是不允许进行远程连接的,所以在防火墙中设置3306开启远程服务: /sbin/iptables -I INPUT ...
- Linux+Docker+腾讯云/阿里云服务器 安装MySQL相关命令整理
注:主要是收集整理一些常用的命令 主要参考:狂神说docker以及其他的一些命令收集.主要是因为平常安装的mysql外部无法访问 MYSQL的创建用户,授权用户,删除用户,查看用户_ZJE-CSDN博 ...
- mysql(mariadb)的安装与使用,mysql相关命令,mysql数据类型
mysql 1 安装 启动 查看 连接mysql服务端 Navicat 直接连接服务端 数据库的分层 连接层 服务层 存储引擎 磁盘 命令使用 查看数据库 切换数据库及查看数据库中的数据表 创建数据库 ...
- MariaDB 在 RedHat Linux 上的安装过程以及 MySQL 相关命令的使用
2019独角兽企业重金招聘Python工程师标准>>> 安装 yum install mariadb-server mariadb 如果提示已经有存在的包了,通过以下命令卸载 yum ...
- centos的mysql命令,Centos系统mysql相关命令
Centos系统mysql 忘记root用户的密码: 第一步:(停掉正在运行的mysql) [root@CentOs5 ~]# service mysqld stop Stopping MySQL: ...
- mysql相关命令操作
2019独角兽企业重金招聘Python工程师标准>>> 远程连接容器中的mysql:mysql -h 192.168.5.116 -P 3306 -u root -p123456 启 ...
- mysql root命令_设置更改root密码、连接mysql、mysql常用命令
目录 一.设置更改root密码 二.连接mysql 三.mysql常用命令 一.设置更改root密码 检查mysql服务是否启动 [root@minglinux-01 ~] ps aux |grep ...
- mysql主从复制replication的一些相关命令
主服务器上的相关命令: show master status; mysql> show master status\G *************************** 1. row ** ...
- Redis的事务:相关命令 watch 与mysql事务的区别
Redis事务的概念: Redis 事务的本质是一组命令的集合. 事务支持一次执行多个命令,一个事务中所有命令都会被序列化.在事务执行过程,会按照顺序串行化执行队列中的命令,其他客户端提交的命令请求不 ...
最新文章
- Mozilla公布WebVR API标准草案
- 掌握生信技术,玩转生态与地理领域的科研套路
- 哔哩哔哩服务器在哪个文件夹,哔哩哔哩缓存在哪个文件夹 具体操作步骤
- linux 分区表dd,dd复制分区后目标分区的大小变成原分区了
- python网络编程—TCP协议(二)
- c 语言绘图函数,c语言图形编程(三、绘图函数-)(C language graphics programming (three, drawing function -)).doc...
- win7 php zend,win7系统打开WZend Studio PHP出错的解决方法
- 如何做好会员用户画像分析,比消费者本身更懂自己?
- php inner.html,javascript – PHP:如何获得CURRENT innerHTML?
- python派落塔问题_浅析python递归函数和河内塔问题
- Activity详解(生命周期、以各种方式启动Activity、状态保存,完全退出等)
- 【bug】记一个有趣的“bug”
- Java cms 孔浩老师 完整视频加源码 共131集 百度网盘永久链接 无需密码解压
- java jave_jave是什么意思
- win10共享文件夹设置,本地组策略配置全攻略
- 数字签名与数字加密的区别
- 用 Python 制作“会跳舞”的动态图表
- 利用正则匹配连续重复的字符:\1
- Silverlight 结构
- python搭建博客系统_Mezzanine 搭建 BLOG 系统
热门文章
- linux安装硬盘命令,硬盘安装linux的两条命令
- Java项目:校园外卖点餐系统(java+SSM+JSP+maven+mysql)
- 使用HTML CSS完成初步的页面,任务九:使用HTML/CSS实现一个复杂页面(示例代码)
- 【二级java】二叉树序列
- 青少年软件编程python考试-青岛全国青少年软件编程等级考试—Python
- 小程序判断屏幕是长屏还是短屏手机,iPhone X 类型还是 iPhone 6类型
- 设置应用图标badge(徽章)
- 01python语言程序设计基础——初识python
- 记录Linux下的钓鱼提权思路
- tf.nn.relu