菜鸟的Linux历程-MySQL知识摘要

mysql知识摘要:


基本认识:

  • 数据库(database)仅仅是存放用户数据的地方。当用户访问、操作数据库中的数据时,就需要数据库管理系统。数据库管理系统的全称是database management system,简称DBMS,习惯上常常把数据库管理系统笼统称为数据库。DBMS中存在一个数据字典,用于存储数据的信息,这种关于数据的数据称为元数据。

  • 数据表:对于数据库而言,最基本的数据存储单元是数据表。数据表是存储数据的逻辑单元,可以把表想象成由行和列组成的表格。每一行称为一条记录,每一列称为一个字段。为数据库创建表时,需要指定该表包含多少列,每列的数据类型。其中能用来唯一标识每一条记录的一列或者多列,则称为主键。

MySQL基本命令:

    show databases;     //查看数据库
    create database [IF NO EXISTS] 数据库名;    //创建新的数据库
    drop database 数据库名;     //删除指定的数据库
    use 数据库名;       //进入指定的数据库
    show tables;        //进入数据库后可以查看数据库中存在的数据表
    describ 表名;     //查看指定数据表的表结构

SQL语句基础:

SQL的全程:Structured Query Language(结果化查询语言),通常可以分为以下几种类型:

  • 查询语句:主要有select关键字完成,查询语句是SQL中最复杂、功能最全的语句。
  • DML(data manipulation language,数据操作语言)语句:主要由insert、update和delete三个关键字完成。
  • DDL(data definition language,数据定义语言)语句:主要由create、 - - alter、drop和truncate四个关键字完成。
  • DCL(data control language,数据控制语言)语句:主要由grant和revoke两个关键字完成。

数据库的命名规则:

  • 标识符通常以字母开头。
  • 标识符包括字母、数字和三个特殊字符(# _ $)。
  • 不允许使用当前数据库系统的关键字、保留字,通常建议使用多个单词连缀,单词之间以_分割。

DDL语句:
数据表是存储数据的逻辑单元,但数据库中还包含几种常见的数据库对象:

对象名称对应关键字描述
table存储数据的逻辑单元,以行和列的形式存在,列就是字段,行就是记录。
数据字典系统表,存放数据库的相关信息的表。
约束constraint执行数据校验的规则,用于保证数据库完整性的规则。
视图view一个或多个数据表里的数据的逻辑显示,视图并不存在数据。
索引index用于提高查询性能,相当于书的目录
函数function用于完成一次特定的计算,具有返回值。
存储过程procedure用于完成一次完整的业务处理,没有返回值。
触发器trigger相当于一个事件监听器。

创建表的语法:

    //创建一张新的空表
    create table [模式名.]表名
    (
        mysql_test_id int,
        mysql_test_name varchar(30),
        mysql_test_img blob
    );

    //根据已经存在的表创建一张表
    create table [模式名.]表名 [colum[,colum...]]
    as
    subquery;

修改表结构的语法:

        alter table tablename
        add
        (
            colum_name datatype [default expt],
            ...
        );

        //为test表增加一个字段para
        alter table test
        add para int;

        //为test表增加多个字段,并指定字段类型
        alter table test
        add
        (
            para1 varchar(255) default 'para1',
            para2 varchar(255)
        );

        //为test表的字段para1修改类型,mofify后每次只允许修改一个字段
        alter table test
        modify para1 int;

        //删除表中的字段
        alter table table_name
        drop column_name;

        //重命名表
        alter table table_name
        rename to new_table_name;

        //修改字段名
        alter table table_name
        change old_colum_name new_colum_name type [default expr];

删除表的语法:

        //删除表和表结构
        drop table table_name;
        //删除表数据,但是保留表结构
        truncate table_name;

数据库的约束:

大部分数据库支持一下5种完整性约束。

  • NOT NULL:非空约束,指定某列不能为空。
        //创建一张新的空表,并指定mysql_test_id字段不能为空
        //该约束同时还可以用于修改表结构的时候
        create table [模式名.]表名
        (
            mysql_test_id int not null,
            mysql_test_name varchar(30),
            mysql_test_img blob
        );
  • UNIQUE:唯一约束,指定某列或者几列组合不能重复值。注意:虽然唯一约束的列不可以出现重复的值,但是可以出现多个null值。
        //创建一张新的空表,并指定mysql_test_id字段为唯一约束
        //该约束同时还可以用于修改表结构的时候
        create table [模式名.]表名
        (
            mysql_test_id int unique,
            mysql_test_name varchar(30),
            mysql_test_img blob
        );

        //如果需要为多列组合建立唯一约束,则需要使用表级约束语法。
        //通用格式
        [constraint 约束名] 约束定义;

        //为table1指定两列唯一约束
        create table table1
        (
            mysql_test_id int,
            mysql_test_name varchar(30),
            mysql_test_img blob,
            //使用表级约束语法建立唯一约束
            unique(mysql_test_name),
            //使用表级约束语法建立唯一约束并指定约束名
            constraint table1_uk unique(mysql_test_id)
        );

        //为table2指定两列的组合为唯一约束
        create table table2
        (
            mysql_test_id int,
            mysql_test_name varchar(30),
            mysql_test_img blob,
            constraint table2_uk unique(mysql_test_id,mysql_test_name)
        );
  • PRIMARY KEY:主键,指定该列的值可以唯一标识该记录。相当于非空约束和唯一约束做”&&”运算,即主键列既不能存在非空值也不可以出现重复值。
        //使用行级约束语法创建主键约束
        create table table_name
        (
            mysql_test_id int primary key,
            mysql_test_name varchar(30),
            mysql_test_img blob
        );

        //使用表级约束语法创建单列主键约束
        create table table_name
        (
            mysql_test_id int,
            mysql_test_name varchar(30),
            mysql_test_img blob,
            constraint table_pk primary key(mysql_test_id)
        );

        //使用表级约束创建多列组合的主键约束
        create table table_name
        (
            mysql_test_id int primary key,
            mysql_test_name varchar(30),
            mysql_test_img blob,
            primary key(mysql_test_id,mysql_test_name)
        );

        //删除主键约束语法
        alter table table_name
        drop primary key;

        //使用表级约束语法增加主键约束
        alter table table_name
        add primary key(mysql_test_img);

        //修改主键约束语法
        alter table table_name
        modify mysql_test_id varchar(255) primary key;
  • FOREIGN KEY:外键,该表中的某列或几列的组合可以唯一标识另一个表中的每一条记录。
    注:由于外键在理解上存在一定难度,笔者将抽出外键这部分,做深入讨论。

  • CHECK:检查,指定一个布尔表达式,检查是否满足表达式。
    语法格式:

    create table table_name
        (
            mysql_test_id int,
            mysql_test_name varchar(30),
            mysql_test_img blob,
            primary key(mysql_test_id,mysql_test_name),
            check(mysql_test_id>0)
        );

索引:

索引作为数据库对象,在数据字典中独立存放,但是不能独立存在,必须属于某个表。

  • 索引的创建有两种方式:
    自动:当在表上指定主键约束,唯一约束和外键约束时,系统将会为该数据列自动创建对应的索引。
    手动:通过create index…语句手动创建索引。
        create index mysql_test_id_and_name_idx
        on table_name(mysql_test_id,mysql_test_name);
  • 索引的删除有两种方式:
    自动:数据表被删除,对应的索引也将删除。
    手动:通过drop index…语句手动删除索引。
        drop index mysql_test_id_and_name_idx
        on table_name;

视图:

视图的本质就是一条被命名的SQL查询语句。注意:由于视图并不是真正存在的数据,因而在视图中对数据的修改并不会保存到数据库中。

    //创建一个简单的视图
    create or replace view table_name_viw
    as
    select mysql_test_img blob from table_name

    //指定不允许修改视图的数据
    with check option;

    //删除视图则用drop
    drop view 视图名

DML语句(操作的对象主要为数据表中的数据):

    //插入新数据,语法格式为:
    insert into table_name [(column [,(column...)])]
    values(value [,value...]);

    //修改已有数据,语法格式为:
    update table_name
    set column1=value1 [,column2=value2] ...
    //添加修改范围限制
    [where condition];

    //删除不用数据,语法格式为:
    delete from table_name
    [where condition];

到此为止,数据库常用的知识已经总结了大部分,关于外键约束,单表查询,数据库函数的内容将在”菜鸟的Linux历程-mysql知识摘要(中)”和大家进行深入探讨。关于分组和分组函数,多表连接查询,子查询,集合运算的内容将在”菜鸟的Linux历程-mysql知识摘要(下)”和大家进行深入探讨。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值