赞
踩
数据库: 数据库中存放的一般是多张表
表: 表是用来存放数据
关系: 两个表单公共字段
行 : 也称为叫记录 , 也叫实体
列 : 也称为叫字段 , 也叫属性.
数据冗余:数据冗余可以减少 , 但是不能杜绝 减少数据冗余的方法就是分表
# 创建数据库
CREATE database student;
#显示所有数据库(了解)
show DATABASES;
#删除数据库
drop database `$%`;
# 如果存在 就删除
drop database if exists `create`;
# 选择数据库 (选中)
use student;
#创建数据表
create table [if not exists] student1(
`字段名` 数据类型 [null | not null] [default][primary key] [comment],
`字段名` 数据类型
)[engine = 引擎的名称 ] [charset = 字符编码 ]
解释:{
primary key 主键 : 主键的值不能重复 , 不能为空 , 每张表必须只能有一个主键(其目的是为了标识每条记录,避免数据不完整)
auto_increment : 自动增长, 默认从1开始 每次递增 1
comment :备注
engine : 引擎 数据库存储的引擎 引擎决定了数据的查找和存储
默认 myisam
常用 innodb
}
#删除表
drop table [if exists] 表名;
#修改表 在修改表结构中使用的指令是 alter
ALTER TABLE 数据表名称 MODIFY 字段名 新数据类型;
#添加字段
alter table 表名 add 字段名 数据类型 [位置]
#删除字段
alter table 表名 drop 字段名;
#插入数据
insert into 表名 values(值1,值2)
insert into 表名 (字段1,字段2) values(值1,值2)
# 插入相关的数据
INSERT INTO stuinfo VALUE('男' , 5, '郭佳坤' ,19 , 13100001111)
#删除数据
delete from 表名 [where 条件];
#删除所有的记录
DELETE FROM stuinfo;
#更改数据
update 表名 set 字段名 = 值 [where条件]
#查询数据
select 字段名 from 表名
DELETE FROM 和TRUNCATE TABLE的 区别
delete from :是遍历表记录 , 一条一条的删除
TRUNCATE TABLE: 将原表销毁 , 在重新创建一个同结构的新表,
就清空表数据而言, 第二种的效率要高
MySQL是强类型语言,php是弱类型语言
整型常用的有 tinyint int
整型 | 占用的字节数 | 范围(带负数) |
| |
---|---|---|---|---|
tinyint | 1 | -128~127 | 0-255 | |
smallint | 2 | -32768~32767 | 0-65535 | |
mediumint | 3 | -8388608~8388607 | 0-16777215 | |
int | 4 | -2147483648~2147483647 | 0-4294967295 | |
bigint | 8 | -9223372036854775808~9223372036854775807 | 0-18446744073909551615 |
选择的范围尽可能小 , 范围越小占用的资源就越少
无符号整型( unsigned )无符号整型就是没有负数
整型支持显示宽度:
Zerofill 整型支持显示宽度 , 显示带宽是最小的显示位数 ,如int(11)表示整型最少用11位数字来表示
如果不够用0 来填充 . 显示默认宽度不起作用 ,
必须要结合 zerofill来使用才能起作用
浮点型 | 占用字节数 | 范围 |
float(单精度型) | 4 | -3.4E+38~3.4E+38 |
double(双精度型) | 8 | -1.8E+308~1.8E+308 |
定点数
一般用来存钱
原理:
将整型部分和小数部分分开存储
语法:
decimal(M,D)
数据类型 | 描述 |
char | 定长字符,最大可以到255 |
varchar | 可变长度字符,最大可以到65535 |
tinytext | 2^8^–1 =255 |
text | 2^16^–1 =65535 |
mediumtext | 2^24^–1 |
longtext | 2^32^–1 |
varchar和char的区别是什么?
char 固定长度,当存入的字符串长度小于设置值时,该字段所占空间为设置的值;
varchar 可变长度,当存入的字符串长度小于设置值时,所占空间为字符串实际长度
char类型的效率比varchar的效率稍高
char最大长度是255字符,varchar最大长度是65535个字节
Datatime 是日期时间型
Year (年)
Time (时间)
在MySQL不支持布尔型(boolean)
电话号码一般使用什么数据类型存储? < varchar > varchar (字符型 )
手机号码用什么数据类型 < char(11) > (字符型)
性别一般使用什么数据类型存储? < tinyint >
年龄信息一般使用什么数据类型存储? <tinyint >
照片信息一般使用什么数据类型存储? <binary>
薪水一般使用什么数据类型存储? <decimal>
六大约束
1 主键(primary key):用于保证该字段的值具有唯一性并且不能为空,也起到标识列的作用
2 唯一(unique):用于保证该字段的值具有唯一性,可以为空
3 非空(not null): 用于保证该字段的值不能为空
4 默认值(default):用于保证该字段有默认值
5 检查(check):mysql中不支持,用于检查字段中是否为指定值
6 外键(foreign key):用于限制两张表的关系,用于保证该字段的值必须来自于主表的关联列的值, 在从表添加外键约束,用于引用主表中某些值
键 | 区别 |
主键 | 1、不能重复,不能为空 2、一个表只能有一个主键 |
唯一键 | 1、不能重刻,可以为空 2、一个表可以有多个唯一键 |
求和 sum()
求平均值 avg
最大值 max()
最小值 min
计数 count()
Round 四舍五入
rand() 随机数
Abs 求绝对值
select [选项] 列名 [from 表名] [where 条件] [group by 分组] [order by 排序][having 条件] [limit 限制]
语法: order by 排序字段名称 排序规则;
排序规则:ASC 升序 默认 DESC 降序
语法
select * from 表名 limit [起始位置],显示长度 SELECT * FROM stu LIMIT 6,3;
在Css * (所有的标签)
在MySQL中
_ [下划线] 表示任意一个字符
% 表示任意字符
左外连接
select * from 表1 left join 表2 on 表1.公共字段=表2.公共字段
SELECT * FROM info LEFT JOIN scroll ON scroll.`sid` = info.`id`;
# 常用的数据类型
# mysql 有布尔型????
# 整型
# int tinyint (-127 ~ 128) smallint (-65534 ~ 65535) int(4个字节)
# 浮点型
# float doble
# 定数型(一般用在钱)
# decmal (10,2)
# 字符型
# 定长 char # 变长字符 varchar
# data时间型
# 日期 # 2022-9-7
# 时间日期 # 2022-9-7 9:23:00
事务必须具有以下四个属性, 简称 ACID 属性
开启事务
start transaction 或
begin [word]
提交事务
commit
回滚事务
rollback
create table 表名()
create view 视图的名字 as select * from 表名;
# 创建一个视图
CREATE VIEW vorder AS SELECT * FROM `order`;
SELECT * FROM vorder CREATE VIEW vorder1 AS SELECT num FROM `order`;
SELECT * FROM vorder1;
# 修改视图
ALTER VIEW vorder AS SELECT gid FROM `order`; SELECT * FROM vorder
# 删除视图
DROP VIEW vorder;
btn.onclick = 执行的一件事情 点击
滑入 onmouseover
移出 onmouseout
增加 insert
删除 delete
更改 update
前 before
后 after
CREATE TRIGGER 触发器名字 触发器的时间 事件类型 ON 表名 FOR EACH ROW
BEGIN
代码体
END
-- test 库存 CREATE TABLE my_goods( id INT PRIMARY KEY AUTO_INCREMENT, NAME VARCHAR(20) NOT NULL, price DECIMAL(10,2) DEFAULT 1, inv INT COMMENT '库存数量')CHARSET utf8; INSERT INTO my_goods VALUE (NULL, 'iPhone11 Pro' , 7888, 100),(NULL, 'iPhone11 Pro Max' , 9888, 100); -- 订单 CREATE TABLE my_orders( id INT PRIMARY KEY AUTO_INCREMENT, gid INT NOT NULL COMMENT '商品id', g_number INT NULL COMMENT '商品数量')CHARSET utf8 SHOW TABLES; SELECT * FROM my_goods; SELECT * FROM my_orders; # 创建触发器 DELIMITER ** -- 实例 CREATE TRIGGER after_order AFTER INSERT ON my_orders FOR EACH ROW BEGIN -- 写的代码是 当订单表的 number 中的值插入为 2 那么就应该让库存表 - 2 UPDATE my_goods SET inv = inv - new.g_number WHERE id = new.gid; # UPDATE my_goods SET inv = 97- 10 WHERE id = 1; END ** SELECT * FROM `my_goods`;
show triggers ;
drop trigger 触发器名字;
-- 实例
drop trigger after_order;
假如用户购买的数量超过库存的数量
应该怎么办
代码执行的结构
顺序执行
选择执行
if(分支 )
循环结构
if 条件 then
else
end if
实例:
- DELIMITER ||
- CREATE TRIGGER after_order AFTER INSERT ON my_orders FOR EACH ROW
- BEGIN
-
- SELECT inv FROM my_goods WHERE id = new.gid INTO @inv;
-
- IF @inv < new.g_number THEN
-
- INSERT INTO xxxx VALUES(12312312);
- END IF;
- UPDATE my_goods SET inv = inv - new.g_number WHERE id = new.gid;
- END||
- DELIMITER ;
-
- INSERT INTO `my_orders` VALUE(NULL,1,10)
- -- 语法
- create procedure 存储过程的名字([参数列表])
- begin
-
- end
- -- 实例
- # 封装为一个存储过程
- DELIMITER //
- CREATE PROCEDURE queryGoods ()
- BEGIN
- SELECT * FROM `my_goods`;
-
- END//
- -- 调用存储过程
- CALL queryGoods();
call 存储过程的名字;
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。