1.数据库分类:
Oracle、MySQL、SQLserver
常见的数据库类型:mysql 开源的数据库软件,web常用MySQL 、sql server 微软的 、Redis 最好用对的缓存数据库
2.sql分类:
DDL(Data Definition Language--定义语言 创建 删除表 改列):关键字有 create 、drop 、alter
DML(Data Manipulation Language- -操作语言 删除 更新):关键字有 insert、delete、update
DQL(Data Query Language--查询语言):关键字有 select、where
DCL(Data Cntrol Language-- 控制用户角色和权限) :关键字有 grant(授予) 、revoke(移除)
create database db1 character set gbk;
create database if not exist db2;
show databases;查看所有数据库
show create database db2;
DDL:
create database if not exsit db2;
create database db2 character set gbk;
drop database db2;
alter database db2 default character set utf8;
DML:
①往表里插入数据:insert into table (zziduan)vaules(zhi) ;
②删除表里数据:delete from table where ;
③更新数据:update student set age = 12 where name = '张三';
update student set age=12,tel =13261193333 where name = '李四' ;
④蠕虫复制:
把student2表结构及数据复制到student表
create table student like student2;
insert into student select * from student2;
把student2的两个字段数据复制到student表;
insert into student(age,name) select age,name from student2;
DQL:
select * from table where 。。。
select name as 姓名,age as 年龄 from student ;
select distinct age from table;
select math+English+Chinese 总成绩 from student;
分组查询 (配合聚合函数count使用):单独分组不需加where
分组只能查询聚合函数和指明列信息,不能查询个人信息
使用语法:select deptno,count(*) from emp where sal>10000 group by deptno having count(*) >=2;
-- 求全班语文成绩的总和
select sum(China) from student;
-- 求全班有多少人
select count(*) from student;
-- 求全班数学成绩的平均数
select avg(Math) from student;
-- 求全班语文的最低成绩
select min(China) from student;
-- 查询年龄大于十岁的学生年龄以及人数
select age,count(*) from student where age>10 group by age ;
select age,count(*) from student group by age having age>10;
查询家乡是北京,上海,天津,深圳,四川的学生信息
Select * form student where hometown in()
DCL:
``
**3.数据库约束**
```sql
主键自增长约束:
1、创建时添加自增长约束insert into user(id int primary key auto _ increment);
2、修改时添加自增长约束Alter table user change id id int auto_increment;
删除自增长约束 alter table user change id id int;
Not null 非空约束
uniuque 唯一约束
default 默认值 sex default’男’
外键约束:
Foreign key
sql的逻辑运算符
> < = >= <= != <>
in 只要满足就显示
or 只要满足一个条件就显示
and 都满足才显示
like 模糊匹配 like ‘no%’ like '笔记_'
sql的排序
order by age desc,name asc
聚合函数
count(age) 统计多少行
sum 总和
avg 平均数
max 最大数
min 最小数
分组
count(*)group by + having限定条件
where ....order by group by having
where 用于分组前的限定条件,having用于分组后的限定条件
where不能引出聚合函数,having后可以使用聚合函数
**外连接:左外 left join**
语句:SELECT * FROM a_table a left join b_table b ON a.a_id = b.b_id;
说明:以左表为主表,将左表满足条件的都展示出来,右表如果不满足条
件直接展示null;
右外right join,与左外相反;
**内连接:inner join**
语句:select * from a_table a inner join b_table b on a.a_id = b.b_id;
说明:返回条件的交集
全连接:union
说明:因为mysql没有full join,所以可以先用左连接满足条件的,union右连接满足条件的
**使用顺序**
FROM
WHERE (先过滤单表/视图/结果集,再JOIN)
GROUP BY
HAVING (WHERE过滤的是行,HAVING过滤的是组,所以在GROUP之后)
ORDER BY