SQL基础
SQL语句分类
DDL(Data Definition Language 数据定义语言)用于操作对象和对象的属性,定义不同数据段、数据库,表、列、索引等数据库对象,关键字Create、Drop、Alter。
DML(Data Manipulation Language 数据操控语言)用于操作数据库对象中包含的数据,增删改查及检查数据完整性等。关键字Insert、Delete、Update、Select。
DCL(Data Control Language 数据控制语句)的操作是数据库对象的权限,定义数据库、表、字段、用户访问权限,安全级别等。关键字Grant(允许对象的创建者给某用户或某组或所有用户(PUBLIC)某些特定的权限)、Revoke(可以废除某用户或某组或所有用户访问权限)。
ddl语句
mysql -uroot -p
create database db1;
drop database db1;
show databases;
use db1;
show tables;
create table tb1();
drop table tb1;
desc tb1; //查看表定义
show create table tb1; //查看表详细定义
alter table tb_name modify [column] column_difinition [FIRST/AFTRE col_name];//修改类型
alter table tb_name add [column] column_difinition [FIRST/AFTRE col_name];//增加字段
alter table tb_name drop [column] col_name;//删除字段
alter table tb_name change [column] old_col_name column_difinition [FIRST/AFTRE col_name];//改字段名
alter table tb_name rename [to] new_tb_name; //改表名
alter table tb1 modify name varchar(10);
alter table tb1 add name2 varchar(10);
alter table tb1 drop name2; //alter table tb1 drop column name2;
alter table tb1 change name2 name3 int(10);
dml语句
insert into tb_name (k1,k2,k3,...) values (v1,v2,v3,...), (v1,v2,v3,...),(v1,v2,v3,...),...;
updata tb_name set k1=v1, k2=v2, ... [where condition];
delete from tb_name [where condition];
delete a,b from tb1 a, tb2 b where a.id=b.id; //联表删除
//查询
select [distinct]* from tb_name [left/right/inner join tb_name2 on condition] [where condition] [order by field1 [asc/desc] [,field [asc/desc]]] [limit 0, 10];
select max(id)/count(*)/min(id)/sum(id) from tb_name [where condition] [group by field1,field2 [with rollup] having [condition];//聚合
//distinct 去重
//group by分类聚集字段
//with rollup 是否对分类聚集的结果进行再汇总
//having 对分类结果进行条件筛选 where是在聚合前筛选
//子查询 [not] in, =, !=, [not] exists
select a,b,c from tb1 where a in(select a from tb2);
select a,b,c from tb1 where a = (select a from tb2 limit 1);
select tb1.a,tb1.b,tb1.c from tb1,tb2 where tb1.a = tb2.a;//子查询转表连接,用于优化子查询
//联合 union [all]
select * from tb1 union [all] select * from tb2 ;//union去除重复数据 union all所有数据
dcl语句
grant select,insert on db1.* to ‘user_name’@’localhost’ identified by ‘user_password’; //创建用户,对数据库db1赋予增加,查询权限
revoke select on db1.* to ‘user_name’@’localhost’; //取消权限
FLUSH PRIVILEGES; //mysql刷新权限命令 一般用于数据库用户信息更新后