MySQL常用命令总结

一、连接数据库

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_name DROP COLUMN column_name;

c、修改表中的数据类型

ALTER TABLE table_name MODIFY COLUMN column_name new_type;

d、修改表中数据表名称

ALTER TABLE table_name RENAME TO/AS new_table_name;

RENAME TABLE table_name TO new_table_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:

  1. 不支持事务,但是每次查询都是原子的;
  2. 旧版本mysql的默认引擎
  3. 支持表级锁,即每次操作是对整个表加锁;
  4. 存储表的总行数;
  5. 一个MYISAM表有三个文件:索引文件、表结构文件、数据文件;
  6. 采用菲聚集索引,索引文件的数据域存储指向数据文件的指针。辅索引与主索引基本一致,但是辅索引不用保证唯一性。

InnoDb:

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

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                     纵向制表符

 

........

 

参考:

   菜鸟MySQL教程:http://www.runoob.com/mysql/mysql-tutorial.html

《MySQL必知必会》

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Superme_No1

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值