SQL分类
一、DDL(Data Definition Language)语句,“数据定义语言”,这些语句定义了不同的数据段、数据库、表、索引等数据库对象,长用的语句关键字主要包括create、drop、alter等
二、DML(Data Manipulation Language)语句,“数据操纵语言”,用于添加、删除、更新和查询数据库记录,并检查数据完整性,常用的语句关键字主要包括insert、delete、update和select等
三、DCL(Data Control Language)语句,“数据控制语句”主要用于控制不同数据段直接的许可和访问级别的语句,这些语句定义了,数据库、表、字段、用户的访问权限和安全级别,主要的关键字有grant,revoke等
下面对语句和关键字做详细的说明
一、DDL语句
对数据库的操作
1. 创建数据库语句
create database 数据库名;
下面有一行提示,分为3部分:
- Query OK,代表执行成功
- 1 row affected,代表影响的记录条数
- 执行操作执行的时间(秒)
2、删除数据库语句
drop database 数据库名
注:drop语句操作的结果都是0 rows affected
3、补充相关语句
show databases;
//选择数据库
use 数据库名字;
//选择数据库之后,查看所有的表
show tables;
对数据表的操作
1、创建数据表
语法:
create talbe 表名(
列名、列数据类型、列的约束条件
)
//示例
create table emp(
ename varchar(10),
hiredate date,
spl decimal(10,2),
deptno int(2)
);
2、删除数据表
drop table 表名;
3、修改数据表
语法:
ALTER TABLE 表名 RENAME 新名字;
//例如将表emp的名字改为ddl_table
alter table emp rename ddl_table;
语法:
ALTER TABLE 表名 modify 字段名 字段定义;
//例如修改字段ename的varchar(10)改为varchar(20)
alter table ddl_table modify ename varchar(20);
语法:
ALTER TABLE 表名 change 旧字段名 新字段名 新字段定义;
//例如修改字段ename名为ename1, 将varchar(20)改为varchar(10)
alter table ddl_table change ename ename1 varchar(10);
语法:
ALTER TABLE 表名 modify 字段名 字段定义 位置;
//例如将deptno字段放到最前面
alter table ddl_table modify deptno int(2) first;
语法:
ALTER TABLE 表名 add 字段名 字段定义;
//例如添加一个年龄字段
alter table ddl_table add `age` int(3);
语法:
ALTER TABLE 表名 add 字段名 after 存在的字段名;
//例如添加一个生日字段,放到name1后面
alter table ddl_table add `brith` date after ename1;
语法:
ALTER TABLE 表名 drop column 字段名;
//例如删除年龄字段
alter table ddl_table drop column age;
二、DML语句
1. 插入记录
语法:
insert into 表名(字段1,字段2,…)values(值1, 值2,…)
insert into ddl_table(ename1, hiredate, spl, deptno)values('selly', '2020-01-01', '2020', 1);
//也可以不制定字段列表,但是值顺序,需要和字段的顺序一致
insert into ddl_table values(值1, 值2, 值3,...);
//一次性插入多条,,插入大量数据,使用这种方法,会节省很大的网络开销,提升插入效率
insert into ddl_table(ename1, hiredate, spl, deptno)values
('selly', '2020-01-01', '2020', 1),
('selly1', '2021-01-01', '2021', 1);
2. 更新记录
语法:
update 表名 set 字段1=值1, 字段2=值2,可选的where条件
update ddl_table set ename1 = '张三' where ename1='selly';
//update同时更新多个表数据,现实中没这么用过,更新spl字段,和名字字段,where条件2个表的主键。
update ddl_table as d1, deptname as d2 set d1.spl=d1.spl*d2.deptno,d1.ename1=d2.deptname where d1.deptno = d2.deptno;
更新前截图
执行更新之后
3. 删除记录
语法:
delete from 表名 [可选的where条件]
delete from deptname where deptno = 2;
//删除多个表的数据
delete d1, d2 from ddl_table as d1, deptname as d2 where d1.deptno = d2.deptno and d1.deptno = 1;
4. 查询记录
查询的语句过多,会单起另外的文章详细介绍。