MYSQL

发布时间 2024-01-05 16:58:33作者: とんぽ
  • DB :“数据库”是以一定方式储存在一起、能与多个用户共享、具有尽可能小的冗余度、与应用程序彼此 独立的数据集合。

  • DB类型

    • 关系数据库 :MySQL,Oracle数据库

    • 非关系型数据库:BigTable(Google)

  • DBA : 数据库管理员

  • DBMS : 数据库管理系统:数据库管理系统(Database Management System)是一种操纵和管理数据库的大型软件,用于建立、使 用和维护数据库,简称DBMS。

  • DBAS : 数据库应用系统:数据库应用系统(DBAS)是在数据库管理系统(DBMS)支持下建立的计算机应用系统,简写为

    DBAS。

  • SQL : 结构化查询语言:

  • 数据库中以表为组织单位存储数据。表中有,我们叫做记录字段

SQL语句

  • SQL分类:

    • 数据定义语言:简称DDL(Data Definition Language),用来定义数据库中的对象:数据库,表,列等。关键字:create,alter,drop, show等

    • n 数据操作语言:简称DML(Data Manipulation Language),用来对数据库中表的记录进行更新。关键字:insert,delete,update等

    • 数据控制语言:简称DCL(Data Control Language),用来定义数据库的访问权限和安全级别,及创建用户。

    • n 数据查询语言:简称DQL(Data Query Language),用来查询数据库中表的记录。关键字:select,from,where等

  • 1.1.1 SQL通用语法

    • SQL语句可以单行或多行书写,以分号结尾

    • 可使用空格和缩进来增强语句的可读性

    • l MySQL数据库的SQL语句不区分大小写,关键字建议使用大写。例如:SELECT * FROM user。

    • 同样可以使用/**/的方式完成注释 在Sqlyog中也可以是 #或者- -注释一行

    • l MySQL中的我们常使用的数据类型如下

DDL之数据库操作

  • 创建数据库(增):

    • create database 数据库名 character set 字符集;

  • 查看数据库(查)

    • show databases;

    • show create database 数据库名;

  • 删除数据库(删)

    • select database();

1.1 DDL之表操作:table

  • 创建表

    • create table 表名(

      字段名 类型(长度) [约束],

      字段名 类型(长度) [约束],

      ...

      );

      类型:

      varchar(n) 字符串

      int 整形

      double 浮点

      date 时间

      timestamp 时间戳

      约束(后期讲解,现在先知道):

      primary key 主键,被主键修饰字段中的数据,不能重复、不能为null。

    • 例如:

      # 创建分类表

      CREATE TABLE category (

      cid VARCHAR(100) primary key, # 分类ID

      cname VARCHAR(100) # 分类名称

      );

  • 查看表

    • show tables;

    • desc 表名;

  • 删除表

    • drop table category;

  • 修改表(只改名字)

    • rename table 表名 to 新表名;

    • RENAME TABLE category TO category2;

DDL之表结构操作:列

  • 对表的结构进行操作(主要是操作表中的列)

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

    • ALTER TABLE category ADD description VARCHAR(20);

    • alter table 表名 drop 列名

    • ALTER TABLE category DROP description;

    • alter table 表名 change 旧列名 新列名 类型(长度) 约束

    • ALTER TABLE category CHANGE description description2 VARCHAR(30);

    • alter table 表名 modify 列名 类型(长度) 约束;

    • ALTER TABLE category MODIFY description2 VARCHAR(50) NOT NULL;

  • 约束

    • primary key 主键,值唯一,并且不能为空

    • auto_increment 自动增长,数据可以由MySQL系统自己维护

DML数据操作语言

  • 插入表记录:insert(增)

    • insert into 表 (字段1,字段2,字段3..) values (值1,值2,值3..);

    • 值与字段的数据类型必须对应,个数相同,类型相同

    • 值的数据大小必须在字段的长度范围内

    • 除了数值类型外,其它的字段类型的值必须使用引号引起。(建议单引号)

    • 如果要插入空值,可以不写字段,或者插入null

    • Into 不是必须的,可以省略不写

  • 更新表记录:update(改)

    • update 表名 set 字段名=值,字段名=值,...;

    • 列名的类型与修改的值要一致.

    • 修改值得时候不能超过最大长度.

    • 除了数值类型外,其它的字段类型的值必须使用引号引起

  • 删除记录:delete(删)

    • delete from 表名 [where 条件];

DQL数据查询语言

  • 语法:select [distinct] * | 列名1,列名2 from 表 [where 条件]

    注 :

    [] 可有可无

    | 或者

    • select * from product;

    • SELECT * FROM product WHERE price != 800

  • 排序

    • SELECT * FROM 表名 ORDER BY 排序字段ASC|DESC;

      ASC 升序 (默认)

      DESC 降序

    • SELECT DISTINCT price FROM product ORDER BY price DESC

  • 聚合

    • count:统计指定列不为NULL的记录行数;

    • sum,max,min,avg

    • SELECT COUNT(*) FROM product;

  • 分组

    • SELECT 字段1,字段2… FROM 表名GROUP BY分组字段 HAVING 分组条件;

    • having与where的区别:

      • having是在分组后对数据进行过滤.where是在分组前对数据进行过滤

      • having后面可以使用统计函数过滤数据where后面不可以使用统计函数。

  • 分页查询

    • SELECT 字段1,字段2... FROM 表明 LIMIT M, N ;

      M: 整数,表示从第几条索引开始,计算方式 (当前页-1)*每页显示条数

      N: 整数,表示查询多少条数据

    • SELECT 字段1,字段2... FROM 表明 LIMIT 0,5 ;

SQL约束

  • 数据完整性

    • 实体完整性: 对数据行的约束,比如:主键约束,唯一约束

    • 域完整性: 对数据列的约束,比如:该列的数据类型, 默认约束,非空约束

    • 引用完整性: 外键约束(多表的关系)

  • 主键约束

    • 主键必须是唯一的值。

      主键列不能是 NULL 值。

      每个表都应该有且只能有一个主键。

    • 添加主键约束

    • 方式一:创建表时,在字段描述处,声明指定字段为主键:Id_P int PRIMARY KEY,

    • 方式二:创建表时,在constraint约束区域,声明指定字段为主键:

    • CREATE TABLE Person100(

      FirstName varchar(255),

      LastName varchar(255),

      Address varchar(255),

      City varchar(255),

      CONSTRAINT pk_PersonID PRIMARY KEY (FirstName,LastName)

      );

    • 方式三:创建表之后,通过修改表结构,声明指定字段为主键:

  • 删除主键约束

    • ALTER TABLE Person102 DROP PRIMARY KEY ;

  • 自动增长列

    • P_Id int PRIMARY KEY AUTO_INCREMENT,

  • 非空约束NOT NULL

    • LastName varchar(255) NOT NULL,

    • 添加非空约束 ALTER TABLE student MODIFY LastName varchar(255) NOT NULL

  • 唯一约束

    • UNIQUE 约束唯一标识数据库表中的每条记录。

      UNIQUE 和 PRIMARY KEY 约束均为列或列集合提供了唯一性的保证。

      PRIMARY KEY 拥有自动定义的 UNIQUE 约束。

      请注意,每个表可以有多个 UNIQUE 约束,但是每个表只能有一个 PRIMARY KEY 约束。

    • Id_P int UNIQUE

    • CREATE TABLE Person13(

      Id_P int,

      LastName varchar(255) NOT NULL,

      FirstName varchar(255),

      Address varchar(255),

      City varchar(255),

      CONSTRAINT UNIQUE (Id_P)

      ) ;

    • ALTER TABLE Persons4 ADD [CONSTRAINT 名称] UNIQUE (Id_P)

  • 删除唯一约束

    • ALTER TABLE Person DROP INDEX 约束名称

  • 默认约束

    • address varchar(255) DEFAULT '北京',

    • ALTER TABLE Person MODIFY Address VARCHAR(255) DEFAULT '北京'