当前位置: 移动技术网 > IT编程>数据库>Mysql > MySQL数据库常用命令总结

MySQL数据库常用命令总结

2018年03月02日  | 移动技术网IT编程  | 我要评论

一、连接数据库

mysql -u user -p;回车输入password即可

mysql -h localhost -u user -p;回车输出密码

其中-u代表mysql用户,-p为用户密码,-h为mysql的ip地址,如果远程连接mysql改为相应的ip即可

二、对数据库的操作

show db_name; 显示所有数据

use db_name; 选择某数据库

create database db_name; 创建某数据库

drop database db_name; 删除某数据库

三、一些不常用的命令

select version(); 显示mysql的版本

help select; 查看select帮助

status查看MySQL服务器的状态信息(常用于查看其编码方式)

show status;查看MySQL详细使用情况(常用like关键字连用)

show variables like 'character_set_database'; 先切换到xxx数据库下面来,然后使用SQL语句:show variables like 'character_set_database'; 来查看了xxx数据库的编码

四、对数据表的操作

1、创建数据表并查看数据表状态

show tables; 显示所选数据库的所有数据表

create table table_name(column_name column_type[,column_name2 column_type2,...]) 创建数据表

desc tables; 查看数据表结构

drop table table_name; 删除数据表

2、插入与删除数据

①插入数据

inset into table_name(field1, field2,...fieldN) values (value1,value2,...,valueN);

如果数据是字符型,必须使用单引号或者双引号,如:"value"。

如果一次插入多个值,值用‘()’括起来,中间用英文‘,’隔开。例如:

inset into table_name(field1, field2,...fieldN) values (value1,value2,...,valueN),(value'1,value'2,...,value'N)...;

从一个数据表中将数据导入另一个数据表中

insert into table_name1(field1,filed2,...) select field1',field2'... from table_name2;

注意table_name2中的filed1',filed2'与table_name中的filed1,filed2数据类型及数据类型长度都必须相同

②删除数据

truncate table table_name; 保留数据表的结构,清空其数据

delete from table_name;删除表中的所有数据

delete from 表名称 where 删除条件; 删除指定条件下的数据

③更新数据

a.更新表中特定列

UPDATE 表名称 SET 列名称 = 新值 WHERE 列名称 = 某值;

update tb set age=22 where name='zhangsan';

将名为tb的表中字段name为‘zhangsan’的age值设置为22

b.更新表中所有列

UPDATE 表名称 SET 列名称 = 新值;

update tb set age=22 where name='zhangsan';

将名为tb的表中所有字段age值设置为22

3、ALTER TABLE 语句

ALTER TABLE 语句用于在已有的表中添加、修改或删除列。

a、添加列

ALTER TABLE table_name ADD column_name datatype;

b、删除列

ALTER TABLE table_nameDROP COLUMN column_name;

c、修改表中的数据类型

ALTER TABLE table_nameMODIFY COLUMN column_name new_type;

d、修改表中数据表名称

ALTER TABLE table_name TO new_talbe_name;

e、修改表中数据字段名及数据类型

ALTER TABLE table_name CHANGE old_column_name new_column_name new_type;

f、修改存储引擎

alter table tableName engine=myisam; 存储引擎修改为myisam

g、删除外键约束:keyName是外键别名

alter table tableName drop foreign key keyName;

h、修改字段的相对位置:这里name1为想要修改的字段,type1为该字段原来类型,first和after二选一,这应该显而易见,first放在第一位,after放在name2字段后面

alter table tableName modify name1 type1 first|after name2;

%%MySql两种存储引擎的区别%%

介绍几种常用的存储引擎种类 MyISAM InnoDB MEMORY MERGE

MyISAM:

不支持事务,但是每次查询都是原子的;旧版本mysql的默认引擎

支持表级锁,即每次操作是对整个表加锁;存储表的总行数;一个MYISAM表有三个文件:索引文件、表结构文件、数据文件;采用菲聚集索引,索引文件的数据域存储指向数据文件的指针。辅索引与主索引基本一致,但是辅索引不用保证唯一性。

InnoDb:

新版本mysql的默认引擎

支持ACID的事务,支持事务的四种隔离级别;支持行级锁及外键约束:因此可以支持写并发;不存储总行数;一个InnoDb引擎存储在一个文件空间(共享表空间,表大小不受操作系统控制,一个表可能分布在多个文件里),也有可能为多个(设置为独立表空,表大小受操作系统文件大小限制,一般为2G),受操作系统文件大小的限制;主键索引采用聚集索引(索引的数据域存储数据文件本身),辅索引的数据域存储主键的值;因此从辅索引查找数据,需要先通过辅索引找到主键值,再访问辅索引;最好使用自增主键,防止插入数据时,为维持B+树结构,文件的大调整。适用于对于事务由较高要求的表的创建。

MEMORY:

1.数据访问非常快的引擎,存储格式同一放在内存中的一个磁盘文件中格式是.frm 。

2.默认使用hash索引。

3.一旦服务器关闭表中的数据就会丢失。数据大小有限制。

MERGE:

本身是融合的意思,实质是MyISUM表的融合,这些融合的表必须结构完全相同。MERGE本身是没有数据的。插入操作可以是first或者是last。删除只是删除MERGE表定义,并不删除真正表的数据。存储方式:.frm(文件存储表定义信息) .MRG(描述组合表的信息,比如由哪些表组成,插入时的依据)。

适用于:将一系列等同的MyISAM表逻辑方式组合在一起,作为一个对象引用它们

4、查询数据

MySQL 数据库使用SQL SELECT语句来查询数据。

a、基础查询

SELECT column1,column2... FROM table_name;

SELECT * FROM table_name;

b、条件查询

SELECT column1,column2... FROM table_name WHERE conditions ;

c、索引不同的列

使用DISTINCT关键字,此关键字指示MySQL只返回不同的值,去重

SELECT DISTINCT COLUMN FROM table_name;

mysql> select * from tb;

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

| id | name | age |

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

| 1 | zs | 12 |

| 1 | ls | 13 |

| 2 | zhangsan | 20 |

| 2 | lisi | 18 |

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

4 rows in set (0.00 sec)

mysql> select distinct id from tb;

+------+

| id |

+------+

| 1 |

| 2 |

+------+

2 rows in set (0.85 sec)

d、限制结果

使用LIMIT关键字限制限制查询结果数

SELECT columns/* FROM table_name [WHERE conditions] LIMIT num1[,num2];

如果LIMIT后有两个数字,第一个数表示为开始的位置,第二个数为要检索的行数。第一行为0行

e、结果排序

使用ORDER BY可对查询结果进行排序

SELECT field1, field2,...fieldN table_name1, table_name2...

ORDER BY field1, [field2...] [ASC [DESC]] [LIMIT nums];

注意,可以添加 WHERE ... LIKE子句来设置条件,ORDER BY 是放在WHERE 之后LIMIT之前。

ASC 按升序排列;DESC 按降序排列,默认按升序排列

f、不匹配检查

mysql中<>、!= 为不匹配

SELECT id FROM table_name WHERE id <> 1003;

SELECT id FROM table_name WHERE id != 1003;

h、范围值检查

为了检查某个范围的值,可使用BETWEEN ... AND ...语法

SELECT id FROM table_name WHERE id BETWEEN num1 AND num2;

i、空值检查

SELECT filed FROM table_name WHERE filed IS NULL;

j、多条件查询

AND操作符:返回同时满足条件1和条件2的结果

SELECT fileds FROM table_name WHERE condition1 AND condition2;

OR操作符:返回符合其中一个条件的结果

SELECT fileds FROM table_name WHERE condition1 OR condition2;

WHERE可包含任意数目的AND和OR操作符。允许两者结合以进行复杂和高级的过滤。在处理OR操作符之前,优先处理AND操作符,但也可以使用‘()’进行明确地分组。

SELECT fileds FROM table_name WHERE condition1 OR condition2 and condition3;

在满足condition3的情况下返回符合condition1或condition2的结果

IN操作符:指定条件范围,合法值的由逗号分隔开组成范围清单,全放在圆括号中,范围中的每个条件都进行匹配

SELECT * FROM table_name WHERE field in (result1,result2);

相当于

SELECT * FROM table_name WHERE field = result1 OR field = result2;

NOT操作符:否定NOT之后所跟的任何条件

SELECT * FROM table_name WHERE field NOT IN (result1,result2);

返回 field字段非result1,result2的结果

K、用通配符进行过滤(模糊查询)

LIKE操作符:为了在搜索句子中使用通配符,必须使用LIKE操作符。

百分号(%)通配符:在搜素串中,%表示任何字符串出现任意次数

SELECT field1[,field2] FROM table_name WHERE field1 LIKE 'abc%';

搜素模式‘%anvil%’表示匹配任何位置包含文本anvil的值,而不论他之前或之后出现什么字符串

搜素模式‘s%e’表示匹配以s开头以e结尾

注:除了一个或多个字符外,% 还能匹配0个字符。

虽然似乎%通配符可以匹配任何东西,但有一个例外,即NULL。即使是WHERE field LIKE '%';也不能匹配用值NULL作为field值的行。

下划线(_)通配符:用法和%类似,表示匹配单个字符,不能多也不能少

5、用正则表达式进行搜素

在前面的章节我们已经了解到MySQL可以通过LIKE ...%来进行模糊匹配。

MySQL 同样也支持其他正则表达式的匹配, MySQL中使用 REGEXP 操作符来进行正则表达式匹配。

模式描述

^匹配输入字符串的开始位置。如果设置了 RegExp 对象的 Multiline 属性,^ 也匹配 '\n' 或 '\r' 之后的位置。

$匹配输入字符串的结束位置。如果设置了RegExp 对象的 Multiline 属性,$ 也匹配 '\n' 或 '\r' 之前的位置。

.匹配除 "\n" 之外的任何单个字符。要匹配包括 '\n' 在内的任何字符,请使用象 '[.\n]' 的模式。

[...]字符集合。匹配所包含的任意一个字符。例如, '[abc]' 可以匹配 "plain" 中的 'a'。

[^...]负值字符集合。匹配未包含的任意字符。例如, '[^abc]' 可以匹配 "plain" 中的'p'。

p1|p2|p3匹配 p1 或 p2 或 p3。例如,'z|food' 能匹配 "z" 或 "food"。'(z|f)ood' 则匹配 "zood" 或 "food"。

*匹配前面的子表达式零次或多次。例如,zo* 能匹配 "z" 以及 "zoo"。* 等价于{0,}。

+匹配前面的子表达式一次或多次。例如,'zo+' 能匹配 "zo" 以及 "zoo",但不能匹配 "z"。+ 等价于 {1,}。

{n}n 是一个非负整数。匹配确定的 n 次。例如,'o{2}' 不能匹配 "Bob" 中的 'o',但是能匹配 "food" 中的两个 o。

{n,m}m 和 n 均为非负整数,其中n <= m。最少匹配 n 次且最多匹配 m 次。

匹配field列包含文本1000的所有行

select field from table_name where field REGEXP '1000' order by field;

匹配field列包含000的所有行

select field from table_name where field REGEXP '.000' order by field;

注:mysql 中的正则表达式匹配不区分大小写,为区分大小写,可使用BINARY关键字,如

WHERE field REGEXP BINARY 'JetPack .000'

| 为正则表达式中的OR操作符,表示匹配其中之一,也可以多个|,如匹配field列中包含1000或2000或3000的行

select field from table_name where field regexp '1000 | 2000 | 3000';

匹配范围

[0123456789] 匹配0到9 或者 [0-9]

[a-z] 匹配任意字母字符

匹配特殊字符

\\- 表示查找-

\\.表示查找.

\\f换车

\\n 换行

\\r 回车

\\t制表符

\\v纵向制表符

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网