温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

MySQL常用语句

发布时间:2020-06-07 19:42:07 来源:网络 阅读:721 作者:ZYJTF_Zhang 栏目:MySQL数据库

      Hi,大家好,今天我给大家带来的是“MariaDB(MySQL)常用语句的使用


      说明

              1MySQL语句不区分字符大小写,在Unix或类Unix(Linux)系统下“参数”区分字符大小写

              2、多数MySQL语句以";"结尾;如果结尾处不写";"MySQL会等待输入下一条语句,直到结尾有";"为止

              3、一行需要执行多条语句用";"进行分隔

           本篇内容以Linux系统为例;本文中的[ 符号里边的内容为可选内容,既可有可无的 ]{ 符号里的内容为必须给出的内容 }| 符号为或者之意;语句之前的符号# Linux系统的命令提示符(需在系统下执行的)、符号> MySQL数据库提示符(需在MySQL数据库中执行的);字体颜色为红色的是需要注意的地方(可能会出现误操作的地方)

 

温馨提示:使用电脑阅读效果更佳

 

MariaDB(MySQL)语句分类

      服务端命令:通过mysql连接发往服务器执行并取回结果(SQL语句)

              DDL(Data Defined Language)要用于管理数据库组件,例如表、索引、视图、用户、存储过程

                     CREATE DATABASE, ALTER DATABASE, DROP DATABASE, CREATE TABLE, ALTER TABLE, DROP TABLE, CREATE INDEX, DROP INDEX, CREATE USER, DROP USER, SELECT

            DML(Data Manipulation Language)数据操纵语言,主要用管理表中的数据,实现数据的增、删、改、查

                     INSERT, DELETE, UPDATE, SELECT

              DCL:权限管理

                     GRANT, REVOKE

      客户端命令:本地执行

以下语句有两种表示方式(clear,\c),语句结尾处不用加; 但加了也不会出错

语句

说明

? (\?)

获取命令帮助

clear (\c)

清除当前的输入语句

connect (\r)

重新连接MySQL

delimiter (\d)

设置语句分隔符,默认为分号;

ego (\G)

语句结束标记,结果以垂直方式显示

exit (\q)

退出MySQL

go (\g)

语句结束标记

help (\h)

显示此帮助

prompt (\R)

更改MySQL提示符

quit (\q)

退出MySQL

source (\.)

装载并运行SQL脚本,脚本存放的位置"MySQL"用户需要有权限读取

status (\s)

获取MySQL状态信息

system (\!)

执行shell命令

use (\u)

设定哪个库为默认数据库

 

     一、登录/退出MySQL

           登录

                 登录本地数据库

                        匿名登录

                                   # mysql [数据库名称]

                                   # mysql -p [数据库名称]

                           指定用户登录

                                   # mysql -u 用户名 -p [数据库名称]

                                   # mysql -u 用户名 –p用户的密码 [数据库名称]

                  远程登录数据库

                            # mysql -h 主机 -u 用户名 -p用户的密码 [数据库名称]

                 注意:在登录时可指定数据库"[DATABASE_NAME]"

           退出

                     > exit

                     > quit

                     > \q

                     Ctrl+C

MySQL常用语句

     二、选择/切换数据库:在数据库中执行的操作都要先选择数据库

              > USE 数据库名称;

MySQL常用语句

 

     三、数据库管理

           创建

                 创建一个新的数据库

                            > CREATE {DATABASE | SCHEMA} 数据库名称;

                 创建一个新的数据库,如果数据库不存在,则创建

                            > CREATE DATABASE IF NOT EXISTS 数据库名称;

                      注意:数据库名称在创建时定义,后期不可更改

MySQL常用语句

           修改

                 修改指定数据库的默认字符集

                            > ALTER DATABASE 数据库名称 CHARACTER SET '字符集名称';

           查询

                  查看当前设备上已有的数据库

                            > SHOW DATABASES;

                     查看以指定字符开头的数据库

                            > SHOW DATABASES LIKE 'name%';

                     查看以指定字符结尾的数据库

                            > SHOW DATABASES LIKE '%name';


MySQL常用语句

                     查看数据库所支持的引擎

                            > SHOW ENGINES;

                    查看所支持的字符集

                            > SHOW CHARACTER SET;

                      常见字符集

                                   big5:繁体中文

                                   gb2312:简体中文

                                   utf8:统一的字符编码标准

                    查看字符集的排序方式

                            > SHOW COLLATION;

                     看当前数据库的版本号和当前日期

                            > SELECT VERSION(), CURRENT_DATE;

           删除

                    删除数据库:删库需小心(MySQL没有回收站)

                            > DROP {DATABASE | SCHEMA} 数据库名称;

                            > DROP {DATABASE | SCHEMA} [IF EXISTS] 数据库名称;

MySQL常用语句

                     建议把不用的数据库移动到其他位置,而不是删除

                            # mv /var/lib/mysql/DATABASE_NAME  /PATH/TO/DIRECTORY_NAME

MySQL常用语句

MySQL常用语句

 

     四、数据表管理

           创建

                    在数据库内创建数据表

                            > USE 数据库名称;

                            > CREATE TABLE 数据表名称 (字段1 数据类型 修饰符,字段2 数据类型 修饰符,字段3 数据类型 修饰符 ...) [table_option];

                    MySQL数据类型参考:点我查看

                        在创建数据表时还可以定义以下内容:

                            定义键

                                          主键:PRIMARY KEY (字段1, 字段2, ...)

                                          唯一键:UNIQUE KEY  (字段1, 字段2,...)

                                          外键:FOREIGN KEY (column)

                            定义索引

                                          KEY|INDEX [索引名称] (字段1, 字段2,...)

MySQL常用语句

> CREATE TABLE server ( IDC_ROOM VARCHAR(3) NOT NULL,RACK_SLOT VARCHAR(10)NOT NULL ,SN VARCHAR(30) PRIMARY KEY,HOSTNAME VARCHAR(16) NOT NULL,MACHINE_TYPE VARCHAR(10) NOT NULL ) ;

                           table_option:

                              | ENGINE [=] engine_name 【定义存储引擎】

                              | AUTO_INCREMENT [=] value 【设置默认自动增长数据从数字几开始算,默认为1

                              | [DEFAULT] CHARACTER SET [=] charset_name 【定义字符集,如不定义则从数据库继承】

                              | [DEFAULT] COLLATE [=] collation_name 【定义排序规则】

                              | COMMENT [=] 'string' 【定义数据表的注释信息】

                              | MAX_ROWS [=] value 【定义最大行数】

                              | MIN_ROWS [=] value 【定义最小行数】

                              | PASSWORD [=] 'string' 【加密】

                             | ROW_FORMAT [=] {DEFAULT|DYNAMIC|FIXED|COMPRESSED|REDUNDANT|COMPACT} 【定义行格式】

                                         DEFAULT:默认格式

                                         DYNAMIC:动态格式

                                         FIXED:固定长度

                                         COMPRESSED:压缩存储

                                         REDUNDANT:冗余存储

                                         COMPACT:紧致存储

 

                           键类型可以在字段中指明

                                   > CREATE TABLE 数据表名称 (ID TINYINT NOT NULL AUTO_INCREMENT UNIQUE KEY,NAME VARCHAR(20) NOT NULL UNIQUE KEY);


                         也可以单独指明:把多个字段联合起来定义(多字段索引)

                                   > CREATE TABLE 数据表名称 (ID TINYINT NOT NULL AUTO_INCREMENT ,NAME VARCHAR(20) NOT NULL,UNIQUE KEY(ID,NAME));

                                           注意:创建数据表的时候,表名不可使用"table"作为其名称


                  在指定数据库中创建数据表

                            > CREATE TABLE 数据库名称.数据表名称 (字段1 数据类型 修饰符,字段2 数据类型 修饰符,字段3 数据类型 修饰符 ...) [table_option];


           插入

                  向数据表中插入数据

                        一次插入一行

                                   > INSERT INTO [数据库名称.]数据表名称(字段1,字段2,字段3 ...)

                        一次插入多行

                                   > INSERT INTO [数据库名称.]数据表名称(字段1,字段2,字段3 ...) {VALUES | VALUE} (DATE1: '字段1的值','字段2的值',字段3的值' ...),(DATE2: '字段1的值','字段2的值','字段3的值' ...) ...;

注意

                                   (1) 使用INSERT语句,可以一次插入一行,也可以一次插入多行"(line1_data),(line2_data)..."

                                   (2) 如果想用INSERT语句插入空值时,可以直接用NULL

                    

                     替换表中已有数据:如果没有数据,则插入;如果已有数据,则替换(支持单行插入、多行插入、给定字段插入或全字段插入)

                            > REPLACE [INTO] 数据表名称(字段1,字段2,字段3 ...) VALUES ('字段1的值','字段2的值','字段3的值','字段4的值','字段5的值','字段6的值')[,(line2_data)...];


                 从文件中读取数据并插入到表中:一个空表,填充它的一个简易方法是创建一个文本文件,每条信息各一行,然后用一个语句将文件的内容装载到表中

                            > LOAD DATA LOCAL INFILE '/PATH/TO/ FILE_NAME' INTO TABLE [数据库名称.]数据表名称;

                      注意:如果需要填充空值时,使用\N(反斜线+字母N)表示

                       我演示的是从文件中导入到数据库,表中的敏感数据我已修改

MySQL常用语句

                 EXCEL表格中插入数据:点我查看

           修改

                  修改数据表的名称

                            > RENAME TABLE [数据库名称.]数据表名称 TO 数据库名称.新表名称 ;

                            > ALTER TABLE [数据库名称.]数据表名称 RENAME TO 数据库名称.新表名称;

MySQL常用语句

                 修改注释信息

                            > ALTER TABLE [数据库名称.]数据表名称 COMMENT = '注释信息';

MySQL常用语句

                     给表中添加一个新字段

                            > ALTER TABLE 数据表名称 ADD 新字段名 数据类型 修饰符 [FIRST | AFTER 字段名];

                                   指明字段位置

                                          FIRST:添加到第一字段

                                          AFTER:添加到哪个字段后面

                                          如果不指定字段位置,则放在最后

MySQL常用语句

                 修改字段名称(CHANGE)

                            > ALTER TABLE 数据表名称 CHANGE 原名称 新名称 原有属性信息(数据类型、修饰符...;

                 修改/更新指定字段

                            > UPDATE [LOW_PRIORITY] [IGNORE] [数据库名称.]数据表名称 SET 字段1=字段1的值[,字段2=字段2的值] ... WHERE where_condition [ORDER BY ...] [LIMIT row_count]

MySQL常用语句

                         注意:用UPDATE修改行时必须使用WHERE子句指明条件(尽量指主键),否则将修改所有

           查询

                    查询当前数据库中的数据表

                            > USE 数据库名称;

                            > SHOW TABLES;

                    查询指定库中的数据表

                            > SHOW TABLES IN 数据库名称;

                            > SHOW TABLES FROM 数据库名称;

                     查看数据表的详细信息

                            > DESCRIBE [数据库名称.]数据表名称;

                            > DESC [数据库名称.]数据表名称;

MySQL常用语句

                    查看数据表的状态信息

                            > SHOW TABLE STATUS [LIKE '数据表名称'];

                  查看数据表的状态信息(垂直显示)

                            > SHOW TABLE STATUS [LIKE '数据表名称']\G;

                                          输出内容说明

MySQL常用语句

                   查看创建命令

                           > SHOW CREATE TABLE [数据库名称.]数据表名称;

MySQL常用语句

                 显示以指定字符开头的表的状态

                            > SHOW TABLE STATUS WHERE Name LIKE '数据表名称%'\G;

                 显示指定时间创建的表

                            > SHOW TABLE STATUS WHERE Create_time LIKE '时间%'\G;

MySQL常用语句

           SELECT语句:用来从数据表中检索信息

                            > SELECT SELECT_EXPR FROM [数据库名称.]数据表名称1,[数据表名称2 ...] [WHERE where_condition];

SELECT语句的子句的执行过程

MySQL常用语句

                           SELECT_EXPR

                                   *:所有字段(所有行,所有列)

                                   ALL

                                   字段1,字段2,字段3:投影;只显示指定字段

                                   DISTINCT:相同的数据,只显示一次

                                   field AS field_alias:给field取个别名field_alias

 

                            只查看表中不同的数据

                                   > SELECT DISTINCT FROM [数据库名称.] 数据表1,[数据表2 ...];

                           查看指定表中所有字段(慎用)

                                   > SELECT * FROM [数据库名称.]数据表名称1,[数据表2 ...];

MySQL常用语句

                            查看指定表中的指定列(如果表太大则不适合执行)

                                   > SELECT 字段1,字段2,字段3 ... FROM [数据库名称.]数据表名称;

                      定义显示的字段别名

                                   > SELECT 字段 AS 字段别名 FROM [数据库名称.]数据表名称;

MySQL常用语句

MySQL常用语句

                           FROM子句:指定要查询的关系

                                   单表查询(简单查询):后面跟一个表名

                                   多表查询:后面跟多个表名

                                   子查询:后面跟WHERE子句

 

                            WHERE子句:选择、指明条件;只输出符合条件的行(重要)

                                   > SELECT 字段1,字段2,字段3 ... FROM [数据库名称.]数据表名称 WHERE where_condition;

                                         where_condition

                                             操作符

BETWEEN x AND y

xy范围之间的值

IS NULL

空值

IS NOT NULL

非空值

IN (LIST)

使用列表给出的值;用于离散取值

MySQL常用语句

MySQL常用语句

                                                算数运算

+

-

*

/

%

取模

                                                比较表达式

大于

小于

>=

大于等于

<=

小于等于

=

等于

!= <>

不等于

<=>

空值比较

MySQL常用语句

                                           组合条件(逻辑运算)

AND (&&)

与;并且关系,既两个条件同时满足

OR (||)

或;或者关系,既两个条件满足一个

NOT (!)

非;条件不满足即为真

                                                            注意:ANDOR可以混用,但ANDOR具有更高的优先级。如果你使用两个操作符,使用圆括号指明如何对条件进行分组是一个好主意( NOT xxx AND NOT xxx AND NOT xxx 等于NOT ( xxx OR xxx OR xxx ) )

MySQL常用语句

                                       字符串比较

                                             通配符

                                                               LIKE '模式':支持使用“通配符”做模糊匹配

                                                                      %:任意长度的任意字符

                                                                      _:任意单个字符

MySQL常用语句

                                             正则表达式

                                                               {RLIKE | REGEXP} '模式':基基于正则表达式做模式匹配;不用索引、效率低

                                                               正则表达式元字符:点我查看

                      排序(ORDER BY):将查询到的结果排序显示;如果表太大,排序操作极其消耗资源

                             > ORDER BY 字段名称 {ASC | DESC}

                            升序:默认(ASC)

                                           > SELECT 字段1,字段2,字段3 ... FROM [数据库名称.]数据表名称 ORDER BY 字段名称 ASC;

                            降序(DESC)

                                           > SELECT 字段1,字段2,字段3 ... FROM [数据库名称.]数据表名称 ORDER BY 字段名称 DESC;

MySQL常用语句

                                   注意:默认是区分字符大小写的,如不想区分字符大小写则执行“ORDER BY BINARY 字段名称

                      LIMIT子句

                                   LIMIT [offset,]count

                                   LIMIT #:只显示前#行的内容

                                   LIMIT x,y:忽略x行,显示y行后的行

                                          x:偏移量

                                          y:偏移后取几个值予以显示

                             注意:在MySQL中字符串必须加引号,而数值一定不能加引号

                      聚合计算

                                   > SELECT 聚合计算函数 FROM [数据库名称.]数据表名称;

                                   聚合计算函数

                                          AVG(字段名称):求平均值

                                          MAX(字段名称):求最大值

                                          MIN(字段名称):求最小值

                                          SUM(字段名称):求合

                                          COUNT(字段名称):求个数之和

MySQL常用语句

                      分组(GROUP BY):分组主要目的是为了做聚合计算

                                   > SELECT * FROM [数据库名称.]数据表名称 GROUP BY '字段名';

                                   对分组进行过滤

                                          > HAVING conditions;

           复制

                    复制表结构

                            > CREATE TABLE 数据表名称 LIKE 原数据库.原数据表;

                 复制表中的几个字段并将其创建成一个新表(不会复制其属性)

                            > CREATE TABLE 数据表名称 SELECT 字段1,字段2,字段3 ... FROM 原数据库.原数据表;

           删除   

                 删除表:删表需小心(MySQL没有回收站)

                            > DROP TABLE [IF EXISTS] [数据库名称.]数据表名称;

                 删除表中的行(DELETE)

                            > DELETE FROM [数据库名称.]数据表名称 [WHERE where_condition];

                            > DELETE FROM 数据表名称 [ORDER BY ...] [LIMIT row_count]

MySQL常用语句

                           注意:用DELETE删除行时必须使用WHERE子句,否则将清空整张表(DELETE FROM table_name)

                 先排序后删除

                            > DELETE FROM [数据库名称.]数据表名称 [WHERE where_condition] [ORDER BY '字段名' [DESC]]

                 删除字段(列)

                            > ALTER TABLE 数据表名称 DROP 字段名称;

                 清空整张数据表

                            > TRUNCATE [数据库名称.]数据表名称;

 

     五、索引管理

             创建

                     创建索引

                            > CREATE {INDEX | INDEXES} 索引名称 ON [数据库名称.]数据表名称(字段1,字段2,字段3 ...);

MySQL常用语句

                 创建多列索引

                            > CREATE UNIQUE {INDEX | INDEXES} 索引名称 ON [数据库名称.]数据表名称;      

                     给表中指定的字段加入索引

                            > ALTER TABLE [数据库名称.]数据表名称 ADD INDEX(‘字段名称’);

             查询

                 查看表中索引

                            > SHOW {INDEX | INDEXES} FROM [数据库名称.]数据表名称;

MySQL常用语句

          删除:索引不用时,要立即删除

                  删除索引:这可能会导致查询操作降低

                            > DROP {INDEX | INDEXES} 索引名称 ON [数据库名称.]数据表名称;

MySQL常用语句

           注意:INDEX为一个索引,INDEXES为多个索引

 

     六、键管理

           创建

                 (1) 在数据表创建的时候定义主键

                 (2) 给已有的表中指定的字段加入主键

                            ALTER TABLE [数据库名称.]数据表名称 ADD {PRIMARY KEY | UNIQUE KEY}(‘字段名称’);

           修改

                     先删除键,再添加键

           查询

                    查询主键

                        > SHOW KEYS FROM [数据库名称.]数据表名称 WHERE key_name='PRIMARY';

           删除

                     删除键:不是自增长的才可以删除,如果是自增长(有auto_increment属性)必须先将表中其他属性删除

                            > ALTER TABLE [数据库名称.]数据表名称 DROP {PRIMARY KEY | UNIQUE KEY};

 

     七、用户管理

           MySQL用户和操作系统中的用户不同;不能用MySQL用户登录操作系统,同样也不能用操作系统用户访问MySQL

           用户是公开的,大家都可以看到;而密码只有某个授权使用用户才能获取

           MySQL使用自己独有的加密机制password()函数加密用户密码

           MySQL默认管理员是root,和操作系统管理员名称一致

           MySQL用户由'用户名'@'主机'共同组成

                     MySQL用户名:不能超过16个字符

                 主机

                           主机名:zhangdaifu

                            IP地址:10.0.0.1

                           网络地址:10.0.0.1/255.0.0.0

                                   支持使用通配符表示:10.%.%._/255.0.0.0

                                          如需表示通配符本身的含义则需要进行转义\

           创建

                  创建用户帐号

                            > CREATE USER '用户名'@'主机';

                    创建用户账号并设置其密码

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

 

           修改

                  修改用户名

                            > UPDATE mysql.user SET USER='新用户名称' WHERE User='用户名';

              查询:MySQL用户在mysql.user表中保存

                 查看所有用户信息

                            > SELECT User,Host[, ...] FROM mysql.user;

                 查看指定用户信息

                            > SELECT User,Host[, ...] FROM mysql.user WHERE User='用户名';

           删除

                    删除用户帐号

                            > DROP USER '用户名'[@'主机' [, 用户名@主机] ...] ;

 

     八、密码管理

           创建

                    给用户配置密码

                            为当前登录用户配置密码

                                   > SET PASSWORD = PASSWORD("用户的密码");

           修改

                    通过命令行修改

                            # mysqladmin -u'用户名' -p'老密码' password '新密码'

                     使用UPDATE直接编辑user 

                            > UPDATE mysql.user SET PASSWORD=用户的密码 WHERE User='用户名';

                            刷新权限:flush privileges;

                  通过SET PASSWORD语句修改

                            > SET PASSWORD FOR 用户名=PASSWORD('用户的密码');

                     参考:https://blog.csdn.net/qq_33285112/article/details/78982766

           查询

                     > SELECT User,Password FROM mysql.user WHERE User='用户名';

           删除   

                    清除指定用户密码

                            > UPDATE mysql.user SET PASSWORD='' WHERE User='用户名'

 

     九、权限管理

           MySQL使用帐号的目的是为了“认证”

           MySQL用户信息存储在以下表中

user

存储了用户的账号、全局权限及其他非权限字段

db

数据库级别的权限、库级别的权限

host

已被废弃,已被整合进user

tables_priv

表级别的权限

columns_priv

列(字段)级别的权限

procs_priv

存储过程和存储函数相关的权限

proxies_priv

代理用户权限

                     MySQL服务器在启动时会读取这6张表,并在内存中生成“授权表”

           授权

                     权限级别:管理权限、数据库、数据表、字段、存储例程

                            > GRANT permissions_type,... ON [object_type] { [数据库名称.]数据表名称 | function_name | procedure_name } TO 'user_name'@'host' [IDENTIFIED BY 'password'] [WITH GRANT OPTION];

                            > flush privileges

                                   权限类型

                                          ALL:所有权限;不安全

                            database_name.table_name

                                         *.*:所有库的所有表

                                      数据库.*:指定库的所有表

                                   数据库.数据表:指定库的指定表

                                       数据库.routine_name:指定库上的存储过程或存储函数

                                   [object_type]

                                      TABLE给数据表授权;默认

                                  FUNCTION给存储函数授权

                                      PROCEDURE给存储过程授权

                                  [WITH GRANT OPTION]将自己所拥有的权限转权一个副本给其他用户

 

           查询

                     查看当前用户所拥有的权限

                            > SHOW GRANTS;

                     查看指定用户所拥有的权限

                            > SHOW GRANTS FOR '用户名'@'权限类型';

           删除

                     回收授权

                            > REVOKE 权限类型[, ...] ON  [数据库名称.]数据表名称 FROM '用户名'@'主机';

           注意:MariaDB服务进程启动时,会读取mysql库的所有授权表至内存中

                     (1) GRANTREVOKE命令等执行的权限操作会保存于表中,MariaDB此时一般会自动重读授权表,权限修改会立即生效

                     (2) 其它方式实现的权限修改,要想生效,必须手动运行FLUSH PRIVILEGES命令方可

 

           检查上一条语句是否正确执行(类似于Shell变量"$?"

                     > SHOW WARNINGS;

 

      常见错误

              (1) ERROR 1046 (3D000): No database selected

                     未选择数据库

              (2) ERROR 1050 (42S01): Table 'table1' already exists

                     'table1'已存在

              (3) ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)

                     登录数据库没有输入密码

              (4)   ERROR 1317 (70100): Query execution was interrupted

                     查询执行被中断

 

       更多参考: http://www.bluestep.cc/demos/mysql/manual/index.htm


向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI