MySQL学习(一、概述和表的基本操作)

一、数据库概念

    数据库(Database:DB):数据库是按照数据结构啦组织、存储和管理数据的仓库--->数据库其实就是磁盘中的文件+管理系统
    数据库管理系统(Database Management System:DBMS)是专门用于管理数据库的计算机系统
软件。数据库管理系统能够为数据库提供数据的定义、建立、维护、查询和统计等操作功能。并完成

对数据完整性、安全性进行控制的功能

=======================================================

二、SQL:结构化查询语言(Structured Query Language)

    关系型数据库标准语言,特点:简单,灵活,功能强大
SQL包含6个部分(*号表示常用):
     1.数据查询语言(DQL query)*
    其语句也称为“数据检索语言”,用以从表中获取数据,确定数据怎样在应用程序中输出,关键字       SELECT(查询)是DQL(也是所有SQL)用的最多的动词,其他DQL常用的关键字有WHERE(用来限制字   段),ORDER BY(排序),
    GROUP BY(分组)和HAVING(分组后排序)。这些DQL关键字常与其他类型的SQL语句一起使用。

     2.数据操作语言(DML manipulation)*
    其语句包括动词INSERT,UPDATE和DELETE,它们分别用于添加,修改和删除表中的行,
    也称为动作查询语言(SELECT查询和INSERT查询有什么区别?)

    3.事务处理语言(TCL)
    它的语句能够确保被DML语句影响的表所有行及时得到更新,TPL语句包括BEGIN TRANSACTION,
    COMMIT(事务提交)和ROLLBACK(事务回滚)
    
    4.数据控制语言(DCL)
    它的语句通过GRANT和REVOKE获得许可,确定单个用户和用户组对数据库对象的访问,某些RDBMS
    可用GRANT和REVOKE控制对表单个列的访问

     5.数据定义语言(DDL definition)*
    其语句包括动词CREATE(创建)和DROP(删除),在数据库中创建新表和删除表,为表加入索引等。
    DDL包括许多与人数据库目录中获得数据有关的关键字,它也是动作查询的一部分

    6.指针控制语言(CCL)
    它的语句,像DECLARE CURSOR,FETCH INTO 和UPDATE WHERE CURRENT用于对一个
    或多个表单独进行的操作

======================================================

三、SQL编写规则:

    1.在数据库中,SQL语句不区分大小写
    2.SQL语句可以单行也可以多行写
    3.在SQL语句中,关键字不能多行或缩写
    4.为了提高可读性,关键字一般大写,其他小写
    5.空格和缩进使程序易读

    6.SQL不需要加分号,但是程序员在语句后加分号是一个好习惯


四、什么是表?

    我们说MySQL是一种关系型数据库,关系型数据库最重要的概念就是表,表具有固定的列数和任意的行数,在数学上称为“关系”二维表是同类实体的各种属性的集合,每个实体对应于表中的一行,在关系中称为元组,相当于通常的一条记录,表中的列属性,称为Field,相当于通常记录中的一个数据项,也叫做列、字段。
    面向对象的类,类似于关系型数据库中表的概念
ORM思想:对象-关系映射

属性
对象        一行数据


五、数据库操作和存储引擎

    数据库对象:存储、管理和使用数据的不同结构形式,如:表、视图、存储过程、函数、
触发器、事件等。数据库:存储数据库对象的容器

数据库分为两种:系统自带的,和用户自定义数据库
常用数据库命令:
show databases;                           查看数据库
use dName;                                  使用数据库
show tables;                                  查看表
create database dName               创建数据库
drop     database    dName          删除数据库


六、Mysql数据常用类型

    MySQL以一个可选的显示宽度指示器的形式对SQL标准进行扩展,这样当数据库检索一个值时,可以把这个值加长到指定长度需要注意,使用一个宽度指示器不会影响字段的大小和它可以存储的值的范围,一般不用指定位宽

整数类型

INT     int/Integer
BIGINT long/Long
int(2),在检索时,长度会加长到2,不代表最大存储99,仅仅是查询时,使用两个0占位

小数类型       
FLOAT float/Float
DOUBLE double/Double

money(5,2):整数和小数一共5位,其中小数占两位,最大999.99最小-999.99


字符类型   

CHAR 定长字符型,0-255字节 String/StringBuid
VARCHAR 变长字符型 StringBuffer
TEXT 纯文本  
定长和变长:字节数的占用问题CHAR(5),VARCHAR(5),存‘1’,CHAR五个字节,VARCHAR1个字节


日期类型       
DATE 0000:00:00 Date/Calender
TIME 00:00:00  
DATETIME 0000:00:00 00:00:00  
TIMESTAMP 时间戳(1970-01-01 00:00:00差)  

二进制类型   (用的很少)    

BINARY\VARBINARY\TINYBLOB\BLOB\MEDIUMBLOB\LONGBLOB 存放图形、声音、影响、二进制对象 *:一般将二进制的文件保存路径存储在数据中

BIT        boolean


七、表的操作

创建表
    CREATE TABLE 表名(
        colName1 type1 [约束]
        colName2 type2,
        colName3 type3
    );

ex:创建一张学生信息表
    create table t_student(
        id int;
        name varchar(20);
        age int;
    );
    为了避免使用到关键字,我们还可以将名字用` `圈起来
    create table `t_student`(
        `id` int;
        `name` varchar(20);
        `age` int;
    );


查看表的结构
    desc tName;
查看表的详细定义(查看表的定义SQL语句)
    show create table tName;
删除表
    drop table tName;

表的约束(针对某列而言)
    1.非空约束:NOT NULL,不允许字段的内容为空
    2.设置列的默认值:DEFAULT
    3.唯一约束:UNIQUE,在该表中,该列的内容必须唯一
    4.主键约束:PRIMARY KEY,非空且唯一
        主键设计,唯一标识某一行数据
    5.主键自增长:AUTO_INCREMENT,从1开始,步长为1
    6.外键约束:FOREIGNKEY,A表中的外键列,A表中的外键列的值必须参照于B表中的某一列(B表的主键)

    *注意:主键的设计
        1.单字段主键:单列作为主键,建议使用
           复合主键:使用多列字段当主键,不建议
        2.主键的种类:
            1).自然主键:使用有业务含义的列作为主键(不建议使用),例如身份证号码
            2).代理主键:使用没有业务含义的列作为主键

    CREATE TABLE `t_student`(
        `id` INT PRIMARY KEY;                                      //主键,非空且唯一    
        ` name` VARCHAR(20) UNIQUE NOT NULL;    //非空且值唯一
        `age` INT DEFAULT 100;                                   //默认值100
    );


八、MYSQL小结

1.MySQL安装和配置(存储引擎,字符编码,密码)
    2.常用命令

1)查看有哪些数据库

show databases;

2)使用某一个数据库

use dName;

3)查看某个数据库中有什么表

show tables;

4)创建和删除一个数据库

create database dName;
drop database dName;

5)创建和删除表

    create table tName(
        colName1 type1 [约束],
        colName2 type2 [约束],
     colName3 type3
 );
drop table tName;



猜你喜欢

转载自blog.csdn.net/qq_38741971/article/details/80575835