【MySQL】SQL语言的基本操作

目录

  • SQL的组成
  • SQL语言
    • 索引
      • 索引的创建:
      • 添加索引:
      • 索引的查看
      • 索引的删除
    • 数据库
      • 创建数据库
      • 选择数据库
      • 修改数据库
      • 删除数据库
      • 查看数据库
    • 数据表
      • 创建表:
      • 修改表
      • 删除表
      • 查看表
    • 数据
      • 数据更新
      • 数据查询

SQL的组成

SQL 的定义:一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统
SQL 又称为结构化查询语言

数据定义语言(DDL Definition)
主要SQL语句有:
create:用于创建数据库或者数据库对象
alter:用于对数据库或数据库对象进行修改
drop:用于删除数据库或数据库对象

数据操纵语言(DML Manipulation)
包括的主要SQL语句有:
select:用于从表或视图中检索数据;
insert:用于讲数据插入表或视图中;
update:用于修改表或视图中的数据,一行或多行;
delete:用于删除表或视图(指定/全部)数据。

数据控制语言(DCL Control)
包括的主要SQL语句有:
grant:用于授予权限;
revoke:用于收回权限

SQL语言

[**] 中为可选项

索引

索引是提高数据文件访问效率的有效方法。

弊端:索引是以文件的形式存储的(需要占用磁盘空间)
索引在提高查询速度的同时,却会降低更新表的速度

按照用途划分:

  1. 普通索引(index)
  2. 唯一性索引 (unique)
  3. 主键 (primary key)
  4. 全文索引
  5. 聚簇索引

列级索引: 单列索引、 组合索引(多列组合)

索引的创建:

一个表可以有多个索引,但是每个索引在表中的名称唯一
通常再创建表时,一同创建索引
常用:
create [unique] index index_name on tb_name(column_name[len][asc|desc],...)

添加索引:

alter table tb_name

索引的查看

show index|indexs|keys from|in tb_name

索引的删除

drop index index_name on tb_name
alter table tb_name drop index_name


数据库

创建数据库

create database|schema [if not exists] db_name

选择数据库

use db_name

修改数据库

alter (database|schema) [db_name]

删除数据库

drop database db_name

查看数据库

show (databases|schemas)


数据表

数据类型:

  1. 数值类型:整数类型、浮点类型
  2. 日期和事件类型:日期类型、日期事件类型
    、时间戳类型
  3. 字符串类型:固定长度类型、可变长度类型、文本类型

创建表:

create table [if not exists] tb_name(
字段名 数据类型 [列级完整性约束条件] [默认值]
……)

常用约束

约束语句 作用
AUTO_INCREMENT 自增,多用于id字段,记录数据数量
PRIMARY KEY 主键约束,不能为空,具有唯一性
UNIQUE 唯一约束,具有唯一性,不能为空

添加外键索引的语句
FOREIGN KEY (本表字段名) REFERENCES 参考表(参考字段)

给字段添加注释,使用的关键字是COMMENT


修改表

添加字段:
alter table tb_name add [column] 新字段名
修改字段
alter table tb_name change [column] 原字段名 新字段名 数据类型 [约束条件]
删除字段
alter table tb_name drop [column] 字段名
重命名表名
alter table 原表名 rename [to] 新表名
rename table 原表名1 to 新表名1


删除表

drop table tb_name


查看表

show tables [from| in db_name]
查看表结构
show columns from|in tb_name


例:

  1. 创建一个名为employee的职工表,字段id为主键,自增;字段num备注“工号”,具有唯一性;字段name为char类型。创建代码如下:
CREATE TABLE employee (
    id INT AUTO_INCREMENT PRIMARY KEY,
    num INT UNIQUE COMMENT '工号',
    name CHAR(25)
);

【MySQL】SQL语言的基本操作_第1张图片
2. 给employee表添加两个int类型的字段:sex、birth。

alter table employee add COLUMN sex int;
alter table employee add birth int;

【MySQL】SQL语言的基本操作_第2张图片
3. 修改字段sex,数据类型改为varchar

alter table employee change column sex sex varchar(2);

【MySQL】SQL语言的基本操作_第3张图片


数据

数据更新

增删改
插入数据:
insert into tb_name () values (values_list1)[, (values_list2)]

从数据表中查询插入
insert into tb_name () select

insert … set 插入部分列值数据
insert … select 插入 子查询数据

删除数据:
delete from tb_name [where 条件]

删除所有记录
truncate [table] tb_name 效率更高

delete是逐条删除,truncate是删除表之后建立一个一模一样的新表
更新数据
update tb_name set column = "" where 条件


数据查询

基本语法select * from tb_name where 条件

  1. group by column1 … 分组查询 ,仅在聚合函数出现时使用
  2. having 条件 组级条件查询,用于group by 之后
  3. order by column asc(升序)|desc(降序) 排序
  4. limit 限制查询行数

替换查询结果集中的数据:

case
when 条件1 then 表达式1
when 条件2 then 表达式2
...
else 表达式
end  as col_n

连接:

  1. 交叉连接 (查询表有两个和两个以上、笛卡尔积)

  2. 内连接
    最常用的连接类型
    from table1 [inner] join table2 on 连接条件

    1. 等值连接 使用关键字 连接两个表时,比较运算符为“=”
    2. 非等值连接 使用关键字 连接两个表时,比较运算符不为“=”
    3. 自连接,与自身连接
  3. 外连接

    1. 左连接 table1 left join table2 on (表1-》表2,如果表二中没有能匹配表1的数据,则显示为空)
    2. 右连接 table1 right join table2 on (表1 《- 表2 ,如果表1中没有能匹配表2的数据,则显示为空)

where子句与条件查询:
子查询:where 列名 in(列表或select查询语句)

比较运算符:where 列名 <比较运算符>

exist查询: where exist (select查询) 如果子查询存在则满足条件

你可能感兴趣的:(MySQL,sql,mysql,oracle)