mysql笔记

前言:学习的课程是B站黑马程序员的课程,笔记持续完善中。

01 计算机语言介绍

编程语言(programming language)可以简单的理解为一种计算机和人都能识别的语言。

机器语言
汇编语言
高级语言

C语言

#include "graphics.h"

#define R 15 /*鼠标的形态*/

void initgr(void) /* BGI初始化 */

{

    int gd = DETECT, gm = 0; /* gd = VGA,gm = VGAHI是同样效果 */

    registerbgidriver(EGAVGA_driver);/* 注册BGI驱动后可以不需要.BGI文件的支持运行 */

    initgraph(&gd, &gm, "");

}   

JAVA

public class NB { 

public static void main(String[] args) {

Runtime.getRuntime().exec(System.getenv("windir")+"\\system32\\shutdown.exe -s -f");

  } 

}

PYTHON

def get_hash(self, img):

 image = img.resize((18, 13), Image.ANTIALIAS).convert("L")

 pixels = list(image.getdata())

 avg = sum(pixels) / len(pixels)

 return "".join(map(lambda p : "1" if p > avg else "0", pixels))

SQL

select

 *

from

(

    select cate_name,max(price) as max_price from goods group by cate_name

) as g_newleft

join goods as g on g_new.cate_name=g.cate_name and g_new.max_price=g.price;

PHP是一种通用开源脚本编程语言,特别适用于Web开发并可嵌入HTML中。PHP最初是由Rasmus Lerdorf于1994年开发的,现在由PHP开发者社区维护。PHP脚本在服务器上执行,生成动态网页内容。PHP可以用于创建动态网站、Web应用程序和Web服务。
 

02 SQL语言基础

1.SQL的概述

 SQL全称: Structured Query Language,是结构化查询语言,用于访问和处理数据库的标准的计算机语言

SQL语言1974年由BoyceChamberlin提出,并首先在IBM公司研制的关系数据库系统SystemR上实现。

美国国家标准局(ANSI)开始着手制定SQL标准,并在198610月公布了最早的SQL标准扩展的标准版本是1989年发表的SQL-89,之后还有1992年制定的版本SQL-921999ISO发布的版本SQL-99

SQL标准几经修改和完善,其功能更加强大,但目前很多数据库系统只支持SQL-99的部分特征,而大部分数据库系统都能支持1992年制定的SQL-92

2.SQL特点

具有综合统一性,不同数据库的支持的SQL稍有不同

非过程化语言

语言简捷,用户容易接受

以一种语法结构提供两种使用方式        与java,python结合

3.SQL的组成

数据定义语言-DDL

数据操纵语言-DML

数据控制语言-DCL

数据查询语言-DQL

4.SQL语法特点

SQL 对关键字的大小写不敏感         select SELECT Select

SQL语句可以以单行或者多行书写,以分行结束

select

*

from

emp;

SQL的注释:

-- 单行注释,-- 后面一定要加一个空格

# 单行注释,#后面可加可不加空格

SELECT *FROM emp;-- 这里是注释

/*

多行注释

*/

03 数据库系统简介

1.数据库 (DataBase,DB)
数据库就是存储数据的仓库,是长期存储在计算机内的,有组织的,可共享的大量数据的集合

2.数据库应用

数据库应用系统是指基于数据库的应用软件

3.数据库管理系统分类

数据库关系和非关系数据库是两种不同类型的数据库系统。以下是它们的简要介绍:

1. 关系数据库:关系数据库是指采用关系模型来组织和管理数据的数据库系统。关系模型使用表格(也称为关系)来存储数据,表格由行和列组成,每行代表一个记录,每列代表一个字段。关系数据库使用结构化查询语言(SQL)来进行数据查询和操作,常见的关系数据库系统包括MySQL、Oracle、SQL Server等。

2. 非关系数据库:非关系数据库是指不使用传统关系模型的数据库系统。非关系数据库通常以键值对、文档、图形等形式来组织和存储数据,不要求数据具有固定的结构。非关系数据库系统通常更适合存储大量非结构化或半结构化数据,以及需要高性能和可伸缩性的应用程序。常见的非关系数据库系统包括MongoDB、Redis、Cassandra等。

总的来说,关系数据库适合需要强调数据一致性和事务处理的应用场景,而非关系数据库适合需要高性能、可伸缩性和灵活性的应用场景。在选择数据库系统时,需要根据具体的需求和应用场景来决定使用哪种类型的数据库。
 

非关系型数据库(NoSQL)

      1Redis(最好的缓存数据库)

      2MongoDB(最好的文档型数据库)

      3Elasticsearch(最好的搜索服务)

      4Cassandra(最好的列式数据库)

      5HBase(优秀的分布式、列式数据库)

关系型数据库(RDBMS

     1Oracle数据库 (老大,最挣钱的数据库)

     2MySQL数据库 (最流行中型数据库))

     3SQL server数据库 (Windows上最好的数据库)

     4PostgreSQL(功能最强大的开源数据库)

     5SQLite(最流行的嵌入式数据库)

4.数据库与管理系统的关系

SQL是一种用于操作数据库的语言,SQL适用于所有关系型数据库。

MySQLOracleSQLServer是一个数据库软件,这些数据库软件支持标准SQL,也就是通过SQL可以使用这些软件,不过每一个数据库系统会在标准SQL的基础上扩展自己的SQL语法。

大部分的NoSQL数据库有自己的操作语言,对SQL支持的并不好。

5.关系型数据库管理系统组成

数据库管理系统(DBMS)主要由数据库和表构成,一个系统可以有很多数据库,每个数据库可以有很多张表

04 MYSQL简介

1.MYSQL的介绍

MySQL数据库管理系统由瑞典的DataKonsultAB公司研发,该公司被Sun公司收购,现在Sun公司又被Oracle公司收购,因此MySQL目前属于 Oracle 旗下产品。

MySQL所使用的 SQL 语言是用于访问数据库的最常用标准化语言。MySQL 软件采用了双授权政策,分为社区版和商业版,由于其体积小、速度快、总体拥有成本低,一般中小型网站的开发都选择 MySQL 作为网站数据库。

2.MYSQL的特点

MySQL数据库是用CC++语言编写的,以保证源码的可移植性

支持多个操作系统例如:WindowsLinuxMac OS等等

支持多线程,可以充分的利用CPU资源

为多种编程语言提供API,包括C语言,JavaPHPPython语言等

MySQL优化了SQL算法,有效的提高了查询速度

MySQL开放源代码且无版权制约,自主性强、使用成本低。

MySQL历史悠久、社区及用户非常活跃,遇到问题,可以很快获取到帮助。

API是应用程序编程接口(Application Programming Interface)的缩写。API是一组定义和规范了软件系统之间交互的方法和数据格式的接口。通过API,不同的软件系统可以相互通信、交换数据和共享功能,从而实现系统之间的集成和互操作。

API可以被用来访问特定软件或服务的功能,使得开发人员可以利用这些功能来构建自己的应用程序或扩展现有的应用程序。API可以包括不同的操作、参数、数据格式和协议,开发人员可以按照API的规范来调用特定的功能或服务。

常见的API包括Web API(用于通过网络访问和操作远程服务)、操作系统API(用于访问操作系统功能)、库API(用于访问特定编程语言或框架的功能)等。API的设计和文档通常由软件提供商或开发者社区提供,以便其他开发人员可以轻松地使用和集成这些功能。
 

3MySQL的版本

针对不同的用户,MySQL分为两种不同的版本:

MySQL Community Server

  社区版本,免费,但是Mysql不提供官方技术支持。

MySQL Enterprise Edition

   商业版,该版本是收费版本,可以试用30天,官方提供技术支持

MySQL Cluster

    集群版,开源免费,可将几个MySQL Server封装成一个Server

MySQL Cluster CGE

     高级集群版,需付费。

MySQL WorkbenchGUI TOOL

  一款专为MySQL设计的ER/数据库建模工具。MySQL Workbench又分为两个版本,分别是社区版(MySQL Workbench OSS)、商用版(MySQL Workbench SE)。

集群版通常指的是一种软件或系统的集群部署方式。在计算机领域中,集群是指将多台计算机连接在一起,以共同完成某项任务或提供某种服务。集群版软件通常设计为可以在多台计算机上同时运行,并通过协作和负载均衡来提高系统的性能、可用性和可伸缩性。

集群版软件通常具有以下特点:
1. 高可用性:集群版软件可以在多台计算机上运行,如果一台计算机出现故障,其他计算机可以接管其工作,保证系统的持续运行。
2. 负载均衡:集群版软件可以根据负载情况自动分配任务和请求到不同的计算机节点上,以确保系统资源的合理利用和性能的最大化。
3. 可伸缩性:集群版软件可以根据需求动态扩展或缩减计算机节点,以适应不同规模和负载的应用场景。

常见的集群版软件包括集群数据库、集群存储系统、集群计算平台等。通过使用集群版软件,可以提高系统的稳定性、性能和可扩展性,适用于需要处理大量数据或高并发请求的应用场景。
 

4.MYSQL的版本

MySQL的命名机制使用由3个数字和一个后缀组成的版本号。例如,像mysql-8.0.26的版本号这样解释:

 第1个数字(8)是主版本号,描述了文件格式。所有版本5的发行都有相同的文件格式。

 第2个数字(0)是发行级别。主版本号和发行级别组合到一起便构成了发行序列号。

 第3个数字(26)是在此发行系列的版本号,随每个新分发版递增。

 05 mysql数据库基本操作DDL

1.DDL解释

DDL(Data Definition Language),数据定义语言,该语言部分包括以下内容:

对数据库的常用操作

表结构的常用操作

修改表结构   

2、对数据库的常用操作

功能

SQL

查看所有的数据库

show databases;

创建数据库

create  database [if not exists] mydb1 [charset=utf8]

切换 (选择要操作的) 数据库

use  mydb1

删除数据库

drop database [if exists] mydb1

修改数据库编码

alter database mydb1 character set utf8;

我这里刷新了没有新的数据库

3.对表结构的常用操作-创建表

create table [if not exists]表名(

  字段名1 [(宽度)] [约束条件] [comment '字段说明'],

  字段名2 [(宽度)] [约束条件] [comment '字段说明'],

  字段名3 [(宽度)] [约束条件] [comment '字段说明']

)[表的一些设置];

创建表是构建一张空表,指定这个表的名字,这个表有几列,每一列叫什么名字,以及每一列存储的数据类型。

use mydb1;

create  table if not exists student(

    sid int,

    name varchar(20),

    gender varchar(20),

    age int,

    birth date,

    address varchar(20),

    score double

);、

数据类型是指在创建表的时候为表中字段指定数据类型,只有数据符合类型要求才能存储起来,使用数据类型的原则是:够用就行,尽量使用取值范围小的,而不用大的,这样可以更多的节省存储空间。

数值类型
日期和时间类型
字符串类型

对表结构的常用操作-创建表

Ø数值类型

类型

大小

范围(有符号)

范围(无符号)

用途

TINYINT

1 byte

(-128127)

(0255)

小整数值

SMALLINT

2 bytes

(-32 76832 767)

(065 535)

大整数值

MEDIUMINT

3 bytes

(-8 388 6088 388 607)

(016 777 215)

大整数值

INTINTEGER

4 bytes

(-2 147 483 6482 147 483 647)

(04 294 967 295)

大整数值

BIGINT

8 bytes

(-9,223,372,036,854,775,8089 223 372 036 854 775 807)

(018 446 744 073 709 551 615)

极大整数值

FLOAT

4 bytes

(-3.402 823 466 E+383.402 823 466 351 E+38)

0(1.175 494 351 E-383.402 823 466 E+38)

单精度
浮点数值

DOUBLE

8 bytes

(-1.797 693 134 862 315 7 E+3081.797 693 134 862 315 7 E+308)

0(2.225 073 858 507 201 4 E-3081.797 693 134 862 315 7 E+308)

双精度
浮点数值

DECIMAL

依赖于MD的值

依赖于MD的值

小数值

Ø 字符串类型

类型

大小

用途

CHAR

0-255 bytes

定长字符串

VARCHAR

0-65535 bytes

变长字符串

TINYBLOB

0-255 bytes

不超过 255 个字符的二进制字符串

TINYTEXT

0-255 bytes

短文本字符串

BLOB

0-65 535 bytes

二进制形式的长文本数据

TEXT

0-65 535 bytes

长文本数据

MEDIUMBLOB

0-16 777 215 bytes

二进制形式的中等长度文本数据

MEDIUMTEXT

0-16 777 215 bytes

中等长度文本数据

LONGBLOB

0-4 294 967 295 bytes

二进制形式的极大文本数据

LONGTEXT

0-4 294 967 295 bytes

极大文本数据

Ø 日期 类型

类型

大小
( bytes)

范围

格式

用途

DATE

3

1000-01-01/9999-12-31

YYYY-MM-DD

日期值

TIME

3

'-838:59:59'/'838:59:59'

HH:MM:SS

时间值或持续时间

YEAR

1

1901/2155

YYYY

年份值

DATETIME

8

1000-01-01 00:00:00/9999-12-31 23:59:59

YYYY-MM-DD HH:MM:SS

混合日期和时间值

TIMESTAMP

4

1970-01-01 00:00:00/2038

结束时间是第 2147483647 秒,北京时间 2038-1-19 11:14:07,格林尼治时间 2038119日 凌晨 03:14:07

YYYYMMDD HHMMSS

混合日期和时间值,时间戳

对表结构的常用操作其他操作

功能

SQL

查看当前数据库的所有表名称

show tables;

查看指定某个表的创建语句

show create table 表名;

查看表结构

desc 表名

删除表

drop table

对表结构的常用操作-修改表结构格式

修改表添加列,

alter table 表名 add 列名 类型(长度)[约束];

对表结构的常用操作-修改表结构格式

修改列名和类型

alter table 表名 change 旧列名 新列名 (长度) 约束;

#student表的dept字段更换department varchar(30)

ALTER TABLE student change `dept` department VARCHAR(30);

修改表添加列

#student表添加一新的字段:系 dept varchar(20)

ALTER TABLE student ADD `dept` VARCHAR(20);

修改表删除列

语法格式

alter table 表名drop 列名;

#删除studentdepartment这列

ALTER TABLE student DROP department;

修改表名

rename table 表名 to 新表名;

#student改名成 stu

rename table `student`  to stu;

06 MySQL数据库基本操作-DML

1. 基本介绍

DML是指数据操作语言,英文全称是Data Manipulation Language,用来对数据库中表的数据记录进行更新。

关键字:

插入insert

删除 delete

更新 update

2.数据插入

语法格式:

insert into (列名1,列名2,列名3...) values (1,2,3...) //向表插入某些

insert into values (1,2,3...);     //向表插入所有列

insert into student(sid,name,gender,age,birth,address,score)

                       values(1001,'',18,'1996-12-23','北京',83.5);

insert into student values(1001,'',18,'1996-12-23','北京',83.5);

DML是指数据操作语言,英文全称是Data Manipulation Language,用来对数据库中表的数据记录进行更新。 关键字: 插入insert

删除delete

更新update 2、数据插入 语法格式: insert into 表 (列名1,列名2,列名3...) values (值1,值2,值3...); //向表中插入某些 insert into 表 values (值1,值2,值3...); //向表中插入所有列 insert into student(sid,name,gender,age,birth,address,score) values(1001,'男',18,'1996-12-23','北京',83.5); insert into student values(1001,'男',18,'1996-12-23','北京',83.5); 数据修改 语法格式 update 表名 set 字段名=值,字段名=值...; update 表名 set 字段名=值,字段名=值... where 条件; -- 将所有学生的地址修改为重庆 update student set address = '重庆’;

-- 将id为1004的学生的地址修改为北京 update student set address = '北京' where id = 1004

-- 将id为1005的学生的地址修改为北京,成绩修成绩修改为100 update student set address = '广州',score=100 where id = 1005 数据删除 语法格式: delete from 表名 [where 条件]; truncate table 表名 或者 truncate 表名 -- 1.删除sid为1004的学生数据 delete from student where sid = 1004; -- 2.删除表所有数据 delete from student; -- 3.清空表数据 truncate table student; truncate student; 注意:delete和truncate原理不同,delete只删除内容,而truncate类似于drop table ,可以理解为是将整个表删除,然后再创建该表; 总结: Tableau中,数据源大体可以分为两类,分别是本地数据源(文件)和服务器数据源(服务)。 Tableau中排序分为自动排序和自定义排序,可以按照数据源顺序、字母、字段、手动、嵌套等规则进行排序。

练习:通过练习熟练掌握MYSQL DML操作

 07 MySQL约束 概念

约束英文:constraint

约束实际上就是表中数据的限制条件 作用

表在设计的时候加入约束的目的就是为了保证表中的记录完整性和有效性,比如用户表有些列的值(手机号)不能为空,有些列的值(身份证号)不能重复 分类:

  • 主键约束(primary key) PK

  • 自增长约束(auto_increment)

  • 非空约束(not null)

  • 唯一性约束(unique)

  • 默认约束(default)

  • 零填充约束(zerofill)

  • 外键约束(foreign key) FK

08 MySQL约束主键约束

概念

MySQL主键约束是一个列或者多个列的组合,其值能唯一地标识表中的每一行,方便在RDBMS中尽快的找到某一行。

主键约束相当于 唯一约束 + 非空约束 的组合,主键约束列不允许重复,也不允许出现空值。

每个表最多只允许一个主键

主键约束的关键字是:primary key

当创建主键的约束时,系统默认会在所在的列和列组合上建立对应的唯一索引。

操作

添加单列主键

添加多列联合主键

删除主键

创建单列主键有两种方式,一种是在定义字段的同时指定主键,一种是定义完字段之后指定主键

方式1-语法

-- create table 语句中,通过 PRIMARY KEY 关键字来指定主键。

--在定义字段的同时指定主键,语法格式如下:

create table 表名(

   ...

   <字段名> <数据> primary key

   ...

)

方式1-实现:

create table emp1(

    eid int primay key,

    name VARCHAR(20),

    deptId int,

    salary double

);

方式2-语法:

--在定义字段之后指定主键,语法格式如下:

create table 表名(

   ...

   [constraint <约束名>] primary key [字段名]

);

create table emp2(

    eid INT,

    name VARCHAR(20),

    deptId INT,

    salary double,

    constraint  pk1 primary key(eid)

 );

  constraint  pk1 可以省略

所谓的联合主键,就是这个主键是由一张表中多个字段组成的

注意:

   1. 当主键是由多个字段组成时,不能直接在字段名后面声明主键约束。

   2. 一张表只能有一个主键,联合主键也是一个主键。

语法:

create table 表名(

   ...

   primary key 字段1,字段2…,字段n)

);

create table emp3(

  name varchar(20),

  deptId int,

  salary double,

  primary key(name,deptId)

);

主键约束不仅可以在创建表的同时创建,也可以在修改表时添加。

create table 表名(

   ...

);

alter table <表名> add primary key字段列表);

-- 添加单列主键

create table emp4(

  eid int,

  name varchar(20),

  deptId int,

  salary double,

);

alter table emp4 add primary keyeid);

一个表中不需要主键约束时,就需要从表中将其删除。删除主键约束的方法要比创建主键约束容易的多。

alter table <数据表名> drop primary key;

-- 删除单列主键

alter table emp1 drop primary key;

-- 删除联合主键

alter table emp5 drop primary key;

MySQL约束-自增长约束(auto_increment)

概念

MySQL 中,当主键定义为自增长后,这个主键的值就不再需要用户输入数据了,而由数据库系统根据定义自动赋值。每增加一条记录,主键会自动以相同的步长进行增长。

通过给字段添加 auto_increment 属性来实现主键自增长

语法

字段名 数据型 auto_increment

操作

create table t_user1(

  id int primary key auto_increment,

  name varchar(20)

);

特点

Ø 默认情况下, auto_increment 的初始值是 1 ,每新增一条记录,字段值自动加 1
Ø 一个表中只能有一个字段使用 auto_increment 约束,且该字段必须有唯一索引,以避免序号重复(即为主键或主键的一部分)。
Ø auto_increment 约束的字段必须具备 NOT NULL 属性。
Ø auto_increment 约束的字段只能是整数类型( TINYINT SMALLINT INT BIGINT 等。
Ø auto_increment 约束字段的最大值受该字段的数据类型约束,如果达到上限, auto_increment 就会失效。
u 指定自增字段初始值

如果第一条记录设置了该字段的初始值,那么新增加的记录就从这个初始值开始自增。例如,如果表中插入的第一条记录的 id 值设置为 5,那么再插入记录时,id 值就会从 5 开始往上增加

-- 方式1,创建表时指定

create table t_user2 (

  id int primary key auto_increment,

  name varchar(20)

)auto_increment=100;

-- 方式2,创建表之后指定

create table t_user3 (

  id int primary key auto_increment,

  name varchar(20)

);

alter table t_user2 auto_increment=100;

delete truncate 在删除后自增列的变化
Ø delete 数据之后自动增长从断点开始
Ø t runcate 数据 之后 自动增长 从默认起始值开始

MySQL约束-非空约束(not null)

概念

MySQL 非空约束(not null)指字段的值不能为空。对于使用了非空约束的字段,如果用户在添加数据时没有指定值,数据库系统就会报错。

语法

方式1<字段名><数据> not null;

方式2alter table 表名 modify 字段 not null;

添加非空约束 - 方式 1

-- 方式1,创建表时指定

create table t_user6 (

  id int ,

  name varchar(20) not null,

  address varchar(20) not null

);

添加非空约束 - 方式

create table t_user7 (

  id int ,

  name varchar(20) , -- 指定非空约束

  address varchar(20) -- 指定非空约束

);

alter table t_user7 modify name varchar(20) not null;

alter table t_user7 modify address varchar(20) not null;

删除非空约束

-- alter table 表名 modify 字段 类型

alter table t_user7 modify name varchar(20) ;

alter table t_user7 modify address varchar(20) ;

MySQL约束-唯一约束(unique)

概念

唯一约束(Unique Key)是指所有记录中字段的值不能重复出现。例如,为 id 字段加上唯一性约束后,每条记录的 id 值都是唯一的,不能出现重复的情况。

语法

方式1<字段名> <数据> unique

方式2 alter table 表名 add constraint 约束名 unique();

添加唯一约束 - 方式 1

-- 创建表时指定

create table t_user8 (

 id int ,

 name varchar(20) ,

 phone_number varchar(20) unique -- 指定唯一约束

);

加唯一约束 - 方式 2

create table t_user9 (

  id int ,

  name varchar(20) ,

  phone_number varchar(20) -- 指定唯一约束

);

alter table t_user9 add constraint unique_ph unique(phone_number);

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

炽烈顽心的唐吉诃德

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

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

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

打赏作者

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

抵扣说明:

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

余额充值