[关闭]
@songying 2018-09-20T22:19:52.000000Z 字数 5403 阅读 1120

使用 mysql

mysql


myqsl的图形管理软件

mysql workbench

一些概念

自动增量

某些表列需要唯一值。例如,订单编号、雇员ID或顾客ID。在每个行添加到表中时,MySQL可以自动地为每个行分配下一个可用编号,不用在添加一行时手动分配唯一值(这样做必须记住最后一次使用的值)。这个功能就是所谓的自动增量。如果需要它,则必须在用CREATE语句创建表时把它作为表定义的组成部分。

01. 开启/关闭mysql服务器

  1. ps -ef | grep mysqld //检查mysql服务器是否启动
  2. /* 启动mysql服务器 */
  3. service mysql start
  4. /*关闭mysql服务器 */
  5. service mysql stop
  6. /* 重启mysql服务器 */
  7. service mysql restart

02. mysql连接

  1. mysql -u root -p //root用户登录mysql服务器

mysql的连接需要一下信息:

  • 主机名:本地Mysql服务器为localhost
  • 端口:默认为3306
  • 一个合法的用户名
  • 用户口令

03. show相关命令

注意:一定要在结尾添加分号.

  1. show databases //列出 MySQL 数据库管理系统的数据库列表
  2. show tables //列出某数据库中的所有表
  3. show columns from 表名 // 显示表列 ??????
  4. show columns from 表名; //显示数据表的属性,属性类型,主键信息 ,是否为 NULL,默认值等其他信息
  5. describe 表名 // 显示表列,是上一个命令的快捷方式
  6. show create database 数据库名 //显示创建该数据时所使用的mysql语句
  7. show create table 表名 //显示创建该表时所使用的mysql语句
  8. show grants; //显示当前授予用户的安全权限
  9. show errors; //显示服务器错误消息
  10. show warnings; //显示服务器警告信息
  11. show status; //显示广泛的服务器状态信息
  12. help show; //显示show的帮助文档
  13. SHOW INDEX FROM 数据表; //显示数据表的详细索引信息,包括PRIMARY KEY(主键)
  14. SHOW TABLE STATUS LIKE [FROM db_name] [LIKE 'pattern'] \G; //输出Mysql数据库管理系统的性能及统计信息。

04. 对数据库的操作

  1. CREATE DATABASE 数据库名; //创建数据库
  2. DROP DATABASE 库名; //删除数据库
  3. SHOW DATABASES; //列出 MySQL 数据库管理系统的数据库列表
  4. use 数据库名; //选择要操作的Mysql数据库,使用该命令后所有Mysql命令都只针对该数据库。
  5. select database(); //查看已选择的数据库

05. 对表的操作

  1. SHOW TABLES; //显示指定数据库的所有表
  2. create table tablename(fieldname1 fieldtype1,fieldname2 fieldtype2,..)[ENGINE=engine_name]; //创建表
  3. drop table tablename; //删除表
  4. desc tablename; //查看表结构
  5. show create table tablename; //查看建表语句

06. 检索数据:select语句

一点注意:

  1. select 列名 from 表名; //从表中检索出名为“列名”的列
  2. select 1,列2 3 from 表名; //从表中检索出多列数据
  3. select * from 表; //检索表的所有列
  4. selct distinct 列名 from 表名; // 从表中检索出名为“列名”的列,且输出不同的行值。注意,distinct必须放在列名的前面,且distinct作用于其后所有的列
  5. select 列名 from limit 5; //LIMIT 5指示MySQL返回不多于5行
  6. select 列名 from limit 46; //表示返回从行4开始检索6行
  7. select 表名.列名 from 表名; //从表中的一个列
  8. select 表名.列名 from 数据库名.表名 //限定表名,列名,数据库名

07. 排序检索数据:order by

  1. select 列名 from 表名 order by 1 //对该列以字母排序
  2. select 1,列2,列3 from 表名 order by 1, 2; //先按列1排序,再按列2排序
  3. select 1, 2, 3 from order by 1 DESC; //按列1的字母降序排列
  4. select 1, 2, 3 from order by 1 DESC,列2; //按列1的字母降序排列,再按列2 的字母升序排列
  5. select 1, 2, 3 from order by 1 DESC limit 1;

08. 过滤数据:where子句

  1. select prod_name, prod_price from products where prod_price = 2.50; //检索两个列,但只返回products表中prod_price为2.50的行
  2. select prod_name, prod_price from products where prod_name = 'fuses'; //检索两个列,但只返回products表中prod_name为fuses(不区分大小写)的行
  3. select prod_name, prod_price from products where prod_price between 5 and 10;
  4. select prod_name, prod_price from products where prod_price IS NULL; // 判断是否包含值
操作符 说明
= 等于
<> 不等于
!= 不等于
< 小于
<= 小于等于
> 大于
=
大于等于
between 在指定两个值之间
逻辑操作符
AND 可以使用多个and来过滤数据
OR
IN WHERE子句中用来指定要匹配值的清单的关键字,功能与OR相当。
NOT WHERE子句中用来否定后跟条件的关键字。
  1. select prod_name, prod_price from products where prod_name = 'song' AND prod_price = 12;
  2. select prod_name, prod_price from products where prod_name = 'song' AND prod_name = 'zhang';
  3. select prod_name, prod_price from products where vend_id = 1002 OR vend_id = 1003) AND prod_price > 10
  4. select prod_name, prod_price from products where vend_id IN (1002,1003)
  5. select prod_name, prod_price from products where vend_id NOT IN (1002,1003)

09. 通配符: LIKE

% 表示任何字符出现任意次数。0,1,或多个字符
_ 只匹配单个字符
  1. select prod_id, prod_name FROM products WHERE prod_name LIKE 'jet%'; //检索prod_name中任意以jet为开头的词
  2. select prod_id, prod_name FROM products WHERE prod_name LIKE '_ ton';

10. 正则表达式:regexp

表示法 描述 实例
literal 匹配文本字符串的字面值 literal foo
` re1 re2 ` 匹配正则表达式 re1 或者 re2
. 匹配任何单个字符(除了\n 之外) b.b
^ 匹配字符串起始部分 ^Dear
$ 匹配字符串终止部分 /bin/*sh$
* 匹配 0 次或者多次前面出现的正则表达式 [A-Za-z0-9]*
+ 匹配 1 次或者多次前面出现的正则表达式 [a-z]+.com
? 匹配 0 次或者 1 次前面出现的正则表达式 goo?
{N} 匹配 N 次前面出现的正则表达式 [0-9]{3}
{M,N} 匹配 M~N 次前面出现的正则表达式 [0-9]{5,9}
[...] 匹配来自字符集的任意单一字符 [aeiou]
[..x−y..] 匹配 x ~ y 范围中的任意单一字符 [0-9], [A-Za-z]
[^...] 不匹配此字符集中出现的任何一个字符,包括某一范围的字符(如果在此字符集中出现) [^aeiou],[ ^A-Za-z0-9]
(*|+|?|{})? 用于匹配上面频繁出现/重复出现符号的非贪婪版本(*、+、?、{}) .*?[a-z]
(...) 匹配封闭的正则表达式,然后另存为子组 ([0-9]{3})?,f(oo|u)bar
  1. select prod_name from products where prod_name regexp '1000' //检索列prod_name包含文本1000的所有行
  2. select prod_name from products where prod_name regexp '.000'
  3. select prod_name from products where prod_name regexp '1000|2000'
  4. select prod_name from products where prod_name regexp '1|2|3 ton' #检索1,2,3 ton,而不是1 ton,2 ton, 3 ton
  5. select prod_name from products where prod_name regexp '[123]000'
  6. select prod_name from products where prod_name regexp '[^123]000'
  7. [1-9] [a-z] [A-Z]
  8. select prod_name from products where prod_name regexp '\\.' #转义字符
空白元字符 说明
\\f 换页
\\n 换行
\\r 回车
\\t 制表
\\v 纵向制表

注意:mysql中的正则表达式的转义字符使用\\而不是\

字符类 说明
[:alnum:] 任意字母和数字(同[a-zA-Z0-9])
[:alpha:] 任意字符(同[a-zA-Z])
[:blank:] 空格和制表(同[\t])
[:cntrl:] ASCII控制字符(ASCII 0到31和127)
[:digit:] 任意数字(同[0-9])
[:graph:] 与[:print:]相同,但不包括空格
[:lower:] 任意小写字母(同[a-z])
[:print:] 任意可打印字符
[:punct:] 既不在[:alnum:]又不在[:cntrl:]中的任意字符
[:space:] 包括空格在内的任意空白字符(同[\\f\\n\\r\\t\\v]
[:upper:] 任意大写字母(同[A-Z])
[:xdigit:] 任意十六进制数字(同[a-fA-F0-9])
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注