Mysql总结

目录

1.MySQL概述:

1.1常用基本命令

1.2注释

2.操作数据库

2.1数据库创建、使用、删除

2.2 数据类型

2.3 字段属性

3.表的操作

3.1创建表

3.2修改表

3.3 删除表

--IF EXISTS 

3.4 表的常用命令

4.DML语言:数据操作语言

4.1 insert插入语句

4.2  update更新语句

4.3 delete删除语句

5、DQL查询数据(最重要)

5.1 分组查询

5.2 连接查询

6.函数

6.1 常用函数

6.2聚合函数


1.MySQL概述:

1.1常用基本命令

use 数据库名;	--打开指定的数据库
show databases;	--查看当前所有的数据库
show tables;	--查看所有的表
describe/desc 表名;	--显示表的信息(字段、字段类型……)
create database 数据库名;	--创建一个数据库
exit	--退出连接

1.2注释

--        --单行注释
#        --单行注释
/*...*/        --多行注释

2.操作数据库

2.1数据库创建、使用、删除

ps注意:系统的关键字不区分大小写

--创建数据库
CREATE DATABASE [IF NOT EXISTS] 数据库名;  --IF NOT EXISTS表示如果这个数据库名不存在,就创建

--如:create database if not EXISTS test_mysql;

--使用数据库
USE 数据库名;

--如:use test_mysql;

--删除数据库
DROP DATABASE 数据库名;

--如:drop DATABASE test_mysql;

2.2 数据类型

  • 数值
数据类型描述大小
tinyint十分小的数据1个字节
smallint较小的数据2个字节
mediumint中等大小的数据3个字节
int标准的整数4个字节
bigint较大的数据8个字节
float浮点数4个字节
double浮点数8个字节
decimal字符串形式的浮点数,一般用于金融计算
  • 字符串
数据类型描述大小
char字符串固定大小0~255
varchar可变字符串0~65535
tinytext微型文本2^8-1
text文本串2^16-1
  • 时间日期
数据类型描述格式
date日期格式YYYY-MM-DD
time时间格式HH:mm:ss
datetime最常用的时间格式YYYY-MM-DD HH:mm:ss
timestamp时间戳,1970.1.1到现在的毫秒数
year年份表示
  • null

没有值,未知

不能使用NULL值进行计算

2.3 字段属性

UnSigned  无符号的,声明了该列不能为负数

ZEROFILL  用零来填充,不足位数的用0来填充 , 如int(3),4则表示为004

Auto_InCrement

  • 自增,自动在上一条记录上基础上默认加1
  • 通常用来设计唯一的主键,必须是整数类型

  • 可定义起始值和步长

NULL 和 NOT NULL

null 表示该列当没有数据插入时可以默认为空

null null 表示该列一定不能为空,该列必须有数据

DEFAULT   

  • 默认的值,用于设置默认值
  • 例如,性别字段,默认为"男" , 否则为 “女” ; 若无指定该列的值 , 则默认值为"男"的值

3.表的操作

3.1创建表

create table if not EXISTS student
(
id int(4) not null AUTO_INCREMENT COMMENT '学号',
name varchar(30) not null COMMENT '姓名',
PRIMARY KEY(id)
)ENGINE=INNODB DEFAULT CHARSET=utf8;
  1. AUTO_INCREMENT 代表自增

  2. COMMENT 表示注释,为字段解释意思,当有看不懂字段意思时可以看这个注释

  3. PRIMARY KEY表示主键声明

  4. ENGINE=INNODB DEFAULT CHARSET设置字符集编码,一般都不用修改,可以不设置

3.2修改表

  • --修改表名

格式: ALTER TABLE 旧表名 RENAME AS 新表名

  • --增加字段

格式:ALTER TABLE 表名 ADD 新字段名 列属性[属性]

  • --修改字段

格式:

ALTER TABLE 表名 MODIFY 字段名 列类型[属性]

ALTER TABLE 表名 CHANGE 旧字段名 新字段名 列属性[属性]

  • 删除字段

格式:ALTER TABLE 表名 DROP 字段名

--修改表名

alter table student rename as new_student;

--添加字段
alter table new_student add age int(11);
alter table new_student add (pwd varchar(12),birthday int(6));  --升级:同时增加2个或多个字段

--修改字段
alter table new_student MODIFY birthday varchar(6);  --修改字段类型和类型值
alter table new_student CHANGE pwd password int(6);  --重命名字段名和类型


--删除字段
alter table new_student DROP birthday;

3.3 删除表

DROP TABLE new_student;
DROP TABLE IF EXISTS teacher;  --IF EXISTS 可加可不加

--IF EXISTS 

--IF EXISTS 加上比较好,如果存在才创建或删除表,不存在时就会报错

拓展:每一个表,都必须存在以下五个字段

名称描述
id主键
version乐观锁
is_delete伪删除
gmt_create创建时间
gmt_update修改时间

3.4 表的常用命令

SHOW CREATE TABLE student;   --查看当初创建表的语句

desc/DESCRIBE student;   --查看表的结构(字段、字段类型等等)

--创建一个新表,数据和字段、类型和student数据一样
create table student1 as SELECT * from student;

4.DML语言:数据操作语言

意义:数据存储,数据管理。顾名思义就是基于数据上的,以上都是基于库、表上的操作

Data Manipulation Luaguge:数据操作语言

4.1 insert插入语句

--插入一条数据
insert into student(name) VALUES('usr');

--插入多条数据
insert into student(id,name) VALUES('12','op');

--省略字段(省略字段的值要和字段一一对应)
INSERT INTO student VALUES('14','ni','1544343','光明小区');  --等同于下句,省略了所有字段
INSERT INTO student(id,name,email,address) VALUES('13','ni','1544343','光明小区');

--省略字段增加多条数据
insert into student VALUES(18,'ming','1545','黎明小区'),(19,'zeng','1545','小区');

语法:INSERT INTO 表名([字段1,字段2..]) VALUES('值1','值2'..),[('值1','值2'..)..];
 

4.2  update更新语句

--指定条件修改数据
UPDATE student SET name='xiao' WHERE id='14';

--没有指定条件会把name这个字段的值都给修改掉
UPDATE student SET name='xiao';

--指定条件对多个字段修改
UPDATE student SET name='ok',address='月湖小区' where id=14;

--指定多个字段对多个值修改数据
UPDATE student SET email='ok',address='月亮小区' where id=13 and name='xiao';

语法:UPDATE 表名 SET 字段1=值1,[字段2=值2...] WHERE 条件[];

where条件语句操作符:

<>或!=不等于

between……and……介于什么之间  如:5和10之间数字

and 和,用于同时匹配两个或多个条件,  如:where id=1 and name='xiao';

or  匹配满足其中一个条件即可   如:where id id=1 or name='xiao';  

<= 小于等于;>=大于等于;>大于;<小于;=等于

like 用于匹配字符串  如 where name like '%小明%';查询含有’小明‘这个字符串的

in 匹配数字范围的条件  如: where id in  (1,10);

4.3 delete删除语句

--限定条件删除一条数据
DELETE FROM student where id='1';

--删除整个表中的数据,不会删除表
DELETE FROM student1;

--DELETE支持回滚数据,就是数据删除了之后数据可以重新回来

 和TRUNCATE和区别:TRUNCATE不支持回滚

5、DQL查询数据(最重要)

Data QueryLanguage 数据查询语言

SELECT [ALL | DISTINCT]
{* | table.* | [table.field1[as alias1][,table.field2[as alias2]][,...]]}
FROM table_name [as table_alias]
  [left | right | inner join table_name2]  -- 联合查询
  [WHERE ...]  -- 指定结果需满足的条件
  [GROUP BY ...]  -- 指定结果按照哪几个字段来分组
  [HAVING]  -- 过滤分组的记录必须满足的次要条件
  [ORDER BY ...]  -- 指定查询记录按一个或多个条件排序
  [LIMIT {[offset,]row_count | row_countOFFSET offset}]; -- 指定查询的记录从哪条至哪条

--select可以查询很多:如:字段,常量,变量,表达式,函数

--基本查询语句。查询所有字段数据
SELECT * FROM student;

--查询个别字段
SELECT id,name FROM student;

--查询限定条件的姓名字段数据,并给name字段起别名
SELECT name as '姓名' FROM student where id='14';

--查询版本
SELECT VERSION();

--查询name字段,并对查询结果去重
SELECT DISTINCT name from student;

--查询含有’小明‘字符串的数据
SELECT * from student WHERE name LIKE '%小明%';

5.1 分组查询

语法:

select 分组函数,分组后的字段

from 表

【where 筛选条件】

group by 分组的字段

【having 分组后的筛选】

【order by 排序列表】

where 用于分组前条件查询,having 用于分组后对结果进行筛选

-- 查询不同科目的平均分、最高分、最低分且平均分大于90
-- 核心:根据不同的课程进行分组
SELECT SubjectName,AVG(StudentResult),MAX(`StudentResult`),MIN(`StudentResult`)
FROM result r
INNER JOIN `subject` s
on r.SubjectNo=s.SubjectNo
GROUP BY r.SubjectNo
HAVING AVG(StudentResult)>90;

5.2 连接查询

image-20200718231304641

-- 查询列参加程序设计考试的同学信息(学号,姓名,科目名,分数)
SELECT s.`StudentNo`,`StudentName`,`SubjectName`,`StudentResult`
FROM student s
INNER JOIN result r
on s.StudentNo=r.StudentNo
INNER JOIN `subject` sub
on r.SubjectNo=sub.SubjectNo
where SubjectName='课程设计';

自连接:把一张表分成两张表,自己连接自己

SELECT a.`courseid` AS '父课程',b.`courseid` AS '子课程'
FROM course AS a,course AS b
WHERE a.courseid=b.pid;

6.函数

6.1 常用函数

-- 数学运算
SELECT ABS(-8); -- 绝对值
SELECT CEIL(5.1); -- 向上取整
SELECT CEILING(5.1); -- 向上取整
SELECT RAND(); -- 返回0~1之间的一个随机数
SELECT SIGN(-10); -- 返回一个数的符号;0返回0;正数返回1;负数返回-1

-- 字符串函数
SELECT CHAR_LENGTH('我喜欢你'); -- 字符串长度
SELECT CONCAT('我','喜欢','你'); -- 拼接字符串
SELECT INSERT('我喜欢',1,1,'超级') -- INSERT(str,pos,len,newstr) 从str的pos位置开始替换为长度为len的newstr
SELECT UPPER('zsr'); -- 转大写
SELECT LOWER('ZSR'); -- 转小写
SELECT INSTR('zsrs','s'); -- 返回第一次出现字串索引的位置
SELECT REPLACE('加油就能胜利','加油','坚持'); -- 替换出现的指定字符串
SELECT SUBSTR('坚持就是胜利',3,6); -- 返回指定的字符串(源字符串,截取位置,截取长度)
SELECT REVERSE('rsz'); -- 反转字符串

-- 时间日期函数
SELECT CURRENT_DATE(); -- 获取当前日期
SELECT CURDATE(); -- 获取当前日期
SELECT now(); -- 获取当前时间
SELECT LOCALTIME(); -- 本地时间
SELECT SYSDATE(); -- 系统时间

SELECT YEAR(NOW());
SELECT MONTH(NOW());
SELECT DAY(NOW());
SELECT HOUR(NOW());
SELECT MINUTE(NOW());
SELECT SECOND(NOW());

-- 系统信息
SELECT SYSTEM_USER();
SELECT USER();
SELECT VERSION();

6.2聚合函数

函数描述
max最大值
min最小值
sum
avg平均值
count计算个数
SELECT count(id) from student;
SELECT min(id) from student;
SELECT max(id) from student;
SELECT sum(score) from student;
SELECT avg(score) from student;

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值