202-8-15第八组---MySQL数据库

目录

一、数据库

二、MySql

1、概念

2、基本操作

(1)登录MySQL

(2)创建一个数据库

(3)查看所有的数据库

(4)使用数据库

​编辑

3、SQL语言

4、SQL分类

三、DCL---数据控制语言

1、创建用户

2、修改密码

(1)-- 5.7版本

(2)-- 8.0版本

​编辑

3、给用户授权

(1)常用权限

(2)使用语法

4、撤销授权

使用语法

5、查看权限

使用语法

6、删除用户

使用语法

四、 DDL (数据定义语言)

1、表

2、创建表

3、数据类型

(1)整型

(2)浮点型

(3)字符串类型

(4)几种字符串类型的区别  

       ① char和vachar的区别: 

       ②varchar和text区别:

4、日期类型

5、建表约束

(1)NOT NULL约束

(2)UNIQUE约束

(3)主键约束

(4)外键约束

6、查看表

7、对表的修改操作

(1)添加列

(2)修改列数据类型

(3)修改列名称和数据类型

(4)删除列

(5)修改表名

(6)删除表

(7)添加主键(了解即可)

(8)添加外键(了解即可)

五、DML 数据操作语言

1、插入数据

(1)单个插入

(2)批量插入

(3)注意

2、修改数据

(1)修改某列的全部的值

(2)修改特定行的数据

(3)注意

3、删除数据

(1)全部删除

(2)根据条件删除

(3)截断(清空表)

六、TCL事务控制语言

1、Mysql的数据库引擎

2、事务的四大特征ACID

(1)原子性A

(2)一致性C

(3)隔离性Isolation

(4)持久性D

七、 MySQL数据库命名规则

1、数据库命名规范

2、数据表命名规范

3、数据库字段命名规范

4、SQL语言编码规范


一、数据库

按照数据结构来组织、存储和管理数据的仓库。是一个长期存储在计算机内的、有组织的、可共享的、统一管理的大量数据的集合。

数据对于公司来说是最宝贵的财富,程序员的工作就是对数据进行管理,包括运算、流转,存储、展示等,数据库最重要的功能就是存储数据,长期保存数据。

二、MySql

1、概念

(1)MySql是一个关系型数据库管理系统,瑞典的公司研发,被Oracle收购。

(2)MySql使用了SQL语言。

(3)MySql分为社区版和商业版,体积小、速度快、成本低、开源。

(4)MySQL保存数据的模式

          ①  创建一个数据库。
          ②  在数据库下保存多张表。
          ③  在每张表中保存多条数据。

2、基本操作

(1)登录MySQL

①直接在MySQL文件夹中,找到MySQL命令行客户端进行登录

 ②找到MySQL的安装目录,到bin目录下,进入cmd命令控制台

登录命令

mysql -h 127.0.0.1 -p3306 -uroot -p

也可以简写登录命令,退出命令是exit。

mysql -uroot -p

(2)创建一个数据库

MySQL是一个数据库管理系统,管理多个数据库。

①第一种创建命令(用的比较多)

 create database 数据库名;

②第二种创建命令(用的比较少,基本不用)

 create schema 数据库名;

比如创建一个jiruan的数据库 

(3)查看所有的数据库

查看所有数据库的命令

show databases;

(4)使用数据库

使用数据库的命令

use 数据库名

3、SQL语言

SQL是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存储数据以及查询、更新和管理关系型数据库系统。

4、SQL分类

(1)DCL ( Data Control Language )

数据控制语言:用来定义访问权限和安全级别。


(2)DDL ( Data Definition Language)

数据定义语言:用来定义数据库对象:库,表,字段(列)。功能:创建、删除、修改库和表结构。
 

(3)DML ( Data Manipulation Language)

数据操作语言:用来定义数据的增删改记录。

(4)DQL ( Data Query Language)

数据库查询语言:用来查询记录。

(5)TCL ( Transition Control Language )

事务控制语言:用来管理事务。

三、DCL---数据控制语言

1、创建用户

(1)创建一个用户,该用户只能在指定的ip地址上登录MySQL

create user 用户名@IP地址 identified by '密码';

(2)创建一个用户,该用户可以在任意的ip地址上登录MySQL(任意地址都能登录的方法,用到一个通配符%,表示任意地址)

create user 'moon'@'%' identified by 'root';

创建成功

登录查看

2、修改密码

(1)-- 5.7版本

需要使用passwod对密码进行加密

set password for moon@'%' = password('新密码');

(2)-- 8.0版本

版本直接赋值

set password for moon@'%' = '新密码';

3、给用户授权

(1)常用权限

指定用户指定数据库上赋予指定权限, 权限有很多,列举几个常用的:

①create 可以创建数据库

②select 查询数据

③delete 删除数据

④update 修改数据

⑤insert 插入数据

(2)使用语法

注意:这里用的是着重符  `  ,不是单引号  '   

grant `限1,权限2,....权限n` on 数据库名.* to 用户名@IP地址

4、撤销授权

使用语法

revoke 权限1,....权限n on 数据库.* from 用户名@IP地址

5、查看权限

使用语法

show grants for 用户名@IP地址

6、删除用户

使用语法

drop user 用户名@IP地址

四、 DDL (数据定义语言)

DDL主要是用在定义或改变表的结构。

1、表

用来存储数据的对象,是有结构的数据的集合。
●行:一行即为一条数据,数据库一 共有多少条数据,实际上就是有几行数据。
●列:一列即为一个字段,数据库一共有多少个字段,实际上就是有几列数据。|

2、创建表

在关系型数据库中,我们需要表名和列名,同时设定。在创建表的时候,建议字段名使用着重符“ ”。

create table 表名(
    字段名1(列名) 类型(长度) 约束条件,
    字段名2(列名) 类型(长度) 约束条件,
    字段名3(列名) 类型(长度) 约束条件,
    ……
);

3、数据类型

(1)整型

MySQL数据类型含义(范围)
tinyint1字节,范围:-128~127
smallint2字节,范围:-3W多~3W多
mediumit3字节,范围:
int4字节,范围:-21个亿~21个亿
bigint8字节,范围:

在整型中,我们默认使用的是有符号的。我们可以使用unsigned关键字,定义成无符号类
型,tinyint unsigned的取值范围0~255。
如果长度需要配合zerofi11 :

int(4) unsigned zerofi1l;

说明:上述的int长度为4 ,如果设置了zerofill ,如果数据是1 ,最终存到表格中的数据格式为
0001 , 0010。

(2)浮点型

MySQL数据类型含义(范围)
float(m,d)4字节,单精度浮点型, m总长度, d小数位。
double(m,d)8字节,双精度浮点型,m总长度,d小数位。
decimal(m,d)decimal是存储为字符串的浮点数,对应我们java中的BigDecimal。

比如定义一个float(5,3) :
●插入123.45678 ,最后查询得到的结果就是99.999 ;
●插入12.3456789 ,最后查询得到的结果就是12.346 ;
所以, 在使用浮点型的时候,要以插入到数据库中的实际结果为准。

(3)字符串类型

MySQL数据类型含义(范围)
char(n)固定长度,最多255个字符。
varchar(n)可变长度,最多65535个字符。
tinytext可变长度,大255个字节。
text可变长度,最大65535个字节。
mediumtext可变长度,最大16MB。
longtext可变长度,最大4GB。

(4)几种字符串类型的区别  

       ① char和vachar的区别: 

●char类型是[定长]的类型,当定义char(10) ,输入的时"123" ,他们占用的空间依然是10个
字符。当输入的字符如果超出指定的范围, char会截取超出的字符。而且,当存储char,
MySQL会自动删除输入字符串末尾的空格。
●char适合存储很短的, -般固定长度的字符串。例如, char非常适合存储密码MD5值,因为
它是一个定长的值。 对于端的列, chartbvarchar在存储空间上效率更高。
●varchar(n)类型用来存储可变长度,长度最大为n个字符的可变长度的字符串数据。比如
varchar(10) ,然后存储"abc" ,实际就是存储了3个字符。
●char类型每次修改的数据长度相同,效率更高。varchar ,每次修改的数据长度如果不同,效
率更低。

 

       ②varchar和text区别:

●text不能设置默认值, varchar可以设置默认值。
●text类型,由于单表的最大行宽的限制,支持溢出存储,只会存放768字节在数据页中,剩余
的数据存储在溢出段中。
●一般我们都是用varchar.

           

4、日期类型

MySQL数据类型含义(范围)
date3字节,日期,格式: 2022-08-15

time

3字节,日期,格式: 2022-08-15
datetime8字节,日期时间,格式: 2022-08-15 10:55:40
timestamp4字节,时间戳,毫秒数。
year1字节,年份

5、建表约束

因为一张表要有多个列,数据库中的表不止有一张,建表约束说的就是我们应该如何规范表中的数据以及表之间的关系。

MySQL约束类型(约束名称)描述
NOT NULL非空约束
UNIQUE唯一约束,取值不允许重复
PRIMARY KEY主键约束(主关键字) , 自带非空,唯一、 索引
DEFAULT默认值
FOREIGH KEY外键约束,表和表之间的约束

(1)NOT NULL约束

CREATE TABLE `student` (
	`stu_id` int,
	`stu_name` VARCHAR(50) NOT NULL,
	`gender` char(1) DEFAULT '男',
	`brithday` datetime,
	PRIMARY KEY(stu_id)
);

(2)UNIQUE约束

create table `book` (
	`id` int PRIMARY KEY auto_increment,
	`name` varchar(50) not null,
	`bar_code` VARCHAR(30) not null,
	`aut_id` int not null,
	UNIQUE(bar_code)
);

(3)主键约束

create table `author`(
	`aut_id` int,
	`aut_name` varchar(50) not null,
	`gender` char(1) default '男',
	`country` varchar(50),
	`birthday` datetime,
	PRIMARY KEY(aut_id,aut_name)
);

(4)外键约束

推荐配合主键去使用。有了这个约束,我们在向表中插入数据时,来源于另外一张表的主键

外键会产生的效果:

a.删除表的时候,如果不删除引用外键的表,被引用的表是不能直接删除。

b.外键的值必须来源于引用的表的主键字符。

create table `author`(
	`aut_id` int,
	`aut_name` varchar(50) not null,
	`gender` char(1) default '男',
	`country` varchar(50),
	`birthday` datetime,
	PRIMARY KEY(aut_id)
);
create table `book` (
	`id` int PRIMARY KEY auto_increment,
	`name` varchar(50) not null,
	`bar_code` VARCHAR(30) not null UNIQUE,
	`aut_id` int not null,
	FOREIGN KEY(aut_id) REFERENCES author(aut_id)
);

6、查看表

(1)查看当前库的所有表

show tables;

(2)查看表结构

desc 表名;

7、对表的修改操作

前缀都是alter table  表名

(1)添加列

ALTER table author add (hobby varchar(20),address varchar(50));

(2)修改列数据类型

ALTER table author MODIFY address varchar(100);

(3)修改列名称和数据类型

alter table author change address addr VARCHAR(60);

(4)删除列

alter table author drop addr;

(5)修改表名

ALTER TABLE author RENAME `authors`;

(6)删除表

drop table if EXISTS `user`;

(7)添加主键(了解即可)

使用语法:

ALTER TABLE 表名 ADD CONSTRAINT 主键名 PRIMARY KEY 表名(字段名);
//主键名的命名方式:pk_表名

使用示例:

ALTER TABLE `authors` ADD CONSTRAINT pk_authors PRIMARY KEY `authors` ( aut_id );

(8)添加外键(了解即可)

使用语法:

ALTER TABLE 从表 ADD CONSTRAINT 外键名 FOREIGN KEY 从表(外键字段) REFERENCES 主表(主键字段;)
//外键名的命名方式:fk_从表_主表

使用示例:

ALTER TABLE book ADD CONSTRAINT fk_book_authors FOREIGN KEY book ( aut_id ) REFERENCES `authors` ( aut_id );

五、DML 数据操作语言

该语言来对表记录进行操作(增、删、改),不包含查询。

1、插入数据

(1)单个插入

INSERT INTO `authors` ( aut_id, aut_name, gender, country, birthday, hobby ) VALUES (4,'罗曼罗兰','女','漂亮国','1945-8-15','写字');

如果插入的是全字段,字段名可以省略。

INSERT INTO `authors` VALUES (5,'韩寒','男','中国','1984-8-15','赛车');

(2)批量插入

INSERT INTO `authors` VALUES 
(7,"李诞",'男','中国','1985-8-15','脱口秀'),
(8,"史铁生",'男','中国','1967-8-15','绘画');

(3)注意

①在数据库中所有的字符串类型,必须使用引号。

②如果部分字段插入,必须列名和值要匹配。如果全字段插入,则列名可以省略。

2、修改数据

(1)修改某列的全部的值

update `authors` set aut_name = '郭小四',country='中国';

(2)修改特定行的数据

update `authors` set aut_name = '金庸',country='中国' where aut_id = 1;

(3)注意

3、删除数据

(1)全部删除

delete from `student`;

(2)根据条件删除

delete from `student` where stu_id = 8;

说明:通过delete这种删除方式删除的数据,主键如果是自动递增,会断档。

(3)截断(清空表)

TRUNCATE student;

说明:

truncate实际上应该属于DDL语言,操作立即生效,不能撤回。

  • truncate和delete都是删除数据,drop删除整个表。

  • truncate速度快,效率高,可以理解为直接删除整个表,再重新建立。

  • truncate和delete都不会是表结构及其列、约束、索引的发生改变。

六、TCL事务控制语言

1、Mysql的数据库引擎

(1)由MySQL中,只有使用了Innodb引擎的数据库才支持事务
(2)事务处理可以用来维护数据的完整性。保证sql语句要么全部执行,要么全部不执行。

(3)发生在DML中,增删改

2、事务的四大特征ACID

(1)原子性A

一个事务,要么全部完成,要么全部不完成。

(2)一致性C

在事务开始之前和事务结束之后,数据库的完整性没有被破坏。

(3)隔离性Isolation

数据库允许多个事务同时对数据进行处理。每个事务之 间是相互隔离。

(4)持久性D

事务结束以后,对数据的增删改是永久性的。

术语:提交事务,回滚事务(事务回滚)
1、事务一旦提交,就不可能回滚。
2、当一个连接对象被创建时,默认情况下自动提交事务。.
3、关闭连接时,数据会自动提交事务。

相关具体知识点请参考博客:

https://blog.csdn.net/qq_40678222/article/details/113777410

https://blog.csdn.net/qq_40520912/article/details/118001935

七、 MySQL数据库命名规则

参考文章:https://www.jianshu.com/p/361db48390a8

1、数据库命名规范

采用26个英文字母(区分大小写)和0-9的自然数(经常不需要)加上下划线'_'组成,
命名简洁明确,多个单词用下划线'_'分隔,一个项目一个数据库,多个项目慎用同一个数据库

2、数据表命名规范

(1)采用26个英文字母(区分大小写)和0-9的自然数(经常不需要)加上下划线""__""组成,命名简洁明确,多个单词用下划线分隔
(2)全部小写命名,禁止出现大写
(3)禁止使用数据库关键字,如:name,time ,datetime,password等
(4)表名称不应该取得太长(一般不超过三个英文单词)
(5)表的名称一般使用名词或者动宾短语
(6)用单数形式表示名称,例如,使用 employee,而不是 employees
明细表的名称为:主表的名称+字符dtl(detail缩写)
例如:采购定单的名称为:po_order,则采购定单的明细表为:po_orderdtl
(7)表必须填写描述信息(使用SQL语句建表时)

3、数据库字段命名规范

(1)采用26个英文字母(区分大小写)和0-9的自然数(经常不需要)加上下划线'_'组成,命名简洁明确,多个单词用下划线'_'分隔

(2)全部小写命名,禁止出现大写

(3)字段必须填写描述信息

(4)禁止使用数据库关键字,如:name,time ,datetime password 等

(5)字段名称一般采用名词或动宾短语

(6)采用字段的名称必须是易于理解,一般不超过三个英文单词

(7)在命名表的列时,不要重复表的名称

例如,在名employe的表中避免使用名为employee_lastname的字段

(8)不要在列的名称中包含数据类型

(9)字段命名使用完整名称,禁止缩写

4、SQL语言编码规范

(1)所有关键字必须大写,如:INSERT、UPDATE、DELETE、SELECT及其子句,IF……ELSE、CASE、DECLARE等

(2)所有函数及其参数中除用户变量以外的部分必须大写

(3)在定义变量时用到的数据类型必须小写

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值