Mysql
1.1 数据库的介绍:
数据库从小到大的分类:
大型数据库 Oracle Db2
中型数据库 sqlserver
小型数据库 mysql
微型数据库 sqlite
1.2 数据库的安装
数据库分为服务端和客户端
客户端分为常用的可视化工具类: 猫抓 小海豚
安装的注意事项:
1.如果安装失败 需要在注册表将数据完全删除 (运行输入regedit 使用ctrl+F 查找并删除)
2. 安装的时候 一定要更改编码 utf-8
3. 允许多个人员多数据库的访问
4. Mysql的端口号 3306 mysql只有用户权限 root
5. 卸载mysql的服务端 同时将文件安装后的文件夹删除
1.3 数据库的数据类型
整数类型 int bigint
小数类型 float double
字符串类型 char(10) 数据库会分配一个长度为10个空间 长度是不可以发生改变
varchar(10)数据库会分配一个长度为10个空间 长度是可以发生改变的
时间类型 date time datatime timestamp(时间戳)
大数据类型 blob clob
文本类型 text
1.4 sql的分类
DDL 数据库定义语言 create alter drop (对库和表的操作)
DCL 数据库控制语言 grant revoke
DML 数据库的操作语言 insert into update delete
DQL 数据库的查询语言 select order by group by limit inner join left join right join
1.5 sql的注意事项
1. mysql不区分大小写
2. 数据库的中注释以 # /**/ –
3. 数据库的 “” ‘’ 没有区别
1.6 sql表语句
1.查看所有数据库
Show databases
2.新建数据库
Create database 数据库的库名
3.删除数据库
Drop database 数据库的库名
4. 切换数据库
Use 数据库库名
5.查看当前数据库的表
Show tables
1.6.1创建表
Create table 表名(
字段名 数据类型 约束条件,
字段名1 数据类型1,
字段名2 数据类型2,
)
Sql约束条件:
自增 auto_increment
主键 primary key
非空 not null
唯一 unique
默认值 default
外键 foreign key (实现多表的联查)
Eg:
Crate table student(
Id int primary key auto_increment unique,
Stu_id int not null unique,
Stu_name varchar(20),
Stu_sex default sex(‘男’),
Stu_age int
)
1.6.2 对表结构的操作
查看表结构
Desc 表名 查看的是表的 字段名 数据类型 约束条件
查看建表语句
Show crate table 表名
修改表名
Alter table 旧表名 rename 新表名
修改字段
Alter table 表名 change 字段名 新字段名 数据类型
添加字段
Alter table 表名 add 字段名 数据类型
删除字段
Alter table 表名 drop 字段名
删除表
Drop table 表名
1.6.3 对表的增 删 改
增:
1.单条数据的增加
Insert into 表名(字段名) values (字段值)
2.多条数据的增加
Insert into 表名 (字段名) values (字段值1),(字段值2),(字段3).。。。。
删: delete from 表名 where 删除条件
1.物理删
将数据从数据库中删除
2.逻辑删
将数据的状态从1改为 0 (0 为不显示 1显示)
改: Update form 表名 set 字段名=字段值 where 条件
跟新一行一列
Update 表 set 字段名 = 字段值 where id = 1
更新一行多列
Update 表 set 字段名 = 字段值 where name=‘张鹏’
更新多行一列
Update 表名 set 字段名 = 字段值 where id>=3 and id <=5
跟新多行多列
Update 表名 set 字段名 = 字段值 where id = 2 or id= 3
跟新多个字段
Update 表名 set 字段名1= 字段值 1, 字段2 = 字段值2 where 条件
1.6.4 对表的查询
1. 查询所有:(*代表的是通配符 代表所有数据 可以换成 具体的字段查询)
Select * from 表名
2. 条件查询
Select * from 表名 where 条件
3.区间查询
Select * from 表名 where id >3 and id<5
Select * from 表名 where id >3 or id<5
4.排序查询 order by
升序 asc (mysql中默认的就是asc)
降序 desc
Select * from 表名 order by stu_age asc/desc
5.分页查询 limit 初始值,记录行数(每页显示的行数)
Select * from stu limit 0,3
每页记录数 pagesize
页码数 pageNumber
Limit(pageNumber-1) * pagesize , pagesize
真分页 将查询出来的所有数据直接分页
假分页 将查询出来的所有数据在页面展示的时候在进行分页
6.去重查询 distinct 一般和聚合函数一起使用
7.模糊查询 like
% 相当于任意字符
_ 相当于一个字符
Select * from 表名 where 字段名 like ‘%张%’
Select * from 表名 where 字段名 like ‘张_’
8.分组查询 group by
Select * from 表名 group by sex =‘男’
9.having 实现分组进行查询
1.6.5 sql中范围符号
And or in
Between and 1 > M< 10 (错误的)
1.7聚合函数
1.7.1求和
Sum(字段名)
Select sum (stu_age) from 表名
1.7.2 求平均
Avg(字段名)
Select avg(stu_age) from 表名
1.7.3 求最大值
Max(字段名)
Select max(stu_age) from 表名
1.7.4 求最小值
Select min(stu_age) from 表名
1.7.5 求总的行数
Select count(stu_id) from 表名
1.8 单表查询的公式
Select 分组条件 或者 聚合函数
From 表名
Where 条件 1
Group by 分组条件
Having 分组后的条件
Order by 排序条件
Limit 起始位置,记录数
1.9多表联查
– 实现使用笛卡尔积
– 内连接 INNER JOIN
– 外连接 左外链 LEFT JOIN
– 右外联 RIGHT JOIN
-- student 和中间表 stu_subject 实现相连
select stu_name,sj.subjectname from student as stu
INNER JOIN stu_subject as stu_sub
ON stu.stu_id = stu_sub.stu_id
-- 中间表和 subject 表实现相连
INNER JOIN `subject` as sj
ON stu_sub.subjectnumber = sj.subjectnumber
两表联查:
共同字段sid,查询表1的name,age,表2的成绩
SELECT 表1.字段,表1.字段,表2.字段 FROM 表1,表2 WHERE 表1.sid = 表2.sid
SELECT stu1.sname,stu1.sage,stu2.cj FROM stu1,stu2 WHERE stu1.sid = stu2.sid
SELECT stu1.sname,stu1.sage,stu2.cj FROM stu1 LEFT JOIN stu2 ON stu1.sid = stu2.sid