一.数据库基础
1.连接MySQL
mysql –h服务器主机地址 –u 用户名 –p密码
2.创建数据库
CREATE DATABASE 数据库名;
3.查询数据库列表
SHOW databases;
4.选择数据库
USE 数据库名;
5.删除数据库
DROP DATABASE 数据库名;
6.表-增删改查(添加主/外键)
CREATE TABLE [IF NOT EXISTS] 表名 (
字段1 数据类型 [字段属性|约束][索引][注释],
……
字段n 数据类型 [字段属性|约束][索引][注释]
)[表类型][表字符集][注释];
7.数据-增删改查
8.查询
查询 select
1112 select *from
select st.name,st.sex from student st
select st.name as '姓名',st.sex as '性别' from student st
单个条件查询
查询姓名为张三
select *from student where name='张三'
查询学号为3的学生
select *from student where id=3
多个条件查询
并且 AND
查询 姓名为王五 且 性别 为女
select *from student where name='王五' and sex='女'
或 or
查询 性别为男 或者 年级编号为2
SELECT * from student where sex='男' or gid=2
某个范围之间
1. 运算符 and
查询 生日在2000-01-01 到 2018-12-04
select *from student where birthday>='2000-01-01' and birthday<='2018-12-04'
2.between and
select *from student where birthday between '2000-01-01' and '2018-12-04'
select * from student where id in(1,3,5,7)
模糊查询 LIKE
select *from student where name like '%李%'
-- select *from student where name like "%"'李'"%"
查询 显示3行的信息
select *from student limit 3
分页查询 limit ?,? 0,2
? (页数-1)*行数 0*2=0 | 2-1=1 1*2=2 | 3-1=2 2*2=4 | 4-1=3 3*2=6
? 行数 2
select *from student limit 6,2
查询某个为null的列 is
select *from student where gid is null;
select *from student where gid is not null;
排序查询 order by 正序 asc 倒序 desc
查询学号 倒序
select * from student order by id asc
查询年级编号为2 按照生日从大到小排序
select * from student where gid=2 order by birthday asc
查询年级编号 倒序 再id 倒序
select *from student order by gid desc,id desc
9.联合查询
联合查询 (存在关系的表组合在进行查询)
内联合 !!!!
外联合
左外联合
右外联合
内联合 特点:查询主键和外键相对应的数据
1.查询学生的信息
学号 姓名 性别 生日 年级名称
select s.name,s.sex,s.birthday,g.gradename from student s,grade g
where s.gid=g.gid
2. 重点!!!! 语法 : 主|从表 inner join 主|从表 on 主|外键=主|外键
select s.name,s.sex,s.birthday,g.gradename
from student s INNER JOIN grade g on s.gid=g.gid
练习:
1.查询s1年级下的学生
SELECT s.name,s.sex,s.birthday,g.gradename FROM
student s INNER JOIN grade g on s.gid=g.gid
where g.gradename='s1';
2.查询s1年级下 性别为男 的学生
SELECT s.name,s.sex,s.birthday,g.gradename FROM
student s INNER JOIN grade g on s.gid=g.gid
where g.gradename='s1' and s.sex='男';
3.查询 s1年级下 生日最大 的学生
select s.name,s.sex,s.birthday,g.gradename
from student s INNER JOIN grade g on s.gid=g.gid
where g.gradename='s1'
ORDER BY s.birthday ASC
LIMIT 1
4.查询 每个年级的人数 ,显示的信息
年级名称 人数
select g.gradename,count(1)
FROM student s INNER JOIN grade g on s.gid=g.gid
GROUP BY g.gradename
5.查询 s2年级的 男女人数
select s.sex,COUNT(1) FROM student s INNER JOIN grade g
on s.gid=g.gid
where g.gradename='s2'
GROUP BY s.sex
6.查询s2年级中 性别人数>=2人的信息
select s.sex,COUNT(1) FROM student s INNER JOIN grade g
on s.gid=g.gid
where g.gradename='s2'
GROUP BY s.sex
HAVING COUNT(1)>=1
外联合
左外联合 left outer join 可以缩写为 left join
特点:显示 左边的所有信息,并把右表中符合条件的加到 显示的表中
右边中不符合条件,不会在表中显示 并且以null表示
SELECT * from student stu left outer join grade g on g.gid=stu.gid
右外联合 right outer join 可以缩写为 right join
显示 右边的所有信息,并把左表中符合条件的加到 显示的表中
右边中不符合条件,不会在表中显示 并且以null表示
SELECT * from student stu right outer join grade g on g.gid=stu.gid
10.子查询
子查询 select 子 from 子!! 必须加上别名 where 子