常用MySql语句和知识点记录
最近在重读MySQL的相关数据,对知识进行系统整理,根据读书进度不同会不定时更新。
基础语句
数据库操作
连接数据库
mysql -u root -p
数据库操作:
create database dbname; # 创建数据库,名字为dbname
CREATE DATABASE 'todo' DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci; # 创建todo数据库,并指定字符集
show databases;
alert database character set utf8; # 修改数据库字符集
use dbname; # 选择数据库
status; # 查看当前选择(use)的数据库
drop database dbname; # 删除数据库
数据表操作:
创建数据表:
mysql> create table user(
-> id int(4) not null primary key auto_increment,
-> name char(20) not null,
-> sex int(4) not null default '0',
-> degree double(16,2)
-> );
表的删除,复制,重命名,详细信息查询:
SHOW COLUMNS FROM table_name; # 显示表列
show tables; # 显示所有表
describe tablename; # 表结构详细描述
desc tablename; # describe指令的缩写
create table newtable like oldtable; # 复制表结构
insert into newtable select * from oldtable; # 复制表数据
rename table tablename to new_tablename;# 重命名表,同时命名多个表用逗号“,”分割
drop table tablename; # 删除表
数据库用户管理
新建用户和管理:
CREATE USER username IDENTIFIED BY `password`; # 其中,username是用户名,password是用户密码
SHOW GRANTS # 用来显示用户权限
权限控制可以分以下几类:all,select,insert,delete,update,drop
于是,用下面的命令就可以执行特定的功能:
GRANT <权限> ON <数据库>.<表名> TO <用户名>@<登录主机> IDENTIFIED BY `密码`
> GRANT ALL ON *.* TO 'username'@'localhost' IDENTIFIED BY '123456'; # 给用户 username 分配所有数据库的所有权限
> REVOKE ALL ON *.* FROM 'username'@'localhost'; # 如果觉得上面的权限太大,用 REVOKE 删除原来权限
> GRANT ALL ON dbname.* TO 'username'@'localhost' IDENTIFIED BY '123456'; # 重新授予仅在dbname数据库上的权限
> GRANT SELECT, UPDATE ON dbname.* TO 'username'@'localhost' IDENTIFIED BY '123456'; # 仅授予select、update权限,无法执行insert、delete等命令
> FLUSH PRIVILEGES; # 每当调整权限后,通常需要用这个命令刷新权限
> DROP USER username@localhost; # 删除用户
数据库运维
各种状态的查看语句:
select version(),current_date; # 显示当前mysql版本和当前日期
SHOW STATUS; # 显示服务器状态信息
SHOW GRANTS; # 显示用户权限
SHOW ERRORS; # 显示服务器错误信息
SHOW WARNINGS; # 显示服务器警告信息
备份和恢复:
$ mysqldump -u root -p dbname > dbname.sql # 备份整个数据库(包含表结构和数据)
$ mysqldump -u root -p -d dbname > dbname.sql # 备份数据库表结构,不包含数据,
$ mysqldump -u root -p dbname tablename > tablename.sql # 备份数据库中的某张数据表(包含表结构和数据)
$ mysqldump -u root -p dbname tablename1 tablename2 > tables.sql # 备份数据库中2张数据表
$ mysqldump -u root -p -d dbname tablename > tablename.sql # 备份数据库中的某张数据表的表结构(不含数据)
$ mysqladmin -u root -p create dbname # 恢复数据库步骤1:创建数据库
$ mysql -u root -p dbname < dbname.sql # 恢复数据库步骤2:恢复数据
索引相关
查询建表语句:
show create table tablename; # 查询建表语句,默认存储引擎
InnoDB
show engines; # 查询当前数据库支持的存储引擎
索引结构的支持(默认是B+Tree索引):
索引结构:
实战语句
获取某个字段所有的值
用到了聚合函数和分组
select key,COUNT(*) from tablename GROUP BY key;
新人不易,欢迎大家强势关注 - 阿丰在长春━(`∀´)ノ亻!
可通过k9629@qq.com联系我,互通有无,一起成长。