mysql 常用命令
1.DDL(data definition language)数据库定义语言:
定义数据段,数据库、表、列、索引等数据库对象。常用的包括create、drop、update
创建数据库:
create database wxy;
查看有哪些数据库:
show databases;
information_schema 存储数据库对象信息,比如用户表、列、权限、字符集、分区信息
mysql 存储系统用户权限信息
进入数据库:
use wxy;
查看所有表:
show tables;
删除数库:
drop database wxy;
创建表:
create table tablename (column_name,column_type,constraints,....);
create table wxy (name varchar(20),hiredate date);
查看表结构:
desc wxy;
show create table wxy \G; 表信息更全面
删除表:
drop table tablename;
修改表: alter
修改表字段数据类型:
alter table tablename modify [column] column_definition [FIRST| AFTER col_name];
alter table wxy modify name varchar(10);
alter table wxy modify hobby varchar(59) first; #更改表某字段的位置
增加表字段:
alter table tablename add [column] column_definition [FIRST| AFTER col_name];
alter table wxy add age int(3); #默认将字段加到最后
alter table wxy add hobby varchar(50) after name;
删除表字段:
alter table tablename drop [column] col_name;
alter table wxy drop column hobby;
修改字段名:
alter table tablename change [column] old_col_name column_definition;
alter table wxy change name name1 varchar(5);
更改表名:
alter table tablename rename to new_tablename;
alter table wxy rename to wxy1;
2.DML(data manipulation language)数据操纵语言:
操作数据库中表记录,常见增删改查
插入记录:
insert into tablename (field1,...) values(value1,...),(value2,...);
注意:
可以不用指定字段名称,但是values后面的顺序和字段的排列顺序一致。
含可空字段,非空但是含默认的字段,自增字段,可以不再insert的字段列表里出现
更新记录:
uptate tablename set field1=value1,field2=value2,... [where condition]
多表更新:
update table1 tb1,table2 tb2 set tb1.column1=values1,tb2.column2=values2 where tb1.column2=tb2.column2;
根据一个表的字段来动态更新另一个表的字段
删除记录:
删除单个表数据:
delete from tablename where tablename.column=value;
删除多个表数据:
delete t1,...,tn from t1,...,tn where condition;
查询记录:
基本语法:
select * from tablename [where condition]
*代表所有字段,要么就是明确具体字段
去重:
select distinct column from tablename;
条件查询:where
比较运算符:
=、>、>=、<=、!=
逻辑运算符:
and、or #多条件联合查询
排序和限制:
排序:
基本语法:
selete * from tablename [where condition] order by field1 [desc|asc] ,...,fieldn [desc|asc]
desc 降序,asc升序
可以指定多个字段,如果前边的字段相同,按后边字段排序
限制:
limit offset_start,row_count;
起始偏移量,记录数量
聚合:
基本语法:
select [field1,...,fieldn] fun_name from tablename [where condition] group by field1,...,fieldn [with rollup] [having condition];
fun_name:
聚合函数,常见的有sum(求和),count(*)(记录数),max(最大值),min(最小值)
group by:
表示要进行分类聚合的字段
with rollup:
对分类聚合后的结果再汇总
having:
对分类后的结果再进行条件过滤
表连接:
作用:同时显示多个表中的字段
内连接:选出2张表中相匹配的记录
外连接:选出其他不匹配的记录
左连接:
包含所有左表中的记录甚至是右边表中的没有和它匹配的记录
select column1,..,columnn from tablename1 left join tablename2 on tablename1.column=tablename2.column;
右连接:
包含所有右边表中的记录甚至是左表中没有和它匹配的记录
select column1,..,columnn from tablename1 right join tablename2 on tablename1.column=tablename2.column;
子查询:
子查询的关键字包括:in、not in、=、!=、exists、not exists
select * from tablename1 where column keyword (select column from tablename2);
注意:
子查询和表连接可以相互转化,表连接在很多情况用于优化字查询
记录联合:
基本语法:
select * from t1 union|union all select * from t2 ... union|union all select * from tn;
union 相当于union all 去重
3.DCL(data Control Language)数据库控制语言:
控制数据库的访问权限和安全级别,常见grant、revoke
修改密码:
mysqladmin -uroot -p password 123456
创建数据库用户、授权、收回:
授权:
GRANT
ALL
PRIVILEGES
ON
*.*
TO
'username'
@
'localhost'
IDENTIFIED
BY
'password'
;
收回:
REVOKE
ALL
PRIVILEGES
ON
*.*
FROM
'username'
@
'localhost'
;
创建用户:
CREATE
USER
username IDENTIFIED
BY
'password'
;
DROP
USER
username@localhost;
查看用户:
select * from mysq.user;
查看授权:
show grants for username;
注意:操作完后记得FLUSH
PRIVILEGES
;刷新权限
常见权限:
ALTER: 修改表和索引
CREATE: 创建数据库和表
DELETE: 删除表中已有的记录
DROP: 抛弃(删除)数据库和表
INDEX: 创建或抛弃索引
INSERT: 向表中插入新行
REFERENCE: 未用
SELECT: 检索表中的记录
UPDATE: 修改现存表记录
FILE: 读或写服务器上的文件
PROCESS: 查看服务器中执行的线程信息或杀死线程
RELOAD: 重载授权表或清空日志、主机缓存或表缓存
SHUTDOWN: 关闭服务器
ALL: 所有权限,ALL PRIVILEGES同义词
USAGE: 特殊的 "无权限" 权限
4.查看帮助
? comtents