目录
一、库操作
1.创建数据库
create database database_name;
2.查看数据库
show databases;
3.使用数据库
use database_name;
4.查看数据库下存在的表
show tables;
5.删除数据库
drop database database_name;
二、表操作
1.创建表
create table table_name(
属性名1 数据类型 [完整性约束],
属性名2 数据类型 [完整性约束],
属性名3 数据类型 [完整性约束],
......
);
注:[ ]里面的表示可有可无
- 属性名
- 例如:id,name,sex
- 数据类型
- int、long 、char 、varchar
- 完整性约束
约束条件 | 说明 |
---|---|
primary key | 表示当前属性为该表的主键,可以区分不同的行记录 |
foreign key | 修饰的属性为该表的外键,表之间关联使用的键 |
not null | 表示该属性不能为空 |
unique | 表示该属性的值具有唯一性 |
auto_increment | MYSQL特色,表示属性是自增的,自增类型为整形 |
default | 给属性设置默认值 |
注:可以大写或小写,但不能大小写混用!!!
2.查看表
//第一种
desc table_name;
//第二种
show create table table_name;
通过desc关键字查看表的字段名称、类型、是否为null、约束条件、默认值、备注信息
展示创建表的SQL语句,并且打印了存储引擎以及字符集编码
3.删除表
drop table table_name;
4.修改表
-
修改表名
alter table old_table_name rename new_table_name;
-
修改字段的数据类型
alter table table_name modify 属性名 属性类型;
-
修改属性名
alter table table_name change 旧属性名 新属性名 新属性类型;
-
增加表的字段(属性)
alter table table_name add 属性名 属性类型 [完整性约束]; alter table table_name add 属性名 属性类型 [完整性约束] first; //firet不能指定增加在谁前面,只能默认增加在第一个属性 alter table table_name add 属性名 属性类型 [完整性约束] after 属性名;
-
删除字段
alter table table_name drop 属性名;
-
修改字段的排列顺序
alter table table_name modify 属性1 属性类型 first 属性2; alter table table_name modify 属性1 属性类型 after 属性2;
-
修改存储引擎
alter table table_name engine=InNoDB alter table table_name engine=myISAM;
5.插入数据
insert into table_name(属性1,.....属性n) values (value1,...valuen);
如果插入的数据属性和表的属性一致:
insert into table_name values (value1,...valuen);
可多条数据一起插入:
insert into table_name(属性1,.....属性n) values (value1,...valuen),(value1,...valuen)......;
6.删除数据
alter table table_name drop 属性名;
7.查询表
查询表SQL的基本查询结构:
select 属性列表 from 表名 [where 条件表达式1] [group by 属性名1 [Having 条件表示式2]] [order by 属性名2 [asc|desc]]
- 带in的子查询
[not] in ( 元素1,元素2,...,元素n);
- 带between and 的范围查询
[not] between 取值1 and 取值2 ;
- 带like的通配符匹配查询
[not] like '字符串' 注:like后面的字符串可以携带通配符 %:表示0个或任意长度的字符串 _:只表示单个字符
- 空值查询
is [not] null
- 带and的多条件查询
条件表达式1 and 条件表达式2 [... AND 条件表达式n]
- 带or的多条件查询
条件表达式1 or 条件表达式2 [... or 条件表达式n]
- 去重查询
select distinct 属性名 from 表名;
- 对结果排序
order by 属性名 asc|desc; 默认是asc:升序 desc:降序
- 分组查询
group by 属性名 [having 条件表达式]
- union合并查询
union 默认去重 all 表示显示所有的值
- limit 分页查询
limit 数据; limit 数据1,数据2; //如果只有一个参数,表示不指定起始位置的limit记录(默认起始位置0); //如果有两个参数,第一个表示起始位置,第二个表示偏移量
8.表联合查询
- 内连接查询:将两个表中同时存在的数据打印
表1 inner join 表2 on 表1.属性 = 表2.属性
将上述两个表进行内连接查询
- 外连接查询
- 左连接
将左表和右表相同属性值的结果返回;
将左表存在而右表不存在的也返回,右表对应属性值为null;
将右表存在,左表不存在的则忽略掉 - 右连接
将左表和右表相同属性值的结果返回,
将右表存在而左表不存在的数据也返回,左表不存在的属性值为null
将左表存在,右表不存在的则忽
左连接查询: 表1 left join 表2 on 表1.属性 = 表2.属性 右连接查询: 表1 right join 表2 on 表1.属性 = 表2.属性
- 左连接
tips: 取别名
- 属性取别名:
属性名 [as] 别名 - 表取别名:
表名 [as] 别名
三、SQL提供的函数操作
- count(); 计数使用
- sum(); 求和
- max(); 最大值
- min(); 最小值
- avg(); 平均值