- 一个表 对应java的一个类
- 一个字段-> 类的一个属性(成员变量)
- 一条记录-> 类的一个对象
mysql --host=cdb-e.cd.tencentcdb.com --user=root --password=0000000 --P10086
- DML数据库操作语言
- 对表中数据进行增删改
- insert delete update
- DQL数据库查询语言
- 对表中的数据进行查询
- select from从 where条件
- DDL数据库定义语言
- 主要是对数据库,数据库表创建删除维护(不会操作数据)
- create创建数据库/表 alter修改 drop删库 show查
- DCL数据库操纵/控制语言
- 分号结尾
- 不区分大小写
- 关键字建议大小
- /**/ #(单行) -- (单行) 三种注释
- 类型
- 整数 int
- 浮点型 double
- 字符串型 varchar (10)可变的字符
- 日期类型 date 时间日期 datetime
1
2
3
4
5
6
7
8
|
create database 数据库名;
create database db297 charset utf8;
# 删
drop database db297;
# 查正在使用的数据库
select database();
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
# ***重点***
create table 表名(
字段名1 数据类型1(长度) [约束],
字段名2 数据类型2(长度) [约束]
);
CREATE TABLE student3(
sid INT PRIMARY KEY,
sname VARCHAR(30) ,
sage INT
);
# 删除表
drop table 表名;
# 查看一个表的详细信息
desc 表名
show tables; -- 查看所有表(了解
# 修改表名
rename table 表名 to 新表名;
# 修改表中的列
## 增删改查
alter table 表名 add 列名 类型(长度) [约束];
alter table 表名 drop 列名; -- 删除列
#查
desc 表名
#改
# 可以修改列的名字 类型 约束
alter table 表名 change 旧列名 新列名 类型 约束;
alter table 表名 modify 列名 类型 约束;
|
对表中的数据进行增删改
1
2
3
4
5
6
|
insert into 表名 列名1,列名2 values (值1,值2...);
-- 列名选择一列或几列 后面的值和前面的列一一对应
INSERT INTO student (sid,sname) VALUES ('001','李四');
INSERT INTO student (sid,sname,sage) VALUES ('002','王五',18);
INSERT INTO student VALUES ('003','赵六',28); -- 插入所有字段 列可以省略
|
1
2
|
delete from 表名; -- 删除表中所有记录
delete from 表名 where sid = '3';-- 删除1条记录
|
1
2
3
|
update 表名 set 字段名 = 值;
update students set sage=20; -- 把所有记录都改了
update students set sage=20 where sname='王五';
|
select * from 表名; # 查询表中所有列的数据
1
2
3
4
5
6
7
8
9
|
# 查询指定列
select pname,price from product;
# 去重查询
select distinct price from product;
# 运算查询 所有结果都+10
select price+10 from product; -- 列名也变成+10
select price+10 as 打折价格 from product;
|
- 大小
> < <= >= = <>不等于 !=
- 区间 between ... and ... (值 日期)
- 在范围内 in in(100,200)
- like 模糊查询 '张%'
- is NULL / IS NOT NULL
- and or not
1
2
3
4
5
6
|
# 带有条件的查询 where
# 查询为空的商品 不能用 =NULL
select * from product where category_od is null;
# 判断不为空
select * from product where category_od is not null;
|
1
2
3
4
5
6
7
|
CREATE TABLE users(
uid INT PRIMARY KEY AUTO_INCREMENT,
uname VARCHAR(32),
upass VARCHAR(32)
);
INSERT INTO users(uname,upass) VALUES('老王','12345')
|
1
2
3
4
|
delete from tbname; -- 删除表中所有数据 但是自动增长不会重置为1
truncate table tbname -- 删除表的所有数据 并且重置自动增长
# truncate 摧毁表 然后重建
|
关键字: order by
- 从大到小 DESC
- 从小到大[默认] ASC 升序
1
|
select name,price from product order by price desc;
|
纵向个数查询
特点: 是单一值
1
|
select count(*) from product; -- 有几条记录
|
- max 求最大值
- min 求最小值
- avg 求平均值
- sum 求和
把查询数据分为几个组
//先分组 再聚合
只能写聚合函数和分组的列名
关键字: group by 狗肉铺白
1
2
3
4
5
|
select count(*) from product group by category_id;
select count(*) from product group by category_id having count(*) > 1;
select category_id,count(*) from product group by category_id having count(*) > 1;
|
where写在基本查询后面
having卸载分组查询后面
where后面不能写count sum等聚合函数
只查询记录这种的一部分
关键字 limit 数值1(从0开始的下标),数值2(查询的数量)
1
|
select * from product limit 0,5;
|
查询的公式:
一页n条
1
2
3
4
|
第1页 limit 0,n
第2页 limit n,n
第100页 limit (100-1)n,n
第m页 limit (m-1)n,n
|
- 实体完整性:对数据行约束,比如主键约束PRIMARY KEY,唯一约束unique
- 域完整性:对数据列约束,比如数据类型 默认约束default 非空约束not null
- 引用完整性:外键约束(多表的关系)
- 自动增长约束auto_increment
1
2
3
4
|
create table books(
bid int primary key auto_increment,
bname varchar(50);
);
|
1
2
3
4
5
6
|
-- 外键约束
alter table 中间表 add constraint 取个名字_fk
foreign key(列) references 左边表(主键)
alter table 中间表 add constraint 取个名字_fk
foreign key(列) references 右边表(主键)
|
-
交叉查询(笛卡尔积)
select * from 表1,表2 (没有意义)
总字段=表1字段+表2字段
总记录数=表1记录数×表2记录
-
内连接查询 inner join
主键=外键
- 隐式内连接查询(不写inner join)
select * from 主表,从表 where 主表.主键 = 从表.外键
- 显示内连接查询
select * from 主表 innerr join 从表 on 主表.主键 = 从表.外键
- 外连接查询 outer join
左外连接以左表为准,左边必须都有,没有的补空
- 左外连接 left outer join
select * from 主表 left outer join 从表 on 主表.主键 = 从表.外键
- 右外连接 right outer join
select * from 主表 left outer join 从表 on 主表.主键 = 从表.外键
1
2
3
4
5
|
-- 子查询
select * from products where category_id = (select cid from categgory where cname = '化妆品');
-- 内连接
select p.* from products p,category c where p.category_id = c.cid AND c.neme = '化妆品';
|