MYSQL基础知识整理

目录

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

例子:

[root@jason ~]# mysql --user=‘root‘ --host=‘localhost‘ --password=‘111111‘ #表示以root用户接入本地的Mysql服务,如果省略掉--user=‘‘ 和--host=‘‘ 选项,那就默认以root用户登陆本地的mysql,即命令可以简化为“mysql -p”
[root@jason ~]# 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)
 
[root@jason ~]# 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、批处理模式:

[root@jason ~]# vim mysql.sql
select user,host,password from mysql.user;
a)、[root@jason ~]# 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原密码

本文出自 “知识需要总结与记录” 博客,请务必保留此出处http://zhaochj.blog.51cto.com/368705/1629681

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。