fanshsh

导航

 

1.什么是数据库
是存储数据的电子仓库
2.数据库分类
2.1关系型数据库
定义:数据库中表与表存在某种关系,数据存储在不同的表中
db2
mysql
oracle
sql server
2.2非关系型数据库
定义:通常数据是以对象的形式存储在数据库中
mongo
redis
3.linux添加卸载MySQL
yum install mysql
删除数据库
首先要查询数据库有哪些内容
rpm -qa|grep mysql

然后输入
rpm -e --nodeps 加上上面查询到的内容


4.启动mysql
service mysqld start
停止是service mysqld stop
查询mysql状态 service mysqld status
5.设置密码
mysqladmin -urooyt password '123456'
二.数据库命令(在数据库)
1.授权访问
grant all privileges on . 'root'@'%' identified by '123456';(by后面跟的是用户密码)

然后刷新权限
flush privileges;
在外部访问之前要开端口3306(端口没改的情况下),或者关闭防火墙
2.创建数据库
create database 数据库名;
3.查询数据库
show databases;
4.创建表
create table 表名 (字段名 字段类型(值),字段名 字段类型(值));
create table student2(id int primary key ,name char(20),sex char(10),age int(3),mobile char(20),class char(10),english int(10),chinese int(10),math int(10))engine=innodb default charset=utf8;
如上所示 其中primary key为主键意思是id为主键,default charset=utf8表示数据格式为utf8.
在创建表中在添加字段输入not null 即可将字段设置为字段值不为空

unique 唯一索引:保证字段值具有唯一性,并且能为空,一个表中可以有多个唯一索引
default 默认值约束 定义:默认给字段指定默认值
5.删除表
drop table 表名;
6.插入数据
inster into 表名 values(值,值,值)(要与表的字段一一对应)


某个值插入数据
inster into 表名(字段名称) values(值)
INSERT into student2 (age) VALUES(1000)
7.查看表结构
desc 表明
8.给表字段换名
alter table 表名 change 字段名 新的字段名 字符类型(字符长度);
9.给表添加字段
alter table 表名 add 字段名 字符类型(字符长度);
10.删除表的字段
alter table 表名 drop 字段值;
11.修改表名
alter table 表名 rename 新表名;
12.修改字段位置
alter table 表明 modify 字段名 after 字段名;
13.将某个字段放到第一位
alter table 表名 first 字段值;
14.查询表命令
select * from 表名;
根据条件查询表数据
select * from 表名 where 字段值
15.limit 显示指定数据
例如:
select *from 表名 where limit 行数

SELECT * from student2 LIMIT 4,3;(取5到7行,因为编程中从0开始)

SELECT * from student2 LIMIT 4;(取前四行)

16.运算符
max 最大值
min 最小值
avg 平均数
sum 总和
count 个数统计
ditinct 去重查询
17.分组
group by
select sum(math),class from student2 GROUP BY class ;
分组加条having
select sum(math) s,class from student2 GROUP BY class having s>200 ;
select sum(math) s,class from student2 GROUP BY class having sum(math)>200 ;
18.更新数据
update 表名 set 更新的字段=值 where 更新的行或者条件
update student2 set englishi=60 where english<60;
19.删除表数据
delete from 表名 where 条件
删除表
delete from 表名
truncate student2(快速删除)
drop table student2 (删除表和数据,上面的两个只删除数据保留表结构)
20备份表结构
create table 新表名 like 要备份的表
create table student3 like student2;
21备份表数据
instre into 创建的备份表 select * from 要备份的表
22.备份表和数据
create table 新表名 as (select * from 要备份的表);
23.注释
单行注释:ctrl +/
取消注释:shift+ctrl+/
多行注释:选中多行 ,ctrl +/
取消注释:选中多行 shift+ctrl+/
24.Linux中备份数据
mysqldump -u root -p 表名>备份路径
还原数据
mysql -u root -p 数据库名<备份数据的路径

三.查询内容
1.查询多个字段用“,”隔开

2.运算符号
注意between and 包含边界值

3.模糊查询 like
表示一个占位符
% 可用于定义通配符(模式中缺少的字母)。
特殊的
-- 查询姓名中第二个字符为_的员工信息
SELECT * from employees where last_name like "
_%";
SELECT * from employees where last_name like "^%" ESCAPE "^"; -- ESCAPE 定义一个符号

4.null做任何计算都为空

5.排序 ORDER BY desc|asc (降序|升序)(注意oredr by后面可以直接加多个字段
)
-- 部门编号>50的按照工资从高到低排序,如果一样在按照first_name升序
SELECT * from employees where department_id >50 ORDER BY salary DESC ,first_name ASC;

-- 将姓名中包含e字符的年薪和姓名显示出来,并按年薪进行降序
SELECT 12salary(1+IFNULL(commission_pct,0)) as 年薪,last_name from employees where last_name like "%e%" ORDER BY 12salary(1+IFNULL(commission_pct,0)) desc;

SELECT 12salary(1+IFNULL(commission_pct,0)) as 年薪,last_name from employees where last_name like "%e%" ORDER BY 年薪 desc;

-- 显示所有获得奖金的员工姓名、奖金、姓名长度,按姓名长度从低到高排序
SELECT 12salary(IFNULL(commission_pct,0))as 年薪,last_name,LENGTH(last_name) from employees where commission_pct is not null ORDER BY LENGTH(last_name);


-- 内连接
-- select * from dept inner join emp on dept.dept1=emp.dept2;
-- 变种
-- select * from dept,emp on dept.dept1=emp.dept2;

-- 左连接
-- select * from dept left join emp on dept.dept1=emp.dept2;

-- 右连接
-- select * from dept RIGHT join emp on dept.dept1=emp.dept2;

-- 左独有
-- select * from dept left join emp on dept.dept1=emp.dept2 where name is null;

-- 右独有
-- select * from dept RIGHT join emp on dept.dept1=emp.dept2 where dept_name is null;

-- union 左连接连接右独有
-- select * from dept left join emp on dept.dept1=emp.dept2;
-- union
-- select * from dept RIGHT join emp on dept.dept1=emp.dept2 where dept_name is null;

-- 列出每个部门的平均收入及部门名称;

SELECT avg(incoming),dept_name from dept INNER join emp on dept.dept1=emp.dept2 GROUP BY dept_name

四.三表联查
1.格式:select * from 表1,表2,表3 where 表1.关联字段1=表3.关联字段3 AND 表2.关联字段2=表3.关联字段
2.三表内连接 select * from 表1 INNER JOIN 表3 on 表1.关联字段1=表3.关联字段3 INNER JOIN表2 on 表2.关联字段2=表3.关联字段3
3.三表左连接 select * from 表1 left JOIN 表3 on 表1.关联字段1=表3.关联字段3 left JOIN表2 on 表2.关联字段2=表3.关联字段3
4.三表右连接 select * from 表1 right JOIN 表3 on 表1.关联字段1=表3.关联字段3 right JOIN表2 on 表2.关联字段2=表3.关联字段3
5.先合两表在和一表select * from (select * from 表1 right JOIN 表3 on 表1.关联字段1=表3.关联字段3 ) 临时表s inner 表2 on 临时表. 字段3=表2.字段2

posted on 2024-05-13 20:23  fan1139  阅读(41)  评论(0)    收藏  举报