设为首页 收藏本站
查看: 871|回复: 0

[经验分享] MySQL(二)之MySQL基本操作

[复制链接]

尚未签到

发表于 2018-10-1 07:20:37 | 显示全部楼层 |阅读模式
  一、MySQL的客户端命令的基本使用
  1、配置文件基本是/etc/my.cnf,服务器配置文件和客户端配置文件写在一起,通常包含三个部分

  •   [mysql] :mysql客户端配置部分,只是用来配置mysql自己的客户端
  •   [mysqld]:mysql客户端服务器配置段
  •   [client]:mysql的所有客户端,包括其他的客户端
  2、mysql命令常用选项

  •   交互式模式:
  -u –user    指定用户名,例如:-u root,-uroot,–user=root
  -h –host    指定主机名称,例如:-h localhost,-hlocalhost,–host=localhost
  -p –password  指定密码
  –port       //当–protocol=tcp时指定使用的端口号
  –socket     //相当于–protocol=socket
  -e    在shell命令行模式下执行mysql客户端命令,而后退出。
  使用举例:
[root@example.com data]# mysql -uroot -h127.0.0.1 -predhat -e 'SHOW DATABASES;'  
+--------------------+
  
| Database           |
  
+--------------------+
  
| information_schema |
  
| mysql              |
  
| performance_schema |
  
| test               |
  
+--------------------+
  注意:命令是先登录到mysql服务器然后执行查询命令,显示当前mysql服务器上的数据库信息,此处-e后面跟的参数必须用单引号或双引号引起来,否则不生效。若要在shell命令行执行多个关于mysql的命令,可以写个脚本来进行执行。

  •   批处理模式:
[root@example.com ~]# cat test.sql  
use mysql;SELECT User,Host,Password FROM user;
  
[root@example.com ~]# mysql -uroot -hlocalhost -predhat < test.sql
  
UserHostPassword
  
rootlocalhost*84BB5DF4823DA319BBF86C99624479A198E6EEE9
  
root127.0.0.1*84BB5DF4823DA319BBF86C99624479A198E6EEE9
  3、命令行编辑功能
  Ctrl+a //快速移动光标至行首
  Ctrl+e //快速移动光标至行尾
  Ctrl+w //删除光标之前的单词
  Ctrl+u //删除行首至光标处的所有内容
  Ctrl+y //粘贴使用Ctrl+w或Ctrl+u删除的内容
  4、mysql的命令

  •   常用客户端命令及特点
  首先,在客户端可以自动执行的命令,不需要语句终止符。关于客户端命令可以在基于mysql的交互式接口中键入help或者?,均能得到客户端的命令,下面就列举写常用的客户端命令。
  quit    (\q)退出 交互式命令行;
  ?          (\?)  获取帮助 ;
  go       (\g) 直接将命令送到服务器端执行 ;
  ego     (\G) 不再显示为表格显示,而是以列的方式显示 ;
  clear    (\c) 取消命令的执行
  status  (\s) 查询运行状态
  use      (\u) 设定默认库
  source (\.) 批处理执行mysql脚本,相同于shell接口的批处理模式


  •   服务器端命令
  服务端命令比较多,比如DDL、DCL、DML基本上都属于服务端命令,虽然在mysql中命令不区分大小写,但是一般为区分还是会在使用服务端命令时使用大写字母表示,同时在语句的最后需要语句终止符,通常默认为分号(;),若被别人修改可以直接在语句最后用\g。
  SELECT命令使用举例:
mysql> SELECT current_time();    //执行mysql内建的函数。  
+----------------+
  
| current_time() |
  
+----------------+
  
| 22:33:07       |
  
+----------------+
  
1 row in set (0.13 sec)
  
mysql> SELECT User,Host,Password FROM user;     //从表中挑选指定的列的数据
  
+------+-----------+-------------------------------------------+
  
| User | Host      | Password                                  |
  
+------+-----------+-------------------------------------------+
  
| root | localhost | *84BB5DF4823DA319BBF86C99624479A198E6EEE9 |
  
| root | 127.0.0.1 | *84BB5DF4823DA319BBF86C99624479A198E6EEE9 |
  
+------+-----------+-------------------------------------------+
  
2 rows in set (0.03 sec)
  SHOW命令使用:
mysql> SHOW DATABASES; //显示所以的数据库  
mysql> use mysql     //指定mysql表为默认库
  
mysql> SHOW TABLES;   //显示默认库的所有表
  CREATE命令的使用:
mysql> CREATE DATABASE testdb;    //创建库  说明:在创建表时需要先创建表的结构,然后才能插入数据。
  DROP命令的使用:
mysql> DROP DATABASE testdb;       //删除库时一定要注意在库里的表的数据有备份。  注意:命令本身不区分字符大小写,但与文件系统相关的部分则根据OS的不同,可能区分大小写,关于命令可以使用help加相关命令,来进行查询命令帮助信息。这里只是介绍几种,剩下的还有很多,下面讲到新的命令在进行举例。
  5、MySQL服务器的几个重要概念
  约束(constraint): 某一个字段取值的范围

  •   主键约束 :只要某些字段被定为主键,则填入数据时不能重复,另外不能为NULL 值;
  •   外键约束:通过另一张表的取值范围来约束当前表;
  •   唯一键约束:与主键相同,但是可以为空,主键只能有一个,唯一键只能多个;
  •   检查式约束: 用户自定义的取值范围,通常为布尔表达式,符合条件才能填;
  •   非空约束 : 不能为空;
  键(key)

  •   主键:能惟一标识表中每一个记录的字段或字段的组合;
  •   候选键 : 可以作为主键使用的字段或字段组合,不一定只有一种;
  •   唯一键 : 唯一标示,但可以为空,数据不能重复出现;
  •   外键  :是另一表的主键, 外键可以有重复的,可以是空值;
  表创建需要定义

  •   需要定义的内容:字段名, 约束,字段类型,下面介绍mysql的字段类型。
  •   字符类型:
  char(#): 不区分大小写,保存固定长度的字符串(可包含字母、数字以及特殊字符)。在括号中指定字符串的长度。最多 255 个字符。
  varchar(#):不区分大小写,保存可变长度的字符串(可包含字母、数字以及特殊字符)。在括号中指定字符串的最大长度。最多 255 个字符。
  binary(n):区分大小写,固定长度的二进制数据。
  varbinary(n):区分大小写,可变长度的二进制数据。
  text(不区分大小写):存储指针,指向对象,可变长度的字符串。
  blob(区分大小写): 二进制大对象,只存储指针,指向对象


  •   数值型:
  整型
  tinyint(m)       1个字节  范围(-128~127)
  smallint(m)     2个字节  范围(-32768~32767)
  mediumint(m)3个字节  范围(-8388608~8388607)
  int(m)   4个字节  范围(-2147483648~2147483647)
  bigint(m)    8个字节  范围(+-9.22*10的18次方)
  注意:取值范围如果加了unsigned,则最大值翻倍,如tinyint unsigned的取值范围为(0~256)。 int(m)里的m是表示SELECT查询结果集中的显示宽度,并不影响实际的取值范围,没有影响到显示的宽度,不知道这个m有什么用。
  浮点型
  float(m,d)      单精度浮点型    8位精度(4字节)     m总个数,d小数位
  double(m,d)  双精度浮点型    16位精度(8字节)    m总个数,d小数位
  注意:设一个字段定义为float(5,3),如果插入一个数123.45678,实际数据库里存的是123.457,但总个数还以实际为准,即6位。
  定点数
  浮点型在数据库中存放的是近似值,而定点类型在数据库中存放的是精确值。 decimal(m,d) 参数m DESC students;
  
+--------+---------------------+------+-----+---------+----------------+
  
| Field  | Type                | Null | Key | Default | Extra          |
  
+--------+---------------------+------+-----+---------+----------------+
  
| StuID  | int(10) unsigned    | NO   | PRI | NULL    | auto_increment |
  
| Name   | varchar(30)         | NO   |     | NULL    |                |
  
| Age    | tinyint(3) unsigned | YES  |     | NULL    |                |
  
| Gender | enum('F','M')       | YES  |     | M       |                |
  
+--------+---------------------+------+-----+---------+----------------+
  
4 rows in set (0.00 sec)

  •   表中插入数据
  语法:
   INSERT INTO tb_name (col1,col2...) VALUE|VALUES (val1,val2.....)  
   INSERT INTO tb_name VALUES(val1,val2....),给所有字段插入值
  
   INSERT INTO tb_name VALUES(val1,val2....),(val1,val2....) 批量插入
mysql> INSERT INTO students(name,age,gender) VALUES('bols',23,'F');  
Query OK, 1 row affected (0.07 sec)
  
mysql> INSERT INTO students(name,age,gender) VALUES('longls',25,'F'),('cangls',30,'F');
  
Query OK, 2 rows affected (0.08 sec)
  
Records: 2  Duplicates: 0  Warnings: 0
  
mysql> INSERT INTO students(name,age) VALUES('xiaoming',12),('xiaoli',32);
  
Query OK, 2 rows affected (0.09 sec)
  
Records: 2  Duplicates: 0  Warnings: 0

  •   查询表中的数据
  在查找数据中WHERE后所跟的表达式可以是=、、=,还可以使用组合条件即:and、or、not。还可以使用LIKE关键字进行匹配查询,LIKE后可以跟通配符:“%”任意长度的任意字符、“ _”匹配任意单个字符,也可以使用基于正则表达式的关键字RLIKE。
mysql> SELECT * FROM students;  
+-------+----------+------+--------+
  
| StuID | Name     | Age  | Gender |
  
+-------+----------+------+--------+
  
|     1 | bols     |   23 | F      |
  
|     2 | longls   |   25 | F      |
  
|     3 | cangls   |   30 | F      |
  
|     4 | xiaoming |   12 | M      |
  
|     5 | xiaoli   |   32 | M      |
  
+-------+----------+------+--------+
  
5 rows in set (0.00 sec)
  
mysql> SELECT Name,Age FROM students WHERE Age > 25;
  
+--------+------+
  
| Name   | Age  |
  
+--------+------+
  
| cangls |   30 |
  
| xiaoli |   32 |
  
+--------+------+
  
2 rows in set (0.12 sec)
  
mysql> SELECT Name,Age,Gender FROM students WHERE Gender = 'F' and Age > 25;
  
+--------+------+--------+
  
| Name   | Age  | Gender |
  
+--------+------+--------+
  
| cangls |   30 | F      |
  
+--------+------+--------+
  
1 row in set (0.17 sec)

  •   删除表中的数据
  语法:
DELETE FROM tb_name WHERE clause;  举例:
mysql> DELETE FROM students WHERE Name LIKE 'c%';  
Query OK, 1 row affected (0.11 sec)
  
mysql> SELECT * FROM students;
  
+-------+----------+------+--------+
  
| StuID | Name     | Age  | Gender |
  
+-------+----------+------+--------+
  
|     1 | bols     |   23 | F      |
  
|     2 | longls   |   25 | F      |
  
|     4 | xiaoming |   12 | M      |
  
|     5 | xiaoli   |   32 | M      |
  
+-------+----------+------+--------+
  
4 rows in set (0.00 sec)

  •   更新表中数据
  语法:
UPDATE tb_name set col1 = value where clause;mysql> UPDATE students SET Age=22 WHERE Name='xiaoming';  
Query OK, 1 row affected (0.09 sec)
  
Rows matched: 1  Changed: 1  Warnings: 0
  
mysql> SELECT Name,Age,Gender FROM students WHERE Name='xiaoming';
  
+----------+------+--------+
  
| Name     | Age  | Gender |
  
+----------+------+--------+
  
| xiaoming |   22 | M      |
  
+----------+------+--------+
  
1 row in set (0.00 sec)



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-606890-1-1.html 上篇帖子: MySQL(四)之MySQL数据类型 下篇帖子: 回收mysql表的碎片
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表