MySQL

 

数据库 DB:database

数据库的目的:能够存储(写)和提供(读)数据。

语法特点:

1.不分英文大小写

2.关键字介意用大写

数据库文件地址:E:\Program Files\MySQL\MySQL Server 5.5\data

win+r:services.msc 启动或停止服务

DDL:数据定义语言

ssuccess:运行成功

errors:运行错误

warnings:运行警告

关键字:删除drop、 修改alter、显示show/desc、改字段名change、改字段约束modify、表table、数据库database、重命名rename、字符集character set。

SHOW DATABASES; -- 查看当前用户下所有数据库

SHOW CREATE DATABASE 数据库; -- 查看当前数据库的创建过程

desc 表名;

CREATE DATABASE 数据库; -- 创建数据库-create database

CREATE DATABASE IF NOT EXISTS 数据库; -- 如果不存在则创建数据库

CREATE DATABASE 数据库 CHARACTER SET utf8; -- 创建数据库并指定字符集

ALTER DATABASE 数据库 CHARACTER SET gbk; -- 更新数据库:不允许修改数据库名

DROP DATABASE 数据库; -- 直接删除数据库

DROP DATABASE IF EXISTS 数据库; -- 如果数据库存在则删除

DESC Infor; -- 查看表的结构

tinyint:1字节 (-128, 127) (O,255) 小整数值

int或integer:4字节(-2 147 483648, 2 147 483 647) (0,4294 967 295) 大整数值

bigint:8字节(-9233372036854775808,9223372036854775807) 0,18446744073709551615 极大整数值

float(m,d):4字节 -3.402823466E +38到-1.175494351E-38、0和1.175494351E-38到3.402823466E+38m是数字总位数,d是小数点后面的位数,如果m和d被省略,根据硬件允许的限制来保存值 单精度浮点数值

double:8字节 -1.7976931348623157E +308到-222507385854072014E- -308.0和12.22507385854072014E- -308到1.7976931348623157E+308 双精度浮点数值

date 4字符 日期

time 3字节 时间

year 1字节 年份

1.进入对应的数据库:use 数据库名

2.创建表和字段

create table 表名(

字段1名 数据类型,

字段2名 数据类型,

...

);

常用的数据类型:

整数:tinyint(小整型)int(整型)bigint(大整型)

小数:double(双精度)float(m“种类多少个”,n“小数点后多少位”)(单精度)

字符串:varchar(n)

日期时间:date(年月日)/datetime(年月日时分秒)timestamp(时间戳)

枚举:enum('枚举值','xxx')

DESC xsxx; -- 描述表

-- 改表名:rename

RENAME TABLE 旧表名 TO 新表名; -- 修改表名

-- 改字段名: alter

#alter table 表名 change 原字段名 新字段名 约束;

ALTER TABLE 表名 CHANGE 旧字段 新字段 VARCHAR(9);

#alter table 表名 modify 字段名 数据类型;--改字段的约束

CREATE TABLE 新表 LIKE 旧表;-- 在studb下创建表TeacherInfor,字段和Infor表中一致

ALTER TABLE 表名 ADD 字段 数据类型; -- 在Infor表中添加(add)字段性别

ALTER TABLE 表名 DROP 字段; -- 删除字段0

CREATE DATABASE IF NOT EXISTS 数据库; -- 如果不存在则创建数据库

DROP DATABASE IF EXISTS 数据库; -- 如果存在则删除

字段约束:在增、删、改数据时必须满足这些条件

1.数据类型 2.默认default “xxx”(默认值且满足数据类型的约束) 3.无符号unsigned(不允许有负号) 4.零填充zerofill(用0来填充未有的值)

5.注释comment “xxx” 6.更新no update 7.非空not null 8.主键primary key(唯一的字段或一组字段构成-约束组,自带非空和唯一)

9.自增auto_increment(自增必须给主键添加,删主键先删自增) 10.唯一性unique(不能重复) 11.外键foreign key

添加主键:primary key(字段名,字段名...) -- 在表中的写入方式

alter table 表名 add 字段名 int primary key;

alter table 表名 add primary key(字段名,字段名...)

删除主键:alter table 表名 drop primary key;

ALTER TABLE 表 MODIFY 字段 INT UNSIGNED auto_increment; -- 自增:默认或非空时触发自增+1的操作,跟主键一起用

ALTER TABLE 表 DROP INDEX 约束名; -- 修改唯一性约束

DML:数据操作语言

DESC 表名;

INSERT INTO 表名 VALUES

(1,'张三','女',25,2,'557318955350',1992),

(2,'李四','男',33,1,'557352959005x',1525);

-- 批量全字段插入数据

INSERT INTO 表名(字段,字段,字段) VALUES

(3,'老八',1598),

(4,'老六',1885);

-- 批量部分字段插入数据

CREATE TABLE 新表名 LIKE 旧表名; -- 创建新表和ygb表一样

INSERT INTO 新表名 SELECT * FROM 旧表名; -- 复制原表中的数据

INSERT INTO 新表名(字段1,字段2) SELECT 字段1,字段2 FROM 旧表名; -- 部分字段复制

INSERT INTO 表名 VALUES (数据) ON DUPLICATE KEY UPDATE 表名=6; -- 更新部分字段

CREATE TABLE 新表名 LIKE 表名; -- 创建新表和ygb表一样

INSERT INTO 新表名 SELECT * FROM 表名; -- 复制原表中的数据

INSERT INTO 新表名(字段1,字段2) SELECT字段1,字段2 FROM 表名; -- 部分字段复制

INSERT IGNORE INTO 表名 VALUES (数据); -- 忽略主键冲突且数据未插入

INSERT INTO 表名 VALUES (数据) ON DUPLICATE KEY UPDATE 表名=6; -- 更新部分字段

UPDATE 表名 SET 字段='已还'; -- 更新数据

UPDATE 表名 SET 字段='借阅' WHERE 字段=某段数据; -- 条件更新

UPDATE 表名 SET 字段=某段数据,字段=某段数据 WHERE 字段=某段数据; -- 同时更新多处数据

UPDATE 表名 SET 字段='借阅' WHERE 字段=某段数据 OR 字段=某段数据; -- 同时满足‘and’,满足其中一个‘or’链接

DELETE FROM 表名 WHERE 字段=某段数据; -- 删除对应的整条数据

TRUNCATE 表名; -- 清空数据

DQL:数据查询语言

SELECT 字段 '备注名',字段 '备注名' FROM 表名 WHERE 字段 LIKE '部分数据+%';

-- 模糊查询 like'字符串'为全字段查询,like'字段_'只匹配后一个字段,不匹配abcd.like'字段%'匹配后续字段

SELECT COUNT(*) '总数',字段 '备注名' FROM 表名 GROUP BY 字段;

-- 分类查询:总数count(),最大值max(),最小值min(),平均数avg(),求和sum().列举值:group_concat()

SELECT SUM(字段) '备注名',字段 '备注名' FROM 表名 GROUP BY 字段;

SELECT * FROM 表名 WHERE 字段>=60 AND 字段<=80; -- 查看成绩在60到80分的同学

SELECT 字段 '备注名',字段 '备注名' FROM 表名 WHERE 字段 LIKE '张%'; -- 查看姓张的同学的班级,姓名和学号;

SELECT COUNT(字段) '备注名',字段 '备注名' FROM 表名 GROUP BY 字段; -- 统计表中的班级数量

SELECT COUNT(字段) '备注名',字段 '备注名' FROM 表名 GROUP BY 字段;-- 统计各班级男女生的数量

SELECT MAX(字段) '备注名',字段 '备注名' FROM 表名 WHERE(SELECT MAX (表名) FROM 表名)=cj;-- 统计学生中的最高分,并显示其班级,姓名和学号

SELECT AVG(字段) '备注名',字段 '备注名' FROM 表名 GROUP BY 字段;-- 统计各班级的平均分

SELECT COUNT(字段) '备注名',字段 '备注名' FROM 表名 WHERE 字段<60 GROUP BY 字段,字段;-- 统计各班分数不及格的男女生数量

SELECT zl FROM 表名; -- 查找所有种类

SELECT DISTINCT zl FROM 表名; -- 去除重复

SELECT DISTINCT 字段 '备注名' FROM 表名; -- 别名

SELECT DISTINCT 字段 '备注名',jg '价格(元)' FROM 表名; -- 查找两种字段

SELECT DISTINCT jg '价格(元)' FROM 表名 WHERE jg>5; -- 算数运算符查询>,<,=,>=,<=,!=

SELECT DISTINCT 字段 '备注名',jg '价格(元)',mc '商品名称' FROM 表名 WHERE zl='食品' OR zl='文具'; -- 查找字段里的两种类型

-- 显示生活用品种价格小于20的商品及保质期

SELECT * FROM 表名 WHERE rq IS NOT NULL; -- 查找所有日期为null

SELECT * FROM 表名 WHERE jg IN(1,3,5,7,9); -- 查找所有价格为n的商品

SELECT * FROM 表名 WHERE jg>5 AND jg<20; -- 查找所有范围内的商品

DELETE FROM 表名 WHERE rq='2022-09-02';-- 删除其中一天数据

第一范式:1nf,数据字段设计时必须满足原子性

1nf要求字段数据是不需要拆分就可以直接应用

如果数据使用的时候需要进行拆分那么就违背1nf

第二范式:2nf不能存在部分依赖

将部分依赖关系独立成表

第三范式:3nf不能存在传递依赖

让依赖非主属性的字段与依赖字段独立成表

ALTER TABLE 表名 DROP FOREIGN KEY 外键名; -- 删除外键

ALTER TABLE 表1 ADD FOREIGN KEY (从表的外键) REFERENCES dept(主表的主键);

ALTER TABLE stuinfor ADD CONSTRAINT 外键名 FOREIGN KEY (字段名)

REFERENCES 小表名(对应字段) ON UPDATE CASCADE ON DELETE SET NULL; -- 级联更新后删除置空

INSERT INTO qsb VALUES (111,'博贤楼',1,'杨阿姨','小明') ON DUPLICATE KEY UPDATE qsz='小月'; -- 更新其中一个寝室的信息

UPDATE qsb SET qsz='小日' WHERE qsh=111; -- 更新其中一个寝室的信息

-- 分组后排序:group by 字段名 desc(降序)/asc(升序)

-- 数据筛选/条件:having order by 字段名/别名 desc/asc

-- 分页查询:limit 数值/limit 起始值,数值

SELECT COUNT(xh) 'qsrs',bjm '班级名' FROM bjb,xsb,zsxsb

WHERE zsxsb.`bjbh`=bjb.`bjh`

AND zsxsb.`xsbh`=xsb.`xh`

AND xsb.`zs`='住校'

GROUP BY bjbh

ORDER BY qsrs ASC;-- 分组查询各班住校人数,并按班级编号降序显示(ORDER BY 进入内存后的数据才能使用别名且在 GROUP BY 之后)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值