博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MySQL命令
阅读量:6316 次
发布时间:2019-06-22

本文共 3618 字,大约阅读时间需要 12 分钟。

数据库的操作可以分为两大类,表数据变更(DML)和表结构变更(DDL)。表数据变更就是增、删、改、查。表结构变更就是创建数据表,修改表结构等。接下来主要从这两方面来总结MySQL常用的操作语法。MySQL里对语法的关键词不敏感,因此本文中存在大小写混用的情况。

数据定义语言 DDL

定义数据库

创建数据库:create database <数据库名称>

删除数据库:drop database <数据库名称>

列出所有管理的数据库:show databases

切换到指定的数据库:use <数据库名称>

列出某数据库中的所有表:show tables

显示数据库被创建时的语言:show create database <数据库名称>

定义数据表

创建数据表

创建数据表的基本语法结构为, create table table_name (column_name column_type)

CREATE TABLE IF NOT EXISTS `runoob_tbl`(   `runoob_id` INT UNSIGNED AUTO_INCREMENT,   `runoob_title` VARCHAR(100) NOT NULL DEFAULT '',   `runoob_author` VARCHAR(40) NOT NULL DEFAULT '',   `submission_date` DATE,   PRIMARY KEY ( `runoob_id` ),   KEY ID_TITLE (`runoob_title`, `runoob_author`)    )ENGINE=InnoDB CHARSET=utf8;复制代码
  1. 如果你不想字段为 NULL 可以设置字段的属性为 NOT NULL, 在操作数据库时如果输入该字段的数据为NULL ,就会报错;
  2. AUTO_INCREMENT定义列为自增的属性,一般用于主键,数值会自动加1;
  3. PRIMARY KEY关键字用于定义列为主键。 您可以使用多列来定义主键,列间以逗号分隔;
  4. ENGINE 设置存储引擎;
  5. CHARSET 设置编码, 常用的编码格式有utf8、utf8mb4、gbk;
  6. UNIQUE 用限定建立索引的索引为唯一索引;

删除数据表

drop table <数据表名称>

查询表相关信息

查询建表语言:SHOW CREATE TABLE TABLE_NAME

查询索引信息:show index from <table name>

查询表字段:show columns from <table name>DESCRIBE tableName

修改表结构

创建一个表t1,然后在其基础上进行表结构的变更,表t1如下:`CREATE TABLE t1 (a INTEGER, b CHAR(10));`# 添加字段c,d和e(ADD)ALTER TABLE t1 ADD c bigint(20) COMMENT 'xxx',ADD d bigint(20) NOT NULL COMMENT 'xxx',ADD e bigint(20) NOT NULL COMMENT 'xxx';# 将表名重命名为t2(RENAME) ALTER TABLE t1 RENAME t2# 删除字段b(DROP)ALTER TABLE t2 DROP COLUMN b;# 修改字段b类型为VARCHAR(MODIFY)ALTER TABLE t2 MODIFY COLUMN b VARCHAR(255) NOT NULL DEFAULT '';# 修改字段名a为ach(CHANGE)ALTER TABLE t2 CHANGE a ach BIGINT(20) NOT NULL;# 添加一个名为key_a的索引ALTER TABLE t2 ADD INDEX key_a(a);# 删除名为key_a的索引ALTER TABLE t2 DROP INDEX key_a复制代码

数据操纵语言 DML

查询数据

SELECT column_name1, column_name2FROM table_name[WHERE Clause] [ORDER BY column_name1 DESC][LIMIT N][ OFFSET M]复制代码
  1. 根据过滤条件查询表中的一列或者多列或者全部列的数据, SELECT column_name1,column_name2 FROM table_name WHERE column_name1=xxx;其中过滤条件操作符有:=,<>,!=,<,<=,>,>=,BETWEEN AND,IS NULL;
  2. 可以使用星号(*)来代替字段,SELECT语句会返回表的所有字段数据;
  3. LIMIT来限制查询的数量。可以通过OFFSET指定SELECT语句开始查询的数据偏移量。默认情况下偏移量为0。SELECT * FROM table_name WHERE column_name1 = xxx LIMIT 0 5,表示从第一条开始查询,查5条记录;
  4. DISTINCT为查询出的某一列信息去重:SELECT DISTINCT column_name1 FROM table_name,对column_name1字段去重;
  5. ORDER BY子将取出的数据按照一列或者多列排序:SELECT column_name1,column_name2 FROM table_name ORDER BY column_name1 DESC, cust_name,ASC表示从小到大拍,DESC表示从大到小排,不指定则按默认从小到大排;
  6. IN操作符用来指定多个范围值:SELECT column_name1, column_name2 FROM table_name WHERE column_name1 IN (10, 20,30)。另外,NOT操作符可以和IN操作符配合使用,用于表示检索出不符合条件的所有数据;
  7. LIKE操作符用来进行模糊查询,与通配符配合使用,%表示任何字符出现任何次数;_表示一个字符:SELECT column_name1, column_name2 FROM table_name WHERE column_name1 LIKE '%hello%'

插入数据

插入语句的语法如下:

INSERT INTO t1 ( field1, field2,...fieldN ) VALUES ( value1, value2,...valueN )

如果要插入多组数据,用逗号分隔就行

INSERT INTO t1 ( field1, field2,...fieldN ) VALUES ( value1, value2,...valueN ), (value11, value22, ...,valueNN)

插入的数据主键或者UNIQUE键冲突时,会执行后面的UPDATE命令,否者执行INSERT命令 INSERT INTO t1 (a,b,c) VALUES (1,2,3) ON DUPLICATE KEY UPDATE c=c+1;

UPDATE修改数据

UPDATE table_name SET field1=new-value1, field2=new-value2 [WHERE Clause]

DELETE删除数据

DELETE FROM table_name [WHERE Clause] [LIMIT 20]

  1. 如果没有where子句,会删除整个表里的数据,是非常危险的操作;
  2. where子句用来限定删除指定的表;
  3. 如果确实要删除全表的数据,可以使用TRUNCATE代替,TRUNCATE也更加高效;

其他

事务控制

开启事务

开启事务有两种方式

  1. begin 常用的开启事务的方式,实际上BEGIN后事务没有立即开启,而是等到第一条语句执行后才开启;
  2. start transaction与begin相同;
  3. start transaction with consistent snapshot则是运行该语句后就立刻开启了事务,不用等到第一条语句的执行;

提交事务

commit

回滚事务

rollback

例如一个转账过程分为三步,从账户a扣款,然后增加账户b的余额,最后插入一条流水。三个过程只有有一个失败即为失败,就应该回滚,不提交就不会生效。

begin;update table1 set a = a - 1;update table2 set a = a + 1;insert into table3 (a, b, c, d) value (1, 2, 3, 4);commit;复制代码

转载地址:http://pyyaa.baihongyu.com/

你可能感兴趣的文章
log4j 每次运行生成文件
查看>>
“经常加班”有误区
查看>>
jquery各种事件触发实例
查看>>
我的友情链接
查看>>
MY TroubleShooting
查看>>
鸟哥学习笔记---DNS
查看>>
Linux 常用目录管理命令(cd pwd mkdir rmdir)
查看>>
java程序员菜鸟进阶(四)oracle基础详解(四)oracle开启和关闭服务程序——解决安装oracle占用大量内存...
查看>>
Flask_学习笔记_09: Flask中的继承
查看>>
Mahout源码目录说明
查看>>
我的友情链接
查看>>
Java学习日志(17-2-集合框架工具类Arrays及其他特性)
查看>>
HTTP响应头和请求头信息对照表
查看>>
Chrome完美屏蔽优酷广告及黑屏教程
查看>>
一份不错的php面试题(附答案)
查看>>
前端工程资源发布、优化
查看>>
nginx安装(ubuntu14.04)
查看>>
SQLServer2008备份和恢复
查看>>
WinCE 6.0 的编译
查看>>
访问Nginx上的资源时出现403的原因及解决办法
查看>>