1.0 数据库
创建数据库
create database 数据库名;
查看所有数据库
show databases ;
删除数据库
drop database 数据库名;
切换数据库名
use database 数据库名;
查看正在使用的数据库
select database();
2.0 数据库表
创建数据库表
create table 表名(
字段 类型 约束,
sId int PRIMARY KEY auto_increment
);
查看表结构
desc 表名;
删除表
drop table 表明名;
3.0 表结构操作ALTER
添加表结构
alter table 表名 ADD 列名 类型(长度) 约束;
alter table 表名 ADD age int(16) NOT NULL ;
修改列名
alter table 表名 modify 列名 类型(长度) 约束;
alter table 表名 MODIFY age int()
修改表修改列名
alter table 表名 change 旧列名 新列名 类型(长度) 约束;
alter table 标明 change age sAge int(4) NOT NULL
修改表删除列
alter table 表明 drop 列名
修改表名
rename table 久表名 to 新表名
修改表的字符集
alter table 表名 character set 字符集;
4.0 表中添加数据INSERT
单个插入数据
法1:Insert into 表名 (sId,sAge,sName) values ('','','');
法2:Insert into 表名 values (全列名);
批量插入数据
insert into 表名 (列名1,列名,列名) values (值1,值2,值3),(值11,值22,值33),...;
5.0 更新表数据 UPDATE
update 表名 set 字段名=值,字段名=值;
update 表名 set 字段名=值,字段名=值 where 条件;
删除数据
delete from 表名 [where 条件];
或者
truncate table 表名;
删除表中所有记录使用delete from 表名; 还是用truncate table 表名;
删除方式:delete 一条一条删除,不清空auto_increment记录数(如果中途删除过id:7,新增将会从8开始)。 truncate 直接将表删除,重新建表,auto_increment将置为零,从新开始。
6.0 查询表中数据 SELECT
查询所有列的数据
SELECT * FROM 表名
查询指定列的数据
SELECT 列1,列2 ... from 表名
查询出去掉重复记录的数据
SELECT DISTINCT 列名 from 表名
6.0.1 别名查询 AS
别名可以给表中的字段,表设置别名。 当查询语句复杂时,使用别名可以极大的简便操作,用到的关键字是as,有时候可以把as省略。
表别名格式:
select * from 表名 as 别名;等价于select * from 表名 别名;
列别名格式:
select 字段名 as 别名 from 表名;等价于select 字段名 别名 from 表名;
6.0.2 条件查询
![](https://img.haomeiwen.com/i6903052/4a1d43f3db01517c.png)
//字段查询
1.0 select * from 表名 where 字段=“字段值” ;
//区间查询
2.0 select *from 表名 where salary Between 1000 and 5000 ;
select * from 表名 where salary >1000 AND salary<5000;
//单个区间查询
3.0 select * from 表名 where salary=1000 OR salary=2000 OR salary=3000;
select *from 表名 where salary in (1000,2000,3000);
//模糊查询
4.0 select * from 表名 where 字段名 LIKE '%薪水%';匹配包含薪水的字段
//指定长度字符的字段查询
5.0 select * from 表名 where 字段名 LIKE "_ _ _"没有空格区分,便于看清楚;查询指定字段名下有三个长度的字段值
//非空查询
6.0 select * from 表名 where NOT (字段名 IS NULL);
//排序(先过滤) ASC升序,DESC降序
7.0 select * from 表名 where name LIKE %支出% order by 字段名 【desc|asc】
函数和分组
查询数据库表有多少行
select count(*) AS 别名 from 表名 //返回标的行数
求和某列的总和
selct sum(列名) from 表名 where 表名 LIKE '%关键字%'
最大最小值
select max|min(列名) AS 别名 from 表名
平均值
select avg(列名) from 表名
分组查询
分组查询规则:
- group by 列名
- 分组查询必须跟 上述函数
- 分组查询必须跟在条件和select语句的后面出现
1.0 select 运算函数(运算的列名) ,排序的列名 from 表单 group by 排序列名
2.0select 运算函数(运算列)AS 别名,排序列名 from 表名 where 条件判断语句 group by 排序列名(having 别名的条件判断)【对排序之后的进行二次筛选】 order by 别名【desc|asc】
eg:
select sum(salary) AS salaryTotal ,userName from users where userName LIKE '%员工%' group by userName having salaryTotal>5000 order by userName desc;
having和where的区别:
- where是对分组钱的数据进行过滤
- having是对分组后的数据进行过滤
- having后面可以接聚合函数,where不行
多表操作
添加外键约束
主键: 唯一标识一条记录,不能有重复的,不允许为空
外键: 外键可以有重复的, 可以是空值
alter table 副表名称 add foreign key(外键名称[主键_id]) references 主表名称(主键)
添加外键约束的特点
- 主表中不能删除副表中已经引用的数据
- 副表中不能添加主表中不存在的数据
- 一般副表的外键和主表的主键的字段类型相同
多对多的外键约束处理
在多张表之间分别创建一个中间表,用于存放两两之间的主键,一般讲这两个字段设置成联合主键,用于将多对多的关系变成多个一对多的形式,为了保持数据的的有效和完整性需要在这个中间表上创建外键约束。
多表查询的内外连接
内连接:会对不满足条件的数据进行不显示操作
select 表1.*,表2.* FROM 表1 join 表2 on 表1表2的连接条件
eg: SELECT user.*,order.* from 表1 join 表2 on user.id=order.user_id
select 表1.*,表2.* from 表1 表2 where 表1表2连接条件
eg: SELECT user.*,order.* from 表1 , 表2 where user.id=order.user_id
//外连接
select 表1.*,表2.* from 表1 left join 表2 on 表1表2 的连接条件
解析:优先展示join字段左边表的所有数据,根据条件关联查询join右边的表的符合条件的数据,
不满足条件的数据显示为null值
select 表1.*,表2.* from 表1 right join 表2 on 表1表2 的连接条件
同理可得,两者之间可以相互转换
子查询:子查询就是当前查询的结果依赖于另外一个查询的结果
数据库的备份与还原
- 数据库的备份命令:
//备份
mysqldump -uroot -p<数据库密码> 数据库名 >磁盘位置
- 数据库的还原命令(非登录模式下的):
//数据库还原
mysql -uroot -p<密码> 数据库名 <数据库文件位置
- 数据库的还原命令(登录模式下的):
mysql -uroot -p123456
show databases;
use databasename;
source 数据库文件名
网友评论