时间:2021-07-01 10:21:17 帮助过:2人阅读
[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 User Host Password root localhost *84BB5DF4823DA319BBF86C99624479A198E6EEE9 root 127.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) 设定默认库
服务器端命令
服务端命令比较多,比如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<65 是总个数,d<30且 d<m 是小数位。
日期时间型
date 日期 ‘2008-12-2‘ (3字节)
time 时间 ‘12:25:36‘ (3字节)
datetime 日期时间 ‘2008-12-2 22:06:44‘ (8字节)
timestamp 自动存储记录修改时间即时间戳。
NULL
内置类型
ENUM(枚举类型)限定特定的取值范围,只能挑一个;
SET (集合类型)可以组合集合内的任意元素,但集合以外的不能组合使用,可以挑N个组合。
6、创建表
语法
CREATE TABLE tb_name(coll_name coll_type,......);
应用举例
关于创建下面表结构说明:NOT NULL 表示不能为空,NULL表示可以为空, UNSIGNED 表示无符号,DEDAULT表示若不输入就是其后默认值,注意,字符要加引号,数字不能加引号。AUTO_INCREMENT 表示自动增长类型的字段必须为主键或唯一键。PRIMARY KEY表示定义主键,若是UNIQ KEY则表示唯一键。
mysql> use test mysql> CREATE TABLE students(StuID int UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, Name varchar(30) NOT NULL,Age tinyint UNSIGNED,Gender ENUM(‘F‘,‘M‘) DEFAULT ‘M‘); Query OK, 0 rows affected (0.09 sec) mysql> 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)
本文出自 “粗茶淡饭” 博客,请务必保留此出处http://cuchadanfan.blog.51cto.com/9940284/1688373
MySQL(二)
标签:mysql、数据库