Mysql常用语法详解

一、数据库

  1. 创建数据库
    create database 数据库名;
  2. 查询所有数据库
    show databases;
  3. 查看正在创建的数据库信息
    show create database 数据库名;
  4. 删除数据库
    drop database 数据库名;
  5. 使用数据库
    use 数据库名;

二、表

  1. 创建表
    create table 表名(字段名 数据类型(长度),字段名 数据类型(长度)...);

例如:
create table employee(
id int(10),
name varchar(25),
age int(3)
);

进阶:
create table employee(
id int(10) not null primary key comment '主键id',
name varchar(25) not null comment '姓名',
age int(3) not null comment '年龄',
address varchar(200) not null comment '住址'
);
)

  1. 查询所有表
    show tables;
  2. 查询正在创建的表信息
    show create table 表名;
  3. 查询表的详细信息
    desc 表名;
  4. 删除表
    drop table 表名;
  5. 添加新的字段
    alter table 表名 add 字段名 数据类型(长度);
  6. 修改字段的数据类型、长度
    alter table 表名 modify 字段名 数据类型(长度);
  7. 删除字段
    alter table 表名字 drop 字段名;
  8. 修改字段名
    alter table 表名 change 旧字段名 新字段名 新字段数据类型(长度);
  9. 修改表名
    rename table 旧表名 to 新表名;

三、增删改查

  1. 增(插入)
    insert into 表名(字段1,字段2,字段3,...) values (值1,值2,值3,...);

注意:必须插入的值与表字段循序一一对应,且字符串和日期类型的数据库必须有单引号括起来
insert into 表名 values (值1,值2,值3,...);


  1. delete from 表名 where 条件表达式(说明:字段 = 'xxx');

  2. update 表名 set 字段1 = 值1,字段2 = 值2,... where 某字段 = 'xxx';

  3. select 字段1, 字段2,字段3,... from 表名 [where 条件表达式];

四、范式

  1. 第一范式:指的是确保每个列都是原子性的、不可再分的,即列中不允许出现多个值或者多个属性。如果一个列中有多个值或者多个属性,就需要将这个列拆分成多个独立的列,以确保每个列中只包含一个原子值。这样可以避免数据冗余,也可以方便数据的更新和查询

  2. 第二范式:在第一范式的基础上进一步规范化数据的范式,它要求每个表都必须有一个主键,而且每个非主键列都必须完全依赖于主键,而不是依赖于主键的一部分。这意味着,如果一个表中有一些列依赖于另外一些列而不是主键,就需要将这些列提取到一个新的表中,并通过主键来建立关联关系,以确保数据的完整性和一致性。

  3. 第三范式:在第二范式的基础上进一步规范化数据的范式,它要求每个非主键列都必须直接依赖主键

五、判断对象是否存在

  1. 判断数据库是否存在
    if exists (select * from sysdatabases where name = '数据库名');
  2. 判断表是否存在
    if not exists (select * from sysobjects where name = '表名');

七、数据记录同济函数

  1. 平均值
    avg(字段名)
  2. 行数
    count(字段名)
  3. 列最大值
    max(字段名)
  4. 列最小值
    min(字段名)
  5. 列总和
    sum(字段名)

例如:
select count(name) form employee;

八、连接

  1. 内连接(inner join)
    查询返回满足条件的所有记录

默认情况下没有指定任何连接的则为内连接

  1. 左外连接(left join)
    不仅查询返回条件的所有记录,而且还会返回不满足连接条件的左边表的其他行
  2. 右外连接(right join)
    不仅查询返回条件的所有记录,而且还会返回不满足连接条件的右边表的其他行
  3. 全连接
    Mysql暂不支持,Union代替

九、索引

1.简介

  • MySQL索引是一种特殊的数据结构,能够帮助数据库系统快速地检索数据。索引常常被用于WHERE子句和JOIN子句中的列上,以提高查询性能

2.MySQL中常见的索引类型

  • BTree索引
    BTree索引是MySQL中最常见的索引类型,它使用B-Tree数据结构来存储索引。B-Tree索引非常适合进行范围查询和排序。如果使用了前缀索引,则B-Tree索引还可以用于在较短的字符前缀上进行查询。

  • 哈希索引
    哈希索引使用哈希算法来计算每个索引值的位置。这种类型的索引适合进行等值查询,但不适合进行范围查询和排序。哈希索引不能用于解决ORDER BY子句的性能问题,因为它无法保证数据的有序性。

  • 全文索引
    全文索引是一种特殊的索引类型,用于在文本中进行全文检索。它可以在文本中搜索特定的单词或短语,并返回与之匹配的结果。MySQL的全文索引可以用于MyISAM和InnoDB表。

3.MySQL索引的使用方式取决于查询的类型和数据的分布情况。以下是一些MySQL索引的使用注意事项

  • 不要对大型表中的每个列都创建索引。这样做会影响查询性能并占用大量磁盘空间。

  • 对于经常使用的列,创建索引可以提高查询性能。例如,对于经常使用的日期列或状态列,可以创建一个B-Tree索引。

  • 尽量避免使用LIKE子句进行模糊查询。这样的查询不能使用索引,而是需要进行全表扫描。

  • 对于查询经常使用的列,可以使用覆盖索引来提高查询性能。覆盖索引是指索引列就包含了查询所需的所有数据,不需要再到表中进行查找。

  • 考虑使用复合索引。复合索引是由多个列组成的索引。复合索引可以减少索引数量,并提高查询性能。

  • 在对表进行大量写入操作时,索引可能会降低性能。因此,应该谨慎地对表进行索引,以避免写入性能问题。

posted @ 2023-03-23 16:04  手可敲星辰脚驾七彩云  阅读(45)  评论(0编辑  收藏  举报