mysql中SQL语句总结

此篇文章转载于https://www.cnblogs.com/clsn/p/8047028.html 这里只是做测试和整理记录。

1.mysql用户相关sql语句总结

1.用户和权限的定义

 定义用户:用户名+主机域,密码

 定义权限:对不同的对象进行权限(角色)定义

 1.用户登录

 2.用于管理数据库及数据

权限

对数据库的读、写等操作
(insert update、select、delete、drop、create等)
insert (可以对其下所有表进行插入)
update (可对其下所有表进行更新)
delete (可对其下所有表进行删除)
drop   (可删除此数据库,及此数据库下的表)
create (可在此数据库下创建表或索引)
select (可对其下所有表进行查询)
alter  (可对其下的所有表进行更改) 

角色

  数据库定义好的一组权限的定义
    (all privileges、replication slave等)

权限范围

    全库级别: *.*
    单库级别:clsn.*
    单表级别:clsn.t1

用户,主机域

   'clsn'@'localhost'  本地
    'clsn'@'192.168.66.149'
    'clsn'@'192.168.66.%'
    'clsn'@'192.168.66.14%'

 2.创建用户

查看当前存在的用户:

mysql> select user,host from mysql.user;       #这里的mysql是库名,user表名,这是不切换库,查询某个库里表的常用语法,前面是库名中间一个点符号后面跟表名

创建用户语法

CREATE USER '用户'@'主机' IDENTIFIED BY '密码';

示例

mysql> create user 'test1'@'172.31.46.77' identified by 'test123';

注意这个样创建的用户只有连接权限

企业里创建用户一般是授权一个内网网段登录,最常见的网段写法有两种。

方法1:172.16.1.%(%为通配符,匹配所有内容)。

方法2:172.16.1.0/255.255.255.0,但是不能使用172.16.1.0/24,是个小遗憾。

3.用户删除

删除用户的语法:

drop user 'user'@'主机域'

示例

mysql> drop user 'qingbai'@'172.31.46.77';

特殊的删除方法:(慎用,尽量不要直接去修改表)

mysql> select user,host from mysql.user;
+---------------+--------------+
| user          | host         |
+---------------+--------------+
| test1         | 172.31.46.77 |
| mysql.session | localhost    |
| mysql.sys     | localhost    |
| root          | localhost    |
+---------------+--------------+
4 rows in set (0.00 sec)

mysql> delete from mysql.user where  user='test1' and host='172.31.46.77';            #这里我们把已存在的用户test1删除
Query OK, 1 row affected (0.00 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

mysql> select user,host from mysql.user;
+---------------+-----------+
| user          | host      |
+---------------+-----------+
| mysql.session | localhost |
| mysql.sys     | localhost |
| root          | localhost |
+---------------+-----------+
3 rows in set (0.00 sec)

#这个直接修改表记录的方式删除用户会造成相关信息残留,导致在再次创建用户的时候报如下错误。
mysql> create user 'test1'@'172.31.46.77' identified by 'Test@12356789';
ERROR 1396 (HY000): Operation CREATE USER failed for 'test1'@'172.31.46.77'
#上面的报错是因为一开始我们使用了delete语句删除了user表中test1@172.31.46.77用户对应的记录,也就相当于删除了"test1@172.31.46.77"用户,
但是,如果某些数据库的权限已经授权给了"test1@172.31.46.77"用户,那么,在mysql.db表中,"test1@172.31.46.77"用户对应的权限将不会被删除
当管理员想要再次创建了"test1@172.31.46.77"用户时,则会出现上面的报错
#解决上面的方法如下

第一种解决方案:我们可以删除mysql.db表中原"test1@172.31.46.77"用户残留的权限数据后,使用flush privileges命令刷新,然后再次使用上述create user命令创建新的"tu@localhost"用户即可,其实就是将原"test1@172.31.46.77"用户残留的数据删除干净(相当于使用drop user命令删除了用户)。

第二种解决方案:使用grant命令授权"test1@172.31.46.77"用户能够访问任意数据库即可,如果授权用户的数据库与原来残留的权限所对应的数据库不是同一个库,残留的权限将会被新创建的"test1@172.31.46.77"用户所获得的,因为新用户与旧用户的名称相同,所以新的"test1@172.31.46.77"用户会继承被删除同名用户的权限,当然,是在残留权限对应的库与新授权的数据库不为同一个库的时候。

4.用户授权

详细可以参考大神这篇http://www.zsythink.net/archives/431

用户授权语法

GRANT 权限 ON 权限范围 TO '用户'@'主机域';

创建用户然后授权

#创建用户test
mysql> create user 'test'@'172.31.46.77' identified by 'test123'; Query OK, 0 rows affected (0.00 sec) #授权全库只读权限给用户test。 mysql> GRANT select ON *.* TO 'test'@'172.31.46.77'; Query OK, 0 rows affected (0.00 sec)

创建用户的同时授权

#创建用户qingbai的同时授予所有权限
mysql> grant all on *.* to qingbai@'172.16.46.%' identified by 'qingbai123'; Query OK, 0 rows affected, 1 warning (0.01 sec) #刷新权限(可以不用) mysql> flush privileges; Query OK, 0 rows affected (0.00 sec)

查看权限

#查看qingbai的权限
mysql> SHOW GRANTS FOR 'qingbai'@'172.16.46.%'G *************************** 1. row *************************** Grants for qingbai@172.16.46.%: GRANT ALL PRIVILEGES ON *.* TO 'qingbai'@'172.16.46.%' #这里显示用户qingbai对所有库有所有权限 1 row in set (0.00 sec) #查看clsn的权限 mysql> SHOW GRANTS FOR 'clsn'@'10.0.0.%'G
*************************** 1. row ***************************
Grants for clsn@10.0.0.%: GRANT USAGE ON *.* TO 'clsn'@'10.0.0.%'
*************************** 2. row ***************************
Grants for clsn@10.0.0.%: GRANT SELECT, INSERT, UPDATE, CREATE ON `clsn`.* TO 'clsn'@'10.0.0.%' #从这里我们就能看出权限。这里显示用户clsn对clsn库
2 rows in set (0.00 sec) 有SELECT(表查询), INSERT(表插入), UPDATE(表更新),CREATE(表创建)的权限

授权和root一样的权限

mysql> grant all on *.* to system@'localhost' identified by 'clsn123' with grant option;

回收权限

#语法
REVOKE 权限 ON 权限范围 FROM 用户名@主机名; 

示例

#创建测试用户blog,并授权对blog库拥有select,insert,update,delete,create,drop权限
mysql> grant select,insert,update,delete,create,drop on blog.* to 'blog'@'172.16.1.%' identified by 'blog123'; Query OK, 0 rows affected, 1 warning (0.00 sec) #查看用户blog的权限
mysql> SHOW GRANTS FOR 'blog'@'172.16.1.%'G
*************************** 1. row ***************************
Grants for blog@172.16.1.%: GRANT USAGE ON *.* TO 'blog'@'172.16.1.%'
*************************** 2. row ***************************
Grants for blog@172.16.1.%: GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP ON `blog`.* TO 'blog'@'172.16.1.%'
2 rows in set (0.00 sec) #回收用户blog的create,drop权限
mysql
> revoke create,drop on blog.* from 'blog'@'172.16.1.%'; Query OK, 0 rows affected (0.00 sec)
#验证回收后的权限
mysql> SHOW GRANTS FOR 'blog'@'172.16.1.%'G
*************************** 1. row ***************************
Grants for blog@172.16.1.%: GRANT USAGE ON *.* TO 'blog'@'172.16.1.%'
*************************** 2. row ***************************
Grants for blog@172.16.1.%: GRANT SELECT, INSERT, UPDATE, DELETE ON `blog`.* TO 'blog'@'172.16.1.%'
2 rows in set (0.00 sec

5.连接数据库

连接数据库

#本地连接
[root@linux-no ~]# mysql -uroot -p123456
#本地连接指定数据库
[root@linux-no ~]# mysql -uroot -D qingbai -p #这里-D选项就是指定连接的数据库,后面跟数据库名称 #本地连接通过指定的套接字文件连接数据库。通过-S指定套接字位置。
mysql -u root -p -S /var/lib/mysql/mysql.sock
#远程连接 [root@redis
-mysql-mongodb-no ~]# mysql -utest -h172.31.46.3 -ptest123 #-h后面跟需要连的远程数据库所在的地址
#连接数据库的同时执行对应命令,并且返回命令对应的结果,并不会进入mysql提示符。-e后面跟对应的命令
[root@linux-no ~]# mysql -uroot -p123456 -e 'show databases;'
mysql: [Warning] Using a password on the command line interface can be insecure.
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| qingbai            |
| sys                |
+--------------------+
    
连接数据库的常用选项

--host=host_name, -h host_name:服务端地址;

--user=user_name, -u user_name:用户名;

--port=port_num, -P port_num:服务端端口;

--socket=path, -S path

--database=db_name, -D db_name:

--compress, -C:数据压缩传输

--execute=statement, -e statement:非交互模式执行SQL语句;

--vertical, -E:查询结果纵向显示;

--protocol={TCP|SOCKET|PIPE|MEMORY}:

远程连接报错一般就是账号密码有问题,源数据库没有授权用户,防护墙的问题,还有一种就是在数据库的配置文件/etc/my.cnf找到如下一行注释,然后重启mysql

#bind-address = 127.0.0.1                     <---注释掉这一行就可以远程登录了

6.用户名,密码修改和主机修改和管理

1.用户名修改

#通过下面的方法重命名后的用户的密码以及权限不会发生改变,只有用户名会发生改变。
mysql> select user,host from mysql.user; +---------------+--------------+ | user | host | +---------------+--------------+ | clsn | 10.0.0.% | | blog | 172.16.1.% | | qingbai | 172.31.46.% | | test2 | 172.31.46.77 | | mysql.session | localhost | | mysql.sys | localhost | | root | localhost | | system | localhost | +---------------+--------------+ 8 rows in set (0.00 sec) mysql> rename user test2@172.31.46.77 to test20@172.31.46.77; #这里就是用户名修改的语法,前面红色加粗字段填老用户名,紫色加粗界面为新的用户名通过改
改动新用户名后面的主机域还能起到改主机域的作用 Query OK,
0 rows affected (0.00 sec) mysql> select user,host from mysql.user; +---------------+--------------+ | user | host | +---------------+--------------+ | clsn | 10.0.0.% | | blog | 172.16.1.% | | qingbai | 172.31.46.% | | test20 | 172.31.46.77 | | mysql.session | localhost | | mysql.sys | localhost | | root | localhost | | system | localhost | +---------------+--------------+ 8 rows in set (0.00 sec)

2.密码修改

密码相关总结可以查看大神这篇http://www.zsythink.net/archives/405讲解的比较细

方法1:
#密码修改语法 mysql
> set password for 用户名@localhost = password(‘新密码’); #实例 mysql> set password for 'qingbai'@'172.16.46.%' = password('Qingbai@123456'); Query OK, 0 rows affected, 1 warning (0.00 sec)
方法2:
使用mysqladmin设置语法
mysqladmin -u用户名 -p旧密码 password 新密码
#实例
[root@linux-no ~]# mysqladmin -uroot -p123456 password Iflytek@2020

 3.主机域修改

#主机域修改语法
mysql> update user set host = '新主机域' where user = '要更改主机域的用户名';
#实例
mysql> use mysql;                 #首先要切换数据库到mysql
mysql> update user set host = '172.31.46.%' where user = 'qingbai';

2.数据库变量(参数)管理

如果我们想要查看mysql的某些属性或状态,我们可以查看mysql的变量,我们也可以通过改变这些变量的值,来设置mysql的工作属性,我们可以把mysql变量理解成mysql的参数,或者说属性值

mysql中变量可以分为系统变量与状态变量

系统变量配置了mysql的运行环境属性。

状态变量显示了mysql运行过程中的状态信息。

而系统变量从作用域划分,又可以分为全局变量和会话变量。

全局级别的变量:golbal variables,作用域为整个mysql服务器。

会话级别的变量:session variables,作用域为当前会话。

我们可以通过修改这些系统变量达到设置mysql属性的目的。

状态变量也分为全局级别与会话级别,但是用户无法设置状态变量,只能查看。

我们总结一些怎样查看这些变量,以及怎样设置这些变量。

 1.查看全局级别的系统变量值

mysql> show global variables G           #这里G的作用表示表示将查询结果按列打印,如果不加这个,显示结果会很乱,不易于查看。   
。。。。。
*************************** 509. row ***************************
Variable_name: version_compile_os
        Value: Linux
*************************** 510. row ***************************
Variable_name: wait_timeout
        Value: 28800
510 rows in set (0.00 sec)
#通过上述命令,能够查询出510个系统变量。

2.根据变量名查看变量值,比如我想查看所有跟"版本"相关的属性值

mysql> show global variables like '%version%' G          #这里的like代表模糊查询匹配的作用
*************************** 1. row ***************************
Variable_name: innodb_version
        Value: 5.7.30
*************************** 2. row ***************************
Variable_name: protocol_version
        Value: 10
*************************** 3. row ***************************
Variable_name: slave_type_conversions
        Value: 
*************************** 4. row ***************************
Variable_name: tls_version
        Value: TLSv1,TLSv1.1,TLSv1.2
*************************** 5. row ***************************
Variable_name: version
        Value: 5.7.30
*************************** 6. row ***************************
Variable_name: version_comment
        Value: MySQL Community Server (GPL)
*************************** 7. row ***************************
Variable_name: version_compile_machine
        Value: x86_64
*************************** 8. row ***************************
Variable_name: version_compile_os
        Value: Linux
8 rows in set (0.00 sec)

3.比如想要查看字符集相关的全局设置。

mysql> show global variables where variable_name like 'character%';       #这里的where是过滤器的作用,这条语句的意思就是查询variable_namecharacter%的行,并过滤出来
+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | utf8                       |
| character_set_connection | utf8                       |
| character_set_database   | utf8                       |
| character_set_filesystem | binary                     |
| character_set_results    | utf8                       |
| character_set_server     | utf8                       |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)

4.比如想要查看某些日志是否开启或关闭。

mysql> show global variables where variable_name like '%log%' and value='off';   #这填语句的意思过滤出全局变量中variable_name的值为%log%value值为off的行
+-----------------------------------------+-------+                               其中variable_name为模糊匹配,value为精准匹配
| Variable_name                           | Value |
+-----------------------------------------+-------+
| binlog_direct_non_transactional_updates | OFF   |
| binlog_rows_query_log_events            | OFF   |
| general_log                             | OFF   |
| innodb_api_enable_binlog                | OFF   |
| innodb_locks_unsafe_for_binlog          | OFF   |
| innodb_undo_log_truncate                | OFF   |
| log_bin                                 | OFF   |
| log_bin_trust_function_creators         | OFF   |
| log_bin_use_v1_row_events               | OFF   |
| log_builtin_as_identified_by_password   | OFF   |
| log_queries_not_using_indexes           | OFF   |
| log_slave_updates                       | OFF   |
| log_slow_admin_statements               | OFF   |
| log_slow_slave_statements               | OFF   |
| log_syslog                              | OFF   |
| relay_log_recovery                      | OFF   |
| slow_query_log                          | OFF   |
| sql_log_off                             | OFF   |
+-----------------------------------------+-------+
18 rows in set (0.01 sec)

5.会话级别的sql操作语句

#如下语句查看会话级别的参数值
mysql> show session variables G
#会话级别和全局级别的差别就是global和session,如果不指定话默认是查看会话级别,如下sql语句
mysql> show variables G
#查看单个全局系统变量的值,sql语句如下,表示查看全局系统变量pid_file的值
mysql> select @@global.pid_file;
+----------------------------+
| @@global.pid_file          |
+----------------------------+
| /var/run/mysqld/mysqld.pid |
+----------------------------+
1 row in set (0.00 sec)
#查看单个会话变量的值,sql语句如下,表示查看会话变量warning_count的值
mysql> select @@session.warning_count;
+-------------------------+
| @@session.warning_count |
+-------------------------+
|                       0 |
+-------------------------+
1 row in set (0.00 sec)
#有的变量是独有的,他可能在全局级别,可能在会话级别,如果变量值指定错误的话,会报错。如果不清楚查询的变量在哪个级别,可以不指明global或者session如果不指明变量所在级别,
则表示优先从会话级别查找对应的变量,如果对应变量存在,则显示其值,如果在会话级别中对应的变量不存在,则回去全局级别中查找对应的变量值,示例如下 mysql
> select @@warning_count; +-----------------+ | @@warning_count | +-----------------+ | 0 | +-----------------+ 1 row in set (0.00 sec) mysql> select @@pid_file; +----------------------------+ | @@pid_file | +----------------------------+ | /var/run/mysqld/mysqld.pid | +----------------------------+ 1 row in set (0.00 sec)

6.状态变量的sql操作语句

#查看状态变量,sql语句如下
mysql> show status;
#同理可以通过like过滤出我们想要查询的变量名称和值,sql语句如下
mysql> show status like 'aborted_cl%';
+-----------------+-------+
| Variable_name   | Value |
+-----------------+-------+
| Aborted_clients | 1     |
+-----------------+-------+
1 row in set (0.00 sec)
#状态变量也分为全局和会话级别,全局级别sql语句如下
mysql> show global status;
#会话级别状态变量查询sql语句如下
mysql> show session status;
#从上面结果看出,如果不指定全局和会话级别的话,默认查的是会话级别的

7.变量值的修改

我们可以通过两种方法修改数据库变量:

运行时修改,如果是运行时修改,修改是否立即生效取决于修改的变量类型:

运行时修改global级别的变量:对修改之前建立的会话没有影响,仅对修改后新建立的会话有效;

运行时修改session级别的变量:仅对当前会话有效,且立即生效;

通过配置文件修改:需重启后生效,但是永久有效。

运行时修改对应变量的sql语句如下:

mysql> select @@session.autocommit;
+----------------------+
| @@session.autocommit |
+----------------------+
|                    1 |
+----------------------+
1 row in set (0.00 sec)

#通过上面sql语句我们看出
会话级别中autocommit变量的值为1,我们现在将会话级别中的autocommit变量的值改为0 mysql> set @@session.autocommit=0; Query OK, 0 rows affected (0.00 sec) #验证是否成功 mysql> select @@session.autocommit; +----------------------+ | @@session.autocommit | +----------------------+ | 0 | +----------------------+ 1 row in set (0.00 sec)
我们将设置系统变量的语法总结如下:

SET GLOBAL var_name = value;

SET @@GLOBAL.var_name = value;  

SET SESSION var_name = value;  

SET @@SESSION.var_name = value;  

不指定级别表示默认为设置会话级别的变量。

SET var_name = value;  
状态变量对于用户来说是只读的,所以,我们只要学会修改系统变量即可。

在修改系统变量时要记住如下注意点。

运行时修改的变量并非永久有效,重启后将会失效;

运行时修改global级别的变量:对修改之前建立的会话没有影响,仅对修改后新建立的会话有效;

运行时修改session级别的变量:仅对当前会话有效,且立即生效;

如果想要使设定永久有效,需要设置配置文件。

但是在不确定的情况下,不要随便修改配置文件,否则将可能会出现无法预计的问题。

2.mysql客户端工具

1.mysql客户端命令介绍

mysql命令客户端

用于数据库连接管理

将 用户SQL 语句发送到服务器

mysqladmin命令 :命令行管理工具

mysqldump命令 :备份数据库和表的内容

2.mysql命令说明

用于连接数据库

用于管理数据库通过下列方式进行管理

命令接口自带命令

  DDL:数据定义语言

  DCL:数据控制语言

  DML:数据操作语言

命令

命令说明

h 或 help 或 ? 

获取帮助

G

格式化输出(行转列)

T 或 tee

记录操作日志  tee /tmp/mysql.log

c 或 CTRL+c

退出mysql

s 或 status

查看数据库状态信息

. 或 source

mysql> source /tmp/world.sql

!

使用shell中的命令

 mysql> ! cat /etc/redhat-release

CentOS release 6.9 (Final) 

u 或use   

use  world

show databases  看当前所有数据库的名字

show tables   查看当前use到的数据库所有的表

show  tables from world   查看目标数据库下的表

快捷键

上下翻页、TAB键、ctrl +C 、ctrl +L

mysql中help命令的使用

在mysql命令行中输入mysql或 ?都可以查看帮助

mysql> help

使用 help contents查看完整的sql类别列表帮助

mysql> help contents

有关特定 SQL 类别或语句的帮助

mysql> help Account Management

查看 grant 的帮助

mysql> help GRANT

有关与状态相关的 SQL 语句的帮助

mysql> help status

source命令的使用

在 mysql 中处理输入文件:

如果这些文件包含 SQL 语句,则称为“脚本文件”或“批处理文件”。

使用 SOURCE 命令:

mysql> SOURCE /data/mysql/world.sql

或者使用非交互式:(尽量避免使用mysql 导入数据,会产生大量的无用日志)

mysql</data/mysql/world.sql

3.mysqladmin命令说明

基本语法

mysqladmin -u<name> -p<password> commands

命令说明图表

 4.mysqldump简单说明

mysqldump是一款数据库备份工具。

命令帮助及基本语法:

[root@db02 ~]# mysqldump --help
Dumping structure and contents of MySQL databases and tables.
Usage: mysqldump [OPTIONS] database [tables]
OR     mysqldump [OPTIONS] --databases [OPTIONS] DB1 [DB2 DB3...]
OR     mysqldump [OPTIONS] --all-databases [OPTIONS]

请参照mysqldump --help

3.SQL语句入门

DDL语句(数据定义语言)

定义范围:

        库 :名字、特性

        表:表名字、列

 1.数据库查看

查看数据库--查看全部

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
4 rows in set (0.00 sec)

查看数据库--模糊匹配

mysql> show databases like "%ys%";
+-----------------+
| Database (%ys%) |
+-----------------+
| mysql           |
| sys             |
+-----------------+
2 rows in set (0.00 sec)

查看你相关的帮助

mysql> ? show databases;
Name: 'SHOW DATABASES'
Description:
Syntax:
SHOW {DATABASES | SCHEMAS}
    [LIKE 'pattern' | WHERE expr]
。。。。。。。。。。。。。

2.数据库操作

创建一个数据库

mysql> create database qingbai; 

 通过show 命令能够查看创建的数据库的格式

mysql> show create database qingbai;
+----------+--------------------------------------------------------------------+
| Database | Create Database                                                    |
+----------+--------------------------------------------------------------------+
| qingbai  | CREATE DATABASE `qingbai` /*!40100 DEFAULT CHARACTER SET latin1 */ |         #从这里我们看出默认创建的数据库用的是默认字符集latin1,
+----------+--------------------------------------------------------------------+         此字符集不支持中文,建议更改     
1 row in set (0.00 sec)

创建数据库时定义字符编码

mysql> create database test charset gbk;       #这里的test就是要创建的库名,gbk就是要指定的字符编码
Query OK, 1 row affected (0.00 sec)

mysql> show create database test;
+----------+--------------------------------------------------------------+
| Database | Create Database                                              |
+----------+--------------------------------------------------------------+
| test     | CREATE DATABASE `test` /*!40100 DEFAULT CHARACTER SET gbk */ |
+----------+--------------------------------------------------------------+
1 row in set (0.00 sec)

存在的数据库修改字符编码

#查看数据库之前的字符编码
mysql> show create database qingbai; +----------+--------------------------------------------------------------------+ | Database | Create Database | +----------+--------------------------------------------------------------------+ | qingbai | CREATE DATABASE `qingbai` /*!40100 DEFAULT CHARACTER SET latin1 */ | +----------+--------------------------------------------------------------------+ 1 row in set (0.00 sec) mysql> alter database qingbai charset utf8; #这里的qingbai就是要修改的库名,utf8就是修改成的字符编码 Query OK, 1 row affected (0.00 sec) #验证是否修改成功 mysql> show create database qingbai; +----------+------------------------------------------------------------------+ | Database | Create Database | +----------+------------------------------------------------------------------+ | qingbai | CREATE DATABASE `qingbai` /*!40100 DEFAULT CHARACTER SET utf8 */ | +----------+------------------------------------------------------------------+ 1 row in set (0.00 sec)

 查看支持发字符集和校对规则

mysql> show character set;
+----------+---------------------------------+---------------------+--------+
| Charset  | Description                     | Default collation   | Maxlen |
+----------+---------------------------------+---------------------+--------+
| big5     | Big5 Traditional Chinese        | big5_chinese_ci     |      2 |
| dec8     | DEC West European               | dec8_swedish_ci     |      1 |
| cp850    | DOS West European               | cp850_general_ci    |      1 |
| hp8      | HP West European                | hp8_english_ci      |      1 |
| koi8r    | KOI8-R Relcom Russian           | koi8r_general_ci    |      1 |
。。。。。。。。。。。。。

删除数据库

mysql> show databases;      #查看现有数据库
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| qingbai            |
| sys                |
| test               |
+--------------------+
6 rows in set (0.00 sec)

mysql> drop database test;          #删除数据库test
Query OK, 0 rows affected (0.00 sec)

mysql> show databases;              #验证
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| qingbai            |
| sys                |
+--------------------+
5 rows in set (0.00 sec)

查看当前所在数据库

mysql> select database();             #这里显示目前不在任意数据库下
+------------+
| database() |
+------------+
| NULL       |
+------------+
1 row in set (0.00 sec)

切库

mysql> use qingbai;            #这里的qingbai就是我要切换的数据库
Database changed
mysql> select database();      #验证,是否切换成功
+------------+
| database() |
+------------+
| qingbai    |
+------------+
1 row in set (0.00 sec)

查看当前登录的用户

mysql> select user();
+----------------+
| user()         |
+----------------+
| root@localhost |
+----------------+
1 row in set (0.00 sec)

查看库里面的表

mysql> show tables;
+---------------------------+
| Tables_in_mysql           |
+---------------------------+
| columns_priv              |
| db                        |
| engine_cost               |
| event                     |
| func                      |
| general_log               |
| gtid_executed             |
| help_category             |
| help_keyword              |
| help_relation             |
| help_topic                |
| innodb_index_stats        |
| innodb_table_stats        |
| ndb_binlog_index          |
| plugin                    |
| proc                      |
| procs_priv                |
| proxies_priv              |
| server_cost               |
| servers                   |
| slave_master_info         |
| slave_relay_log_info      |
| slave_worker_info         |
| slow_log                  |
| tables_priv               |
| time_zone                 |
| time_zone_leap_second     |
| time_zone_name            |
| time_zone_transition      |
| time_zone_transition_type |
| user                      |
+---------------------------+
31 rows in set (0.00 sec)

3.DDL语句之管理表

表的属性:

字段、数据类型、索引

默认:字符集、引擎

表定义(列):

表名、列名

列属性(数据类型、列约束)

创建表

 
原文地址:https://www.cnblogs.com/qingbaizhinian/p/12720428.html