1.SQL分类

  • DDL(Data Definition Language)语句:数据定义语句。
  • 用途:是对数据库对象(数据库、表、列、索引等)进行创建、删除、修改等。
  • 常用关键字:create、drop、alter等。
  • DML(Data Manipulation Language)语句:数据操纵语句。
  • 用途:用于添加、修改、删除和查询数据库记录,并检查数据完整性。
  • 常用关键字:insert、update、delete、select等。
  • DCL(Data Control Language)语句:数据控制语句。
  • 用途:控制数据库、表、字段、用户的访问权限和安全级别
  • 常用关键字:grant、revoke 等;

2.DDL语句

DDL语句是用于操作数据库对象的,其中数据库对象包含数据库本身(database)、表(table)、列(column)、索引(index)、约束(constraint)、视图(view)、触发器(trigger)、存储过程(StoredProcedure)和函数(function)。

在此只讲解数据库(database)和库表(table)。

为什么一直都在中文后加上括号英文说明呢?因为sql 语句要用,先混个眼熟。

全程命令操作,让注意力更专注于指令输入和结果输出。

系统库:

  • 每个用户都可以看到自己的 information_schema:存储系统数据库对象信息,包含了用户表信息、列信息、权限信息、字符集信息、分区信息等等。
  • 普通用户看不到 performance_schema:存储系统性能相关的动态参数表
  • 普通用户看不到 sys:基于information_schema 和 performance_schema之上,封装了一层更加易于调优和诊断的系统视图(系统层的视图)
  • 普通用户看不到 mysql:存储系统的用户权限信息
  • 查询建库SQL语句
show create database mydb \G;

DDL之操作表

1)创建数据库表

create table tablename(  列名 数据类型 约束,  列名 数据类型 约束);

创建person表

create table person( id int primary key,name varchar(30),age int default 0 );

2)查看表设计

desc person;

3)查看建表SQL语句

查看建库和建表SQL 语句都是相类似的,查询的数据库对象不同而已。

"\G" 选项的含义是按照字段竖向排列,为了更好阅读查询结果。

show create table person \G;

4)修改表名

  • 关键字rename
alter table 旧表名 rename 新表名;

5) 删除表

drop table people;

6)修改表字段

--修改表字段类型  
alter table 表名 modify 列名 列的新类型;

--增加表字段  
alter table 表名 add column 列名 列的类型;

--删除表字段  
alter table 表名 drop column 列名;

--修改字段名  
alter table 表名 change 旧列名 新列名 列的类型;


--修改字段排列顺序  在增加表字段或修改表字段后加入:
--first 或 after 字段名  如:
alter table 表名 add column 列名 列的类型 after 列名2;  
--如:
alter table 表名 change 旧列名 新列名 列的类型 first;

DDL之操作索引

索引是对数据库里加了索引的数据预先进行排序,就像书的目录,可以优化查询速度,但是会降低增删改速度,占用磁盘空间。

1)添加索引

用于建表时创建索引

//create只能添加这两种索引;
CREATE INDEX index_name ON table_name (column_list)CREATE UNIQUE INDEX index_name ON table_name (column_list)

用于表建好后创建索引(常用)

--增加主键索引:不允许出现相同的值  
alter table tab_name add primary key (column_list);

--增加唯一索引:不可以出现相同的值,可以有NULL值  
alter table tab_name add unique (column_list);

--增加普通索引:允许出现相同的索引内容  
alter table tab_name add index index_name(column_list);

--增加联合索引:将多个字段建到一个索引里,列值的组合必须唯一  
alter table tab_name add index index_name (column,column,...);

2)查看索引

--查看表 tab_name 的所有索引信息(如:索引是否唯一,是否允许为null,索引存储的数据类型等信息)
show index from tab_name;

3)删除索引

alter table tab_name drop index index_name;alter table tab_name drop primary key;