目录
1、客户端命令
2、服务器端命令
3、常用数据类型
3.1、数值型
3.2、字符型
3.3、日期时间型
3.4、布尔型
4、mysql的执行方式
5、用户管理
1、客户端命令
客户端命令不需要以分号结尾 ,如果想获取客户端命令的帮助信息则:
mysql> help
mysql常用客户端命令如下:
mysql> quit或\q #表示退出mysql mysql> go或\g #表示无论语句的结束符是什么都把语句送到服务器端执行,是在当被修改默认结束符后又不知道的情况下使用 例如: mysql> select database()\g #显示当前所在的数据库 mysql> use或\u 数据库名称 #表示设定默认数据库 例如: mysql> \u test #表示使用test这个数据库 mysql> ego或\G #表示sql命令取回的数据纵向显示 例如: mysql> select * from mysql.user\G #表示读取mysql库中user表中的所有数据,如果不用\G,那数据可读性不高 mysql> system或\! #表示在不退出mysql客户端程序下执行shell命令,这个有点类似在vim中执行shell命令 mysql> status或\s #表示获取当前mysql的状态信息 mysql> delimiter或\d #表示更换语句结束符,也就是可把默认的分号结束符号更换成其他的符号
2、服务器端命令
服务器端命令必须有语句结束符,默认是分号,获取服务器端命令帮助用以下命令:
mysql> help 命令
常用服务器端命令:
mysql> select version(); #表示显示mysql数据库的版本号 mysql> show databases; #显示mysql中有哪些数据库 mysql> show databases like ‘t%‘; #显示以字母“t”开头的数据库 mysql> show variables; #显示服务器参数变量,一样可以使用‘‘like’’这样的子句来做模糊查找 mysql> show variables like ‘datadir%‘; mysql> show status; #显示服务器状态变量 mysql> help create table #获取创建表支持的数据类型 mysql> show character set; #显示mysql所支持的字符集 mysql> show collation; #显示排序规则 mysql> show processlist; #显示服务器当前所有mysql线程列表 mysql> show indexes from 表名; #显示表中的索引信息 mysql> show table status\G #查看当前默认数据库中表状态,有“\G”结尾的不要加分号 mysql> show table status [from | in] 数据库\G #查看指定数据库中的表状态
3、常用数据类型
要想获取创建表的帮助,可查看到支持的数据类型,执行下边语句:
mysql> help create table;
3.1、数值型:数值型又分为精确数值型和近似数值型
精确数值型中的整型如下:
a)、tinyint:占用1bype(字节),即8位,表示数值范围,有符号(-128,127)无符号(0,255)。为什么有符号的范围是(-128,127)呢?因为表示有符号数值时最高位用来表示符号位,最高位是0表示正数,最高位是1表示负数,此最高位不表示数值大小,只表示符号。那有符号的数值中最小值为“10000000”,最大值为“01111111”,在计算机中是用补码来表示二进制数的大小,这里有一个原则,正数的补码就是其本身,负数的补码是各位取反后再加1,所以最小值“10000000”的补码为“011111111”,换算成十进制为127,再加上1就是128,因是负数,所以最小值就是“-128”,而正数的补码是其本身,所以换算成二进制就是127,所以有符号的范围是(-128,127)。
b)、smallint: 占用2bytes, 表示范围-(2^15-1+1),2^15-1或0,65535,计算方法如上。
c)、mediumint: 占用3bytes,表示范围"-(2^23-1+1),2^23-1"或"0,2^24-1"
d)、int: 占用4bytes, 表示范围 "-(2^31-1+1),2^31-1"或"0,2^32-1"
e)、bigint: 占用8bytes, 表示范围"-(2^63-1+1),2^63-1"或"0,2^64-1"
数值类型后一般会接上一些修饰符,在精确数值型中会有以下修饰符:
not null:表示定义的字段的值不能为空值
default ‘默认值‘:表示定义的字段中的默认值
unsigned:表示定义字段的数值是无符号的
auto_increment:表示值自动增长
近似数值型中的浮点型:
a)、fload:单精度数值,占用4bytes
b)、double:多精度数值,占用8bytes
数值类型后一般会接上一些修饰符,浮点型字符后的修饰符一般为:
not null,default ‘默认值‘,unsigned,zerofill,auto_increment
3.2、字符型
a)、不区分大小写的字符类型:
char(n):固定长度的字符类型,n表示数值
varchar(n):可变长的字符类型
b)、区分字符大小写的字符类型:
binary(n):固定长度的字符类型,n表示数值
varbinary(n):可变长的字符类型
c)、表示众多字符的字符类型:
text,blob这两种是表示众多字符型,text不区分大小写,blob区分大小写。这两种类型字符还有相应的变体
text:tinytext,text,mediumtext,longtext 存储的内容大小依次增大
blob:tinyblob,blob,mediumblob,longblob 存储的内容大小依次增大
这种类型的实际数据不是存放在表中的,而是存放在数据库外围的,表中只是存放了指向相应对象的指针。
常用修饰符:
修饰符:not null,default ‘默认值 ‘
3.3、日期时间型
data:占用3bytes,范围:1000-01-01 to 9999-12-31,类型可用于一个日期值而不需要时间部分,如:‘YYYY-MM-DD’
time:占用3bytes,范围:-838:59:59 to 838:59:59,中间有好多表示的时间范围是浪费的,此类型用于一个时间,如:‘HH-MM-SS‘
datetime:占用8bytes,范围:1000-01-01 00:00:01 to 9999-12-31 23:59:59,是date与time的结合,表示‘YYYY-MM-DD HH-MM-SS’
year(2):占用1byte,范围:00 to 99,表示2位的年
year(4):占用1byte,范围:1901 to 2155,表示4位的年
timestamp:占用4bytes,格林威治时间,与datetime类似都是保存日期日间,格式为‘YYYY-MM-DD HH:MM:SS’,但表示的范围与datetime不同,数值在“1970-01-01 00:00:01-2038-01-18 22:14:07”之间
常用修饰符:null,not null,default ‘默认值‘
3.4、布尔型
tinyint(1):其实是一种整形,表示只显示一位,对于二进制来讲,一位不是“0”就是“1”
3.5、内置类型(字符型)
set:集合,比如:set(a,b),那可存放的数据为‘a‘或‘b‘或‘ab‘或‘ba‘
enum:枚举,比如:enum(a,b),那可存放的数据为‘a‘或‘b‘
4、mysql的执行方式
4.1、交互式方式:
-u‘用户‘ = --user=‘用户‘
-h‘主机名‘ = --host=‘主机名‘
-p‘密码‘ = --password=‘密码‘
-D‘数据库名称‘ = --database=‘数据库名称‘ ,表示接入Mysql后以哪个数据库作为默认数据库
-e‘sql语句‘ = --execute=‘sql语句‘ ,表示连接数据库直接执行sql语句,取回值后直接返回到shell
例子:
[[email protected] ~]# mysql --user=‘root‘ --host=‘localhost‘ --password=‘111111‘ #表示以root用户接入本地的Mysql服务,如果省略掉--user=‘‘ 和--host=‘‘ 选项,那就默认以root用户登陆本地的mysql,即命令可以简化为“mysql -p” [[email protected] ~]# mysql --user=‘root‘ --host=‘localhost‘ --password=‘111111‘ -D mysql #登陆后以mysql库作为默认数据库,省略了连接数据库后用“mysql> use mysql”来切换数据库的操作 mysql> select database(); +------------+ | database() | +------------+ | mysql | +------------+ 1 row in set (0.01 sec) [[email protected] ~]# mysql --user=‘root‘ --host=‘localhost‘ --password=‘111111‘ -e ‘select user,host,password from mysql.user;‘ +-----------+-----------+-------------------------------------------+ | user | host | password | +-----------+-----------+-------------------------------------------+ | root | localhost | *FD571203974BA9AFE270FE62151AE967ECA5E0AA | | root | jason | | | root | 127.0.0.1 | | | | localhost | | | | jason | | | cactiuser | localhost | *FD571203974BA9AFE270FE62151AE967ECA5E0AA | +-----------+-----------+-------------------------------------------+ #"-e"选项表示连接数据库后直接执行sql语句,取回值后不停留在"mysql> ",而是返回到shell
4.2、批处理模式:
[[email protected] ~]# vim mysql.sql select user,host,password from mysql.user; a)、[[email protected] ~]# mysql -p111111 < mysql.sql b)、mysql> source /root/mysql.sql
这两种方式都可以进行sql的批处理操作,注意一点就是mysql.sql这个脚本文件的权限问题,在“mysql> ”中进行sql脚本的批处理操作时mysql用户很有可能需要对sql的脚本文件要有可读的权限。
5、用户管理
5.1、创建、删除用户
创建用户:
语法:mysql> create user ‘用户名‘@‘主机名‘ identified by ‘密码‘;
用户名与主机可以使用通配符:
‘%‘表示匹配任意长度的任意字符;如(172.16.%.%)
‘_‘表示匹配任意单个字符
mysql> create user ‘zhaochj‘@‘%‘ identified by ‘111111‘; #创建一个名为‘zhaochj’的用户
mysql> flush privileges; #因用户信息有改变,所以用户创建好后不要忘记刷新一下权限表,让用户信息加载到内存
删除用户:
mysql> drop user ‘用户名‘@‘主机‘;
5.2、给用户授予权限
语法:
mysql> grant all on 库名.表名 to ‘用户名‘@‘主机‘; #表示把一个库中的一个表的所有权限授权给一个用户
mysql> grant all on 库名.表名 to ‘用户名‘@‘主机‘ identified by ‘密码‘; #表示创建一个用户并授予一个数据库中一个表的 所有权限,如果用户是对一个数据库上的所有表授权,那匹配所有表的通配符是“*”号
5.3、修改用户密码
两种方法:
a、mysql> set password for ‘用户名‘@‘主机名‘=password(‘密码‘);
b、]# mysqladmin -u用户名 password ‘新密码‘ -p原密码