创建数据库:
create database 数据库名;
create datebase 数据库名 character set 字符集;
查看数据库
show database;
查看某个数据库的定义的信息
show create database 数据库名;
删除数据库
drop database 数据库名称;
切换数据库
use 数据库名;
查看正在使用的数据库
select database();
常用的类型:
数字型:int
浮点数:double
字符型:varchar(可变长字符串)
日期类型:date(只有年月日,没有时分秒)
datetime(年月日时分秒)
创建表
create table 表名(
字段名 类型(长度) 约束,
字段名 类型(长度) 约束
);```
单表约束
主键约束:primary key
唯一约束:unique
非空约束:not null
主键约束 = 唯一约束 + 非空约束
查看数据库中的所有表
show tables;
查看表结构
desc 表名
删除表
drop table 表名
修改表
alter table 表名 add 列名 类型(长度) 约束; --修改表添加列.
alter table 表名 modify 列名 类型(长度) 约束; -修改表修改列的类型长度及约束.
alter table 表名 change 旧列名 新列名 类型(长度) 约束; --修改表修改列名.
alter table 表名 drop 列名; - -修改表删除列.
rename table 表名 to 新表名; --修改表名
alter table 表名 character set 字符集; --修改表的字符集
插入:insert
insert into 表 (列名1,列名2,列名3..) values (值1,值2,值3..); -- 向表中插入某些列
insert into 表 values (值1,值2,值3..); --向表中插入所有列
insert into 表 (列名1,列名2,列名3..) values select (列名1,列名2,列名3..) from 表
insert into 表 values select * from 表
需要注意的事项:
- 列名数与values后面的值的个数相等
- 列的顺序与插入的值得顺序一致
- 列名的类型与插入的值要一致.
- 插入值得时候不能超过最大长度.
- 值如果是字符串或者日期需要加引号’’ (一般是单引号)
更新:update
update 表名 set 字段名=值,字段名=值;
update 表名 set 字段名=值,字段名=值 where 条件;
需要注意的事项:
- 列名的类型与修改的值要一致.
- 修改值得时候不能超过最大长度.
- 值如果是字符串或者日期需要加’’.
删除:delete
delete from 表名 where 条件
删除表中所有记录使用【delete from 表名】,还是用【truncate table 表名】?
删除方式:
- delete :一条一条删除,不清空auto_increment记录数。
- truncate :直接将表删除,重新建表,auto_increment将置为零,从新开始。
查询:select
select 字段 from 表名 where 条件
where 后面的条件写法:
<,>,=,>=,<=,<>
like 使用占位符 _ 和 % _代表一个字符 %代表任意个字符.
select * from product where pname like ‘%新%’;
in在某个范围中获得值(exists).
select * from product where pid in (2,5,8);
排序:order by
order by 字段名 asc(升序)/desc(降序)
聚合函数:
特点:只对单列进行操作
常用的聚合函数:
sum(): 求某一列的和
avg(): 求某一列的平均值
max(): 求某一列的最大值
min(): 求某一列的最小值
count(): 求某一列的元素个数
分组:group by 字段 having 条件
- select语句中的列(非聚合函数列),必须出现在group by子句中
- group by子句中的列,不一定要出现在select语句中
- 聚合函数只能出现select语句中或者having语句中,一定不能出现在where语句中。
分页:limit
limit 是MySQL特有的语法,oracle–ROWNUM,sqlserver–top
分页分为逻辑分页和物理分页:
逻辑分页:将数据库中的数据查询到内存之后再进行分页。
物理分页:通过LIMIT关键字,直接在数据库中进行分页,最终返回的数据,只是分页后的数据。
子查询
子查询允许把一个查询嵌套在另一个查询当中。
子查询,又叫内部查询,相对于内部查询,包含内部查询的就称为外部查询。
子查询可以包含普通select可以包括的任何子句,比如:distinct、 group by、order by、limit、 join和union等;
但是对应的外部查询必须是以下语句之一:select、insert、update、delete。
其他查询语句
union 集合的并集(不包含重复记录)
union all 集合的并集(包含重复记录)
多表关联更新、
update 表1 join 表2 on 表1.字段=表2.字段 set 表1.字段=表2.字段
如UPDATE student s JOIN class c ON s.class_id = c.id SET s.class_name=c.name