零散的MySQL基础

导读:本篇文章讲解 零散的MySQL基础,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com


前言

在日常开发中,经常一些不常用且又是最基础的知识,过了一段时间之后,会忘记或者变得模棱两可。本篇主要记录一些关于MySQL数据库的基础知识,以便日后快速查看。


提示:以下是本篇文章正文内容,下面案例可供参考

SQL语句

SQL命令分可以分为四组:DDL、DML、DCL和TCL。四组中包含的命令分别如下:
图片来源于水印
(图片来源于水印)

1.DDL

DDL是数据定义语言(Data Definition Language)的简称,它处理数据库schemas和描述数据应如何驻留在数据库中。

CREATE:创建数据库及其对象(如表,索引,视图,存储过程,函数和触发器)
ALTER:改变现有数据库的结构
DROP:从数据库中删除对象
TRUNCATE:从表中删除所有记录,包括为记录分配的所有空间都将被删除
COMMENT:添加注释
RENAME:重命名对象
常用命令如下:

# 建表
CREATE TABLE demo(
  id int(4) primary key auto_increment COMMENT '主键ID',
  name varchar(10) unique,
  age int(3) default 0,
  identity_card varchar(18)
  # PRIMARY KEY (id) // 也可以通过这种方式设置主键
  # UNIQUE KEY (name) // 也可以通过这种方式设置唯一键
  # key/index (identity_card, col1...) // 也可以通过这种方式创建索引
) ENGINE = InnoDB;

# 设置主键
alter table demo add primary key(id);

# 删除主键
alter table demo drop primary key;

# 设置唯一键 当有人想对非主键的列和列组实施唯一约束时,可以使用它
alter table demo add unique key(column_name);

# 删除唯一键
alter table demo drop index column_name;

# 创建索引
alter table demo add [unique/fulltext/spatial] index/key index_name (identity_card[(len)] [asc/desc])[using btree/hash]
create [unique/fulltext/spatial] index index_name on demo (identity_card[(len)] [asc/desc])[using btree/hash]
example: alter table demo add index idx_na(name, age);

# 删除索引
alter table demo drop key/index identity_card;
drop index index_name on demo ;

# 查看索引
show index from demo ;

# 查看列
desc demo ;

# 新增列
alter table demo add column column_name varchar(30);

# 删除列
alter table demo drop column column_name;

# 修改列名
alter table demo change column_name new_name varchar(30);

# 修改列属性
alter table demo modify column_name varchar(22);

# 查看建表信息
show create table demo ;

# 添加表注释
alter table demo comment '表注释';

# 添加字段注释
alter table demo modify column column_name varchar(10) comment '姓名';

2.DML

DML是数据操纵语言(Data Manipulation Language)的简称,包括最常见的SQL语句,例如SELECT,INSERT,UPDATE,DELETE等,它用于存储,修改,检索和删除数据库中的数据。

-- 查询从第11条数据开始的连续5条数据
select * from demo limit 10, 5

group by 默认情况下,MySQL中的分组(group by)语句,不要求select返回的列,必须是分组的列或者是一个聚合函数。
如果select查询的列不是分组的列,也不是聚合函数,则会返回该分组中第一条记录的数据。对比下面两条SQL语句,第二条SQL语句中,cname既不是分组的列,也不是以聚合函数的形式出现。所以在liming这个分组中,cname取的是第一条数据。

mysql> select * from c;
+-----+-------+----------+
| CNO | CNAME | CTEACHER |
+-----+-------+----------+
|   1 | 数学  | liming   |
|   2 | 语文  | liming   |
|   3 | 历史  | xueyou   |
|   4 | 物理  | guorong  |
|   5 | 化学  | liming   |
+-----+-------+----------+
5 rows in set (0.00 sec)

mysql> select cteacher, count(cteacher), cname from c group by cteacher;
+----------+-----------------+-------+
| cteacher | count(cteacher) | cname |
+----------+-----------------+-------+
| guorong  |               1 | 物理  |
| liming   |               3 | 数学  |
| xueyou   |               1 | 历史  |
+----------+-----------------+-------+
3 rows in set (0.00 sec)

having 该关键字用于对分组后的数据进行筛选,功能相当于分组之前的where,不过要求更严格。过滤条件要么是一个聚合函数( … having count(x) > 1),要么是出现在select后面的列(select col1, col2 … group by x having col1 > 1)

3.DCL

DCL是数据控制语言(Data Control Language)的简称,它包含诸如GRANT之类的命令,并且主要涉及数据库系统的权限,权限和其他控件。
GRANT :允许用户访问数据库的权限
REVOKE:撤消用户使用GRANT命令赋予的访问权限

4.TCL

TCL是事务控制语言(Transaction Control Language)的简称,用于处理数据库中的事务
COMMIT:提交事务
ROLLBACK:在发生任何错误的情况下回滚事务

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/119829.html

(0)
seven_的头像seven_bm

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!