MySQL数据库(基础知识,约束,增删改查命令)

背景:MySQL数据作为一款开源免费,小巧,功能齐全的数据库,可在Windows和Linux系统上运行,操作方便,其中有许多优势,方便我们存储,管理数据。属于关系型数据库,那我们一起学习了解他的使用吧!

目录

1.什么是数据库

2.为什么学习数据库

3.数据库的结构

4.SQL语句分类

5.DDL语句操作数据库(创建,删除,修改,数据库,表)

6.数据库表的字段类型

7.数据库表的约束

8.数据库DML(增删改)和DQL(查询):


1.什么是数据库:长期存放在计算机内,有组织,可共享的大量数据的集合数据“仓库”。英文名称DataBase,简称DB。
2.为什么学习数据库:

          1.保存数据:保证数据的读取,及其完整性,安全性

          2.数据库结构化,其共享性,独立性,安全性是我们更加方便管理使用数据。

3.数据库的结构:

        数据库(Database):以文件形式将数据存放在磁盘。

        数据表(Table):一组数据记录组成

        字段(Filed):也称域,表中的每一列称为一个字段

        记录:表中的每一行称为一个记录,它由若干个字段组成,实体

        索引:索引实际上是一种特殊类型的表,其中含有关键字段的值和指向实际记录位置的指针,可提高访问数据库的效率。

        SQL语句:结构化查询语句命令。

4.SQL语句分类:
名词解释命令
DDL(数据定义语言)定义和管理数据库对象,如数据库,数据表等create,drop,alter
DML(数据操作语言)用于操作数据库对象中包含的数据insert,update,delete
DQL(数据查询语言)用于查询数据库数据select
DCL(数据控制语言)用来管理数据库的语言,包括管理权限及数据更改grant,commit,rollback
5.常用的数据库表的字段类型:

              在创建表时,我们需要给每个字段确定类型,下面是常用的数据库类型

        字符串类型:

类型说明取值范围
char(M)

固定长字符串,检索快但费空间

0<=M<=255

M字符
varchar(M)

可变字符串

0<=M<=65535

可变长度
tinytext微型文本串
text文本串(4个G左右大小)

        数值类型:

类型说明取值范围

存储需求

tinyint非常小的数据0-1271字节
int标准整数0-2^31-14字节
bigint较大的整数0-2^64-18字节
Decimal(钱)字符串形式的浮点数

decimal(m,d)

m:小数点前位数

d:小数点后位数

m个字节,适用于钱这种需求

        日期和时间类型:

类型说明存储需求
dateTimeYY-MM-DD hh:mm:ss年月日,时分秒的类型都可以用
6.DDL语句操作数据库(库的相关命令):

注意:数据库中大小写不敏感,但每句命令以分号(英文)结尾标识结束,每个关键词中间通过空格分割。

        查看,创建,删除数据库,表。

        1.查看所有的数据库:

        show databse;   --查看所有数据库

        2.创建数据库:

create  databse  数据库名;    ---  创建数据库

        3.删除数据库:

drop  database  数据库名;    -- 删除数据库

        4.使用库(切换数据库):

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

        5.查看数据库中所有的表:

show  tables;   -- 查看某个数据库中所有的表

        6.创建表:

-- 创建表
-- create TABLE 表名(
-- 	字段名 类型 属性,
-- 	字段名 类型 属性,
-- 	...
-- 	字段名 类型  属性
-- );

        7.查看表中的字段:             

   方式一:desc  表名;

   方式二:show  create  table  表名;
        修改和删除 数据库表结构:

        语法:alter  table  表名  关键词   数据 ;

        关键词:rename, as,  add ,drop ,modify  ,  change

        1.修改表名:

alter table  旧表名  rename  as 新表名;

        2.添加字段:

alter  table  表名  add 新字段名  类型  属性;
-- 语句后可添加comment关键字,表示备注或说明;
alter  table  表名  add 新字段名  类型  属性  comment  "备注";

        3.删除字段(慎用,删除后,表中该列的数据会丢失)

alter table 表名  drop 要删除的字段名;

        4.修改字段 :modify,change

方式一:modify  (只能修改数据类型  和 属性)
alter table 表名 modify 字段名  要修改的类型  要修改的属性;
方式二;change 可以修改数据类型  属性  字段名
alter table 表名  change  旧字段名  新字段名  要修改的类型  要修改的属性;

        5.删除表

drop  table 表名;
7.数据库表的约束:

        1.非空约束(not  null):表示该字段在添加数据时,不能为空

create table tb2(
	username VARCHAR(10) not NULL ,-- 非空约束,添加数据时,username不能为空
	userage int 
);

        2.唯一约束(unique):表示该字段的值不能重复,必须唯一

-- 行级约束:表示只给某个字段添加约束,每列的值不能重复,必须唯一
create table tb4(
	username VARCHAR(10) UNIQUE, -- 唯一约束,行级唯一约束
	userage int UNIQUE  -- 每个字段都是各自的唯一约束
);

-- 表级约束,,表示给多个字段同时添加,但只会约束 添加约束 的所有字段值不能同时重复,
create table tb5(
	username VARCHAR(10),
	userage int,
	UNIQUE(username,userage)  -- 表级约束,联合唯一约束,可约束多个
);				
--  字段是有关联的,只有当约束的条件完全一样,才会起约束作用

        3.主键约束(primary key):

        -- 每张表必须有且只有一个表
        -- 主键的值是唯一的
        -- 主键是不能为null的,

-- 一般主键的建立方式
--  自增:auto_increment,从主键最大的值开始自增
create table tb9(
		tid int PRIMARY key auto_increment,
		username VARCHAR(10),
		userage int
);

        6.外键约束(foreign key  ):

-- 外键约束
-- 外键的值是可以重复的
-- 外键的值可以为null
-- 外键必须要写  父表中有的数据
-- 父表中的关联字段必须是一个具有唯一性的数据
-- 父表的字段名和从表的字段名不一定要相同,但是数据量类型必须一致
-- 一个表中可以有多个外键,也可以有多个外键约束,但只能有一个主键
create table b(
	bid int PRIMARY key auto_increment,
	bname VARCHAR(10),
	aid int,
	FOREIGN key(aid) REFERENCES a(aid)
);
8.数据库DML(增删改)和DQL(查询):

        数据的添加:将数据添加至表。

-- 一次添加一条数据 语法:
insert into  表名(字段名,字段名,...)  values(值,值,...);
-- 一次添加多条数据  语法:
insert into  表名(字段名,字段名,...)  values(值,值,...),(值,值....),(值,值....)...;

         数据的修改:修改表中的字段值

-- 修改 语法:
-- update 表名  set  字段名=值,字段名=值,....,字段名=值  where 子句条件
-- 例如:修改student表中sname为齐同学的生日
update stu1 set birthday='1678-1-1 12:31:15' WHERE sname='齐同学';

      数据的删除:将表中符合条件的数据从表中删除

-- 方式一:
-- 删除  :仅仅删除数据
-- delete from 表名 [where 子句]
DELETe from newstu;  -- 会删除表中所有数据
-- 例子:删除birthday 是null的数据
delete from stu1 where birthday is null;

--方式二:
-- 清空表,截断:会将自增主键变为 1,从1开始再次自增;
-- truncate 表名
TRUNCATE stu1;
        数据的查询(单表查询):
-- 从表中获取部分数据
-- select 字段名,字段名 from student

-- 全字段查询
-- 方式一:
SELECT 字段名..(所有字段名) from student;
-- 方式二:
select * from student; -- 先查字段名,再查,不利于SQL优化,效率低

-- 可通过as  关键字给查询到每个字段的别名
select sname as '学生姓名',ssex '学生性别',birthday 生日 from student;

-- 带条件查询  where 子句
-- 查询sid为5的学生信息
SELECT * from student where sid=5;

        distinct  :去重(可对重复的数据去重)

-- 所有字段的数据要一致才会去重
SELECT distinct sname,ssex FROM student;

        in关键字:表示在一些特定范围内就符合条件

select * from student where sid in(3,5,7,9);

        like关键字:模糊查询

-- 模糊符号  %任意多的任意字符
-- _ :一个任意字符
-- 查询sname值中有张的学生信息
select * from student where Sname like '%张%';

        null值得查询: 注意:null是一种类型

-- 查询生日是null的
select * from student where birthday is null;
-- 查询生日不是null的
select * from student where birthday is not null;

        聚合函数:

        -- count():统计个数
        -- max():统计最大数
        -- min():统计最小值
        -- sum():总和
        -- avg():平均值

-- 查询学生表数据总数
SELECT count(*) from student;		-- 推荐
-- sum,avg,min,max  数值类型
select sum(score) from sc;  -- 成绩总和
SELECT avg(score) from sc;  -- 成绩平均值
select max(score) from sc;  -- 成绩最大值
select min(score) from sc;  -- 成绩最小值

        group  by :分组,将表中某个字段按照唯一值分组,

        having:类似where条件,但判断的是聚合之后的数据

-- 统计成绩表 统计每个同学的总分和平均分
select sid 学号,sum(score) 总分,avg(score) 平均分 from sc group by sid;

-- 查询出平均分不及格的sid 平均分
select sid 学号,sum(score) 总分,avg(score) 平均分 from sc  
group by sid HAVING avg(score)<60;

        order by :排序

-- DESC:降序  必须写
-- asc :升序 或者不写(默认的)
select * from student ORDER BY classid desc;

        limit  分页:语法:-- limit 分页 0 开始 (页码-1)*步长,步长

-- limit 分页 0 开始 (页码-1)*步长,步长
-- SELECT * from student LIMIT 位置,步长;
select * from student limit 3,3;

  • 13
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

cph_507

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值