mysql命令数据库命令分为以下几个大类:
DDL 全称:Data Definition Language(数据定义语言),既然是定义语言其中有:
create:创建数据库及其对象(包括新建表,索引,视图,存储过程等)。
alter: 改变现有数据库的结构(包括: 修改索引,修改字段类型,删除索引)。
truncate: 删除表中所有记录,并删除已分配的空间。
comment:添加注释新建表以及字段上添加注释。
rename: 重命名,其中包括索引,tablename等。
drop 删除,删除数据库和表。
DML全称是:Data Manipulation Language(数据操作语句):
insert语句,新增数据到数据库中。
update语句,更新表格中现有数据。
delete 语句,删除现有数据。
explain 语句,查看语句的执行计划。
lock table 语句,锁表操作。
DCL 全称为:Data Control Language(数据控制语句),这里指的控制,说的其实就是权限控制:
grant:允许用户访问数据库的权限。
revoke:撤销用户访问数据库的权限。
DQL:数据库查询语句:
select 语句,从数据库中检索数据。
数据库中操作命令语法:
DDL命令
CREATE语句,创建数据库和数据表;
create database DBname 数据库的属性 ;
create databasse king charset=utf8; #创建一个urf8字符集的数据库
create table tablename 表属性; #其中表的属性有:权限、大小、行数、字符集、存储引擎
create table t1 (id int auto_increment primary key ); #创建一张表其中id字段自增长并设置为主键(不为空且唯一)
Create table t1 like log;#创建一个像log表结构的表。
Create table t1 select * from log ; #创建一个像log表的表并把log表中的数据写入到t1表中
CREATE TABLE apilog
(
Id VARCHAR(40),
systemName VARCHAR(100) COMMENT ‘系统名称‘,
systemCode VARCHAR(50) COMMENT ‘系统编码‘,
indentify VARCHAR(100) COMMENT ‘标识(各种唯一Id如:userId ,orderId 等)‘,
moduleId VARCHAR(100) COMMENT ‘模块Id‘,
serviceName VARCHAR(100) COMMENT ‘接口名称‘,
clientIP VARCHAR(15) COMMENT ‘客户端IP‘,
clientType INT COMMENT ‘客户端类型 10 Android,20 IOS, 30 IE ,31 FireFox,32 Opera ,33 Safari ,34 Chrome ,40 Service(系统服务)‘,
requestType INT COMMENT ‘请求类型:0 GET,1 POST,2 PUT,3 DELETE‘,
responseStatus INT COMMENT ‘响应状态 0 成功 1 失败‘,
responseTime INT COMMENT ‘响应时长(毫秒)‘,
inputParam VARCHAR(2000) COMMENT ‘接口入参‘,
outputParam VARCHAR(2000) COMMENT ‘接口出参‘,
appId VARCHAR(100) COMMENT ‘应用Id‘,
browerVersion VARCHAR(100) COMMENT ‘browerVersion‘,
logTime DATETIME COMMENT ‘日志时间‘,
CreateTime DATETIME
) ENGINE=INNODB DEFAULT CHARSET=utf8 ;#指定引擎和存储字符类型
ALTER TABLE apilog COMMENT ‘接口日志‘;
#COMMENT为注释即解释这个字端是干什么的
ALTER 修改命令(这条命令比较危险)
Alter table tablename add 新的列; #添加新列
Alter table tablename drop 列名; #删除列
Alter table tablename modify 列名和属性; #修改列属性
Alter table tablename change 列名 新列名和属性; #修改列名和属性
Alter table tablename rename 新tablename;#修改tablename
Alter table tablename add 新列名和属性 null default null after 列名;#增加到已有列名之后
Alter table tablename add 新列名和属性 null default null first;#增加到最前面;
Alter使用更改密码
Alter user root@locahost identified by ‘123’;#支持在mysql7.x版本上
Truncate清空数据表中的内容(危险)
Truncat table tablename; #这个命令只会删除数据不会删除表
Comment在建表中添加注释
Create table tablename (id char(10) comment “id”);
Rename修改tablename
Rename table tablename to 新tablename;
Drop 删除库表命令(极其危险)
Drop database DBname;
Drop table tablename;
DML命令
insert语句,新增数据到数据库中。
Insert into tablename(字段名) values(数据);#其中数值类型可以不使用引号,但是字符串类型要使用,有些默认值的字段可以加也可不加。
update语句,更新表格中现有数据(比较危险,但是相对于delete来说比较安全可以使用update代替delete,其中update需要和where语句结合)
update mysql.user set password=123 where user=’root’and host=’localhost’;
delete 语句,删除现有数据(危险,delete命令也要和where语句结合在一起)
delete from tablename where 条件;
lock tables 语句,锁表操作。
Lock tables talbename read或者write等;
READ
所有的用户只能读取被锁表,不能对表进行修改(包括执行 LOCK 的用户),当表不存在 WRITE 写锁时 READ 读锁被执行。
READ LOCAL
除了允许 INSERT 命令以外执行的锁与 READ 相同。
WRITE
除了当前用户被允许读取和修改被锁表外,其他用户的所有访问被完全阻止。一个 WRITE 写锁被执行仅当所有其他锁取消时。
LOW PRIORITY WRITE
低优先级的读锁,在等待时间内(等待其他锁取消),其他用户的访问将被认为是执行了 READ 读锁,因此将增加等待时间
DQL:数据库查询语句:
Select 查询数据表中数据;
Select user(); #查询当前登陆用户名;
Select version(); #查看当前版本;
Select now(); #查看当前时间;
Select ‘字符’; #显示字符串
select dayofmonth(current_date);#显示年月日
select (10+6)*50;#运算
select 列名,列名 from DBname.tablename wherw 条件;
where 子句使用
where条件字句主要是配合select查询语句使用,其他像update、delete、alter都可以使用,但是select使用最多。
select * from tablename where 列名=数据; #查询此表中有等于这个数据的行
show 查看
show grants for 用户名@所属域 #查看用户权限
show create database DBname; #查看数据建库的属性
show create table tablename #查看数据表的属性
show datbases; #查看有哪些数据库
show tables ; #查看有哪些表
show variable like ‘列名’#查看数据库的参数
desc tablename #查看表结构
DCL 全称为:Data Control Language(数据控制语句),这里指的控制,说的其实就是权限控制:
Grant 给用户添加权限;
Grant 权限(主要有insert、update、select、drop、create、delete等)
Grant insert,select on DBname.tablename to ‘用户’@‘所属域’ identified by ‘密码’;
Grant all on DBname.tablename to ‘用户’@‘所属域’ identified by ‘密码’ with grant option;#创建超级用户
Revoke 收回权限
revoke all on dbname.tablename from 用户名@所属域
#mysql中的常用数据类型:
1、数值类型:
TINYINT 有符号值:-128到127,吴符号值:0到255
INT 无符号值:-32768到32767,无符号值0到65535
MEDIUMINT 有符号值:-8388608 到8388607(- 2^23 到2^23 – 1 ),无符号值:0到16777215(0 到2^24 – 1)
BIGINT 有符号值:-9223372036854775808 到9223373036854775807(- 2^63到2^63-1),无符号值:0到18446744073709551615(0到2^64 – 1)
2、字符串类型:
CHAR 定长字符串(0到255字节),优点读取速度快,缺点比较浪费资源。
VARCHAR 可变字符串(0到65535字节),优点可以节约资源和比较可以适应不同的字符长度,缺点读取较慢。
TEXT 长文本字符串(最大64k字节)。
TINYEXT 短文本字符集(0-255字节) 。
MEDIUMEXT 中等长度文本数据(最大数据16k字节)
LONGTEXT 极大文本数据(最大数据4GB)
ENUM 接受最多64K个串组成的预定义集合的某个串
SET 接受最多64K个串组成的预定义集合的零个或多个串
3、日期时间数据类型:
DATE 取值范围:1000-01-01——9999-12-31 #日期值
TIME -838:59:59——838:59:59 #时间或者持续时间
DATETIME 1000-01-01 00:00:00——9999-12-31 23:59:59 #混合日期和时间值
TIMESTAMP 19700101080001——20380119111407 #混合日期和时间值,时间戳
YEAR 1901——2155 #年份值
4、二进制数据类型:
TITYBLOB 最大长度为255字节
BLOB 最大长度为64KB
MEDIUMBLOB 最大长度为16MB
LONGBLOB 最大长度为4GB