常用MySql语句和知识点记录

284 阅读3分钟

常用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';  # 仅授予selectupdate权限,无法执行insertdelete等命令
> 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索引):

image.png

索引结构:

image.png

实战语句

获取某个字段所有的值

用到了聚合函数和分组

select key,COUNT(*) from tablename GROUP BY key;

新人不易,欢迎大家强势关注 - 阿丰在长春━(`∀´)ノ亻!

可通过k9629@qq.com联系我,互通有无,一起成长。