.数据库结构图:
.mysql客户端登录命令
命令使用格式: mysql 选项
选项: -u 指定登录用户名称
-p 非口密码用户登录,让mysql登录提示输入密码窗口
-h 指定用户远程登录mysql服务器的主机名称
登录mysql客户端如服务器root用户是空密码,在安装的mysql服务器直接输入Mysql即可。
如存在密码的本地登录: mysql -u root -p
如存在密码且非本地登录 mysql -u root -h mysql服务器ip -p
该命令前提需要mysql在建立用户时,授权用户指定允许远程登录的主机
如 mysql系统中root@localhost用户,只能本地Localhost登录
space@192.168.6.% 则表示space用户允许在所有6段的主机远程连接mysql数据库
. mysql配置文件必备参数: (如果不设置该参数,mysql数据库表不支持中文)
[mysqld] [mysql]
lower_case_table_names=1 no-auto-rehash
character-set-server=utf8 default-character-set=utf8
.运维常用三种数据库命令类型
数据库定义语言DDL: Data Defination Lanuage
Show 查看系统数据库,查看数据库中的表, 查看用户授权
Desc 查看数据库中数据表结构
Select 查看数据库中表的数据内容
create 创建数据库,创建表,创建数据库访问用户
Drop 删除数据库,删除表
Alter 修改表
数据库操作语言DML Data Manapulate Language
insert 对表插入新的内容
update 更新数据表内原有的数据内容
delete 删除表内已存在的数据内容
数据库控制语言DCL Data Control Language
Create 建立数据库访问用户
delete 删除数据库访问用户
GRANT 建立或修改用户权限
Revoke 取消用户数据库权限
SHOW 查看用户授权
其他类型数据库关键字:
FLUSH PRIVILEGES 刷新数据库,将新配置的数据库信息同步到数据库。
USE 定义接下来明确指定被操作的数据库,在use定义被操作对象的库以后,所有 未明确指定被操作对象的库时的mysql语句,都对use指定的对象库进行执行。
FROM 用于指定此条mysql执行语句操作对象为哪张表的关键字,然后在此关键字后面指定需要 查看的对象,是哪个数据库下的表。
WHERE 指定匹配条件的关键字,数据库在进行命令执行时,会默认对所有匹配的内容进行执行 mysql语句,通过where关键字更细化指定被操作对象,如需要对zhangsan进行性别修改,
其中数据表中存在两个zhangsan用户,则需要通过where条件匹配两个zhangsan用户其 它不同参数的列内容进行更详细的条件匹配帅选然后进行操作。
AND: 一般出现在where条件筛选中进行条件组合,and和, 满足条件1和条件2
OR :or 或 使用格式:条件1 OR 条件2 满足条件1或条件2
NOT:not 非 使用格式 not条件,此条件以外的都算满足
TABLE 表示定义被操作对象类型 table表示操作对象为表,但是在查看语句中需要添加s ,tables
DATABASE 用于定义被操作对象类型 database表示操作对象为库,但在查询语句中需要添加s
* 所有字段,一般在SELECT查数据内容语句中,在未明确指定查看字段中代表需要查看的所有列
.mysql语句详细使用格式规范
show 命令
(查看系统数据库,查看数据库中的表,查看用户授权等)
查看系统数据库(查看mysql当前登录用户有权限操作的所有库)
使用格式: SHOW DATABASES;
show 用于定义该条数据库命令操作类型,show查看命令.
databases 用于定义被操作对象类型 database表示操作对象为库.
; 所有数据库命令结尾需要使用分号指明结束.
查看数据库中所有的表
使用格式: SHOW TABLES FROM 数据库名;
show 用于定义该条数据库命令操作类型,show查看命令.
tables 用于定义被操作对象类型 tables表示操作对象为数据表.
from 用于指定后面内容为指定被操作对象的关键字
数据库名 指明需要查看哪个数据库下的所有表
查看用户授权
使用格式: SHOW GRANTS FOR 用户名@允许登录主机;
show 用于定义该条数据库命令操作类型,show查看命令.
grants 用于定义被操作对象类型 gtants表示操作对象为用户.
for 用于指定后面内容为指定被操作对象的关键字
用户名@运行登录主机 mysql用户命名比较特殊,用户名和允许被登录主机分为两块组成
Desc 命令
(该命令在mysql中专门用于定义查看表字段结构的)
使用格式: DESC 数据库名.表名称;
desc 用于定义该条数据库命令操作类型,desc 查看表字段结构命令
数据库名.表名称 明确指定需要查看哪个数据库下的哪个表的结构
也可以使用USE命指定被操作的库,则此处只需要直接输入表名称即可。
使用格式: USE 数据库; DESC 表名称;
Select命令
(该命令在mysql中用于查看数据库中表数据内容)
使用格式: SELECT 需要被查看的列1,列2,列3 FROM 库名称.表 WHERE 列=‘匹配条件’;
Select 定义该条数据库执行命令为查看数据库表内容命令
需要查看的列 定义需要查看数据中表下的哪些列的内容,*表示所有
FROM 用于指定被查看对象是哪个数据库下的哪张表的
user 因为事先使用的USE命令指定了数据库,则只需要跟表名称即可。
WHERE 定义筛选条件的,如条件满足WHERE后面的内容则被显示,其他为满足条件的不显示
WHERE参数可选使用项,如果不加则默认显示全部指定查看的列,通过where可筛选只需要查看明确的列
Create命令
(在mysql中主要用于定义创建类型的语句,创建数据库,创建表,创建数据库访问用户等)
(然后分别已第二个字段的table和database来定义创建对象为数据库还是数据表)
创建数据库
使用格式: CREATE DATABASE 新建数据库名;
create 用于定义该条数据库命令操作类型,CREATE 创建命令
database 用于定义操作对象类型 database表示操作对象为库
然后指定新建的数据库名称即可完成创建新数据库
默认需要设置数据库支持utf-8字符集,固推荐建立数据库时使用命令:
create database db名称 CHARACTER SET utf8 COLLATE utf8_general_ci;
在数据库下创建新的表
使用格式: CREATE TABLE 数据库.新建表名(字段1 字段1字段类型,字段2 字段2字段类型,...);
create 用于定义该条数据库命令操作类型,CREATE 创建命令
table 表示定义被操作对象类型 table表示操作对象为表
数据库.新建表名 指定是在哪个数据库下新建表,此处的数据库必须是事先存在的,新表名称则不允 许在指定库下已经存在,数据库与表直接用小数点做间隔符。
字段 用于定义表中的每个字段代表什么含义的,类似与excl表格中的列,指定每列是什 么,如姓名、年龄、性别等,每个字段都需要定义字段类型,然后与下一个字段使用 逗号(,)隔开
字段类型 每个字段需要定义字段类型,如姓名栏需要定义该字段允许写什么类型字符,最多允 许多少字符内容等,一个字段可定义多个不冲突的类型。
针对字段做功能约束:
primary key 设置为主键 unsigned 为“无符号”的意思
not null 不允许自动内容为空
auto_increment 自动增长
default 值 插入数据该字段如果未写入就自动加默认值
create table test.user(id int primary key auto_increment,name varchar(30) not null);
在test库下建立user表,id自动为int整数型,设置为主键,设置新增用户自动增长,然后建立一个name的列,字符串类型,最多允许30个字符,不允许为空;
mysql常用字段类型整理:
.时间日期数据类型:
MySQL数据类型 | 含义 |
date | 3字节,日期,格式:2014-09-18 |
time | 3字节,时间,格式:08:42:30 |
datetime | 8字节,日期时间,格式:2014-09-18 08:42:30 |
timestamp | 4字节,自动存储记录修改的时间 |
year | 1字节,年份 |
.数值数据类型
MySQL数据类型 | 含义(有符号) |
Tinyint | 1字节,范围(-128~127) |
Smallint | 2字节,范围(-32768~32767) |
Mediumint | 3字节,范围(-8388608~8388607) |
Int | 4字节,范围(-2147483648~2147483647) |
Bigint | 8字节,范围(+-9.22*10的18次方) |
.浮点型
MySQL数据类型 | 含义 |
float(m, d) | 4字节,单精度浮点型,m总个数,d小数位 |
double(m, d) | 8字节,双精度浮点型,m总个数,d小数位 |
decimal(m, d) | decimal是存储为字符串的浮点数 |
.字符串数据类型
MySQL数据类型 | 含义 |
char(n) | 固定长度,最多255个字符 |
varchar(n) | 可变长度,最多65535个字符 |
tinytext | 可变长度,最多255个字符 |
text | 可变长度,最多65535个字符 |
mediumtext | 可变长度,最多2的24次方-1个字符 |
longtext | 可变长度,最多2的32次方-1个字符 |
创建数据库访问用户
使用格式: CREATE USER ‘用户名称’@‘允许远程登录主机’ IDENTIFIED BY ‘密码’;
create 用于定义该条数据库命令操作类型,CREATE 创建命令
user 用于定义操作对象类型,user表示操作对象为用户
用户名称@允许远程登录主机 mysql用户命名规范比较特殊,同一个用户名不同的允许远程登录主机权限 不一样,后面的远程登录主机用于限制用户是否能在远程登录或者本地登录。
identified 用于定义设置用户帐号密码
by by跟着输入密码即可,密码需要使用单引号,防止特殊字符。
允许远程登录主机设置方式:、
支持主机名、IP地址、网段
输入格式如下:
space@'192.168.1.%' 支持space用户在所有192.168.1网段的主机进行远程登录mysql
space@'192.168.1.10' 只允许space用户在192.168.1.10这台主机上远程登录mysql
space@'%' 允许space用户在任意主机上远程连接登录mysql
.Drop命令
(该命令在mysql中用于定义删除操作的命令语句,无论是表或者库都是通过该关键字进行定义,执行该命令的用户需要对执行对象具有操作权限)
删除数据库
使用格式: drop DATABASE 数据库名称;
drop 用于定义该条数据库命令操作类型,drop 删除命令
database 用于定义操作对象类型 database表示操作对象为库
然后指定要删除的数据库名称即可完成删除指定的数据库。
删除数据库下的某个表
使用格式: drop table 数据库名.表名;
drop 用于定义该条数据库命令操作类型,drop 删除命令
table 用于定义操作对象类型,TABLE表示操作对象为表
然后指定数据库下的表名称即可完成删除指定的表。
Alter命令
(alter 命令修改表,支持修改的非修改表内数据内容段,而是修改数据表的信息,如;设置主键、增加新列、删除列、修改原字段名称以及类型、重命名列、添加删除索引等,主要用于调试数据表的属性信息的)
使用格式: alter table 数据库名.表名 执行操作 被操作字段 [被操作对象字段属性定义];
alter 用于定义该条数据库命令操作类型,alter 定义修改表属性的命令
table 表示定义被操作对象类型 table表示操作对象为表
表名称 指定需要被进行属性信息修改的表
执行操作 通过该执行操作,用于定义本条命令主要修改表的什么属性信息如下:
add 添加新的字段 drop 删除已存在的列
modify 修改字段属性 change 改变字段名称
ADD 新字段 AFTER 已存在字段,指定新字段放到哪个字段后面。
该命令比较复杂,可在使用该命令时候,使用HELP ALTER TABLE
事例:
重命名列如下图:
命令格式: ALTER TABLE mydb.aaa CHANGE Gender Test CHAP(5);
alter 用于定义该条数据库命令操作类型, alter 定义修改表属性的命令
table 表示定义被操作对象类型 table表示操作对象为表
mydb.aaa 指定被进行属性信息修改的表 mydb库下的aaa表
change 通过该执行操作,用于定义本条命令主要修改表的什么属性信息
change改变字段名称
Gender 需要被改变名称的列
Test 被更改列的新名称
CHAR 定义改变名称列的字段类型
删除列:
命令格式: ALTER TABLE aaa DROP Age;
alter 用于定义该条数据库命令操作类型, alter 定义修改表属性的命令
table 表示定义被操作对象类型 table表示操作对象为表
aaa 指定被进行属性信息修改的表 mydb库下的aaa表,提前用USE指定mydb库
drop 通过该执行操作,用于定义本条命令主要修改表的什么属性信息,drop 删除字段
Age 被删除的字段名称
添加新的列,默认新列添加完成后会放在最后一列。
添加新的列,并把列明确指定放在哪一列的后面, 通过AFTER 指定在什么列后面添加新列。
.insert命令
(该命令在mysql中用于插入一行新内容到数据表的命令语句)
使用格式: INSERT INTO 数据库.表名称(A列名称,C列名称,...) VALUES (A列写入的内容,C列对应写入的内容,...);
INSERT INTO 用于定义该条数据库命令操作类型,INSERT INTO新插入数据表一行内容。
数据库.表名称 定义需要对哪个数据库下的表插入一行新内容。
(列名称1,列名称2)定义需要对哪个列插入新内容
VALUES 用于定义后面字段内容为插入的数据内容
(内容1,内容2) 内容字段位置对应与前面字段定义的列顺序进行插入,前面定义了几个列, Vlues后面则需要对应输入同样字段的内容,与之一一对应。
.update命令
(该命令在mysql中用于对已经存在的数据表存在内容进行更改的命令语句)
使用格式: UPDATE 数据库.表名 SET 列名称=‘新内容’ where 列名称=‘原内容’;
UPDATE 用于定义此条命令类型为更新数据内容
数据库.表名 指定针对哪个数据库和表做操作
SET 申明后面字段是需要进行数据更新的内容,如果有多列,可用,逗号隔开
列名称=‘新内容’ 指定需要对哪列,修改的新内容是什么
where 指明条件,满足哪个条件的内容需要被修改成set选项什么需要更新的内容
事例:
.Delete命令
(该命令在mysql中用于对已经存在的数据表存在内容进行整列内容删除的命令语句)
使用格式: DELETE FROM 数据库.表名 where 列名=数据内容;
DELETE 用于定义此条命令类型为删除一列数据内容
FROM 用于指定操作对象的关键字
数据库.表名 指明是哪个数据库下的哪个表需要被执行该条命令
where 用于指定条件,满足哪个条件的列被删除
列名称=‘数据内容’当数据内容等于此内容时候,则条件匹配成功,执行delete删除命令
数据库控制语言DCL Data Control Language
Create 建立数据库访问用户
delete 删除数据库访问用户
GRANT 建立或修改用户权限
Revoke 取消用户数据库权限
SHOW 查看用户授权
.create创建数据库访问用户
使用格式: CREATE USER ‘用户名称’@‘允许远程登录主机’ IDENTIFIED BY ‘密码’;
create 用于定义该条数据库命令操作类型,CREATE 创建命令
user 用于定义操作对象类型,user表示操作对象为用户
用户名称@允许远程登录主机 mysql用户命名规范比较特殊,同一个用户名不同的允许远程登录主机权限 不一样,后面的远程登录主机用于限制用户是否能在远程登录或者本地登录。
identified 用于定义设置用户帐号密码
by by跟着输入密码即可,密码需要使用单引号,防止特殊字符。
允许远程登录主机设置方式:、
支持主机名、IP地址、网段
输入格式如下:
space@'192.168.1.%' 支持space用户在所有192.168.1网段的主机进行远程登录mysql
space@'192.168.1.10' 只允许space用户在192.168.1.10这台主机上远程登录mysql
space@'%' 允许space用户在任意主机上远程连接登录mysql
.delete 删除数据库数据内容
使用格式: Delete From 数据库.表 Where 列名称=‘内容’ and 列名称=‘内容’
DELETE 用于定义此条命令类型为删除一列数据内容
FROM 用于指定操作对象的关键字
数据库.表名 指明是哪个数据库下的哪个表需要被执行该条命令
where 用于指定条件,满足哪个条件的列被删除
列名称=‘数据内容’当数据内容等于此内容时候,则条件匹配成功,执行delete删除命令
默认系统用户存在位置在mysql表下的user目录下,可通过增删改查的mysql基本命令对用户信息进行修改。
.Grant命令
(用于授权管理mysql登录用户权限的命令)
使用格式: Grant 权限1,权限2,权限... ON 被授权的数据库.* TO 被授权用户@主机;
如: GRANT insert,update ON testdb.* TO 'space'@'192.168.6.%';
GRANT 用于定义此条命令类型为用户授权命令
insert,update 授权用户可使用的命令权限
ON 用于指定被授权数据库的关键字
testdb.* 指定被对象,是哪个数据库,.*指定哪个数据库下的哪张表,*表示所有表,或*.*
TO 用于指定被授权用户的关键字
指定被授权用户@以及主机
Grant授权命令列表:
权限 | 类型 | 备注 |
all |
| 所有权限 |
alter |
| 修改表 |
create |
| 创建数据库,表,用户,单独授权可使用 create user |
|
|
|
drop |
| 删除数据库,表 |
grant |
| 建立或修改用户权限 |
revoke |
| 取消用户数据库权限 |
select |
| 查看数据库中表的数据内容 |
insert |
| 对表插入新的内容 |
update |
| 更新数据表内原有的数据内容 |
delete |
| 删除表内已存在的数据内容 |
... |
|
|
. Revoke命令
(用于取消mysql用户操作数据库执行的命令权限)
使用格式: Revoke 权限1,权限2 ON 取消授权的数据库.* FROM 被取消授权用户@主机;
GRANT 用于定义此条命令类型为取消用户授权命令
insert 取消用户可使用的命令权限,多个权限可使用逗号隔开
ON 用于指定被授权数据库的关键字
*.* 指定被对象,是哪个数据库,.*指定哪个数据库下的哪张表,*表示所有表,或*.*
FROM 用于指定被授权用户的关键字
指定被授权用户@以及主机
事例:
.SHOW命令
(通过show命令配合第二关键字可以实现数据库内部不同类型数据信息查看)
使用格式: SHOW Grants for 被查看授权用户@主机;
show 用于定义该条数据库命令操作类型,show查看命令
Grants 用于定义被操作对象类型,Grant为授权数据库用户命令,与table和databse
for 用于指定被查看数据库用户对象的关键字
指定被查看用户对象用户名和登录主机
.Mysql编辑器快捷操作
组合键功能键 | 功能说明 |
Up ,↑ | 翻阅上一条历史命令 |
Down ,↓ | 翻阅下一条历史命令 |
← , Ctrl b | 键入命令时,光标左移(往回) |
→ , Ctrl F | 键入命令时,光标又移(往前) |
Ctrl A | 将光标移到行头 |
Ctrl E | 将光标移到行尾 |
Ctrl D , Delete | 删除光标下的字符 |
Ctrl K | 删除光标到行尾的所有字符 |
.Mysql 批处理文件内容输入输出:
输入命令格式: mysql命令 < mysql命令脚本文件.sql
输出命令格式: mysql命令 < mysql命令脚本文件.sql > 命令执行内容输出文件位置
实例说明如下图:
定义sql语句脚本文件将所有mysql数据执行命令写入在sql.sql文件中,使用mysql命令加输入符引用sql.sql文件,输出结果为执行sql.sql文件中的sql语句后的内容;
通过 > 输出符号,将mysql脚本执行结果内容输出保存到指定输出内容存储文件中;