zoukankan      html  css  js  c++  java
  • mysql 基本使用方法

    描述:mysql 是开源的关系型数据库,学习它之前可以先在本地安装一个典型的mysql 数据库,并将mysql 安装目录下的bin 目录配置到系统环境变量的PATH中,这样就可以在任意路径下登录mysql客户端,可以百度获取配置方式。

    mysql的默认端口是3306,mysql的超级用户是root, mysql创建输入库是CREATE DATABASE, 修改数据库是ALTER DATABASE,删除数据库 DROP DATABASE。

    从mysql 的bin 目录下进入mysql的客户端,输入:mysql -hlocalhost -uroot -p 回车,再输入密码 回车,就可以登录mysql 客户端,可以对mysql 数据库实行命令操作,输入exit, quit, q 三个中的任意一个命令,对mysql 客户端退出操作。

    mysql 语句规范:

    1:关键字和函数名都要大写;

    2:数据库名,表名,字段名要小写;

    3:每条sql语句都要以分号结尾;

    注意: 及时关键字和函数名写成小写,系统也是确认的,一般用来区别关键字,函数,数据库名,表名,字段名,书写的时候要严格遵守。

    一些常用的命令:

    SHOW DATABASES;     //查看数据库列表

    USE databaseName ;    //使用databaseName 数据库

    SHOW TABLES;   // 查看databaseName 数据库中的表

    CREATE DATABASE IF NOT EXISTS  databaseName;  //创建databaseName数据库

    ALTER DATABASE databaseName CHARACTER SET utf8;  //修改数据库databaseName的字符编码格式为utf8

    DROP DATABASE IF EXISTS databaseName;   //删除数据库databaseName

    注意:数据库的创建做if not exists, 删除做if exists, 修改则没有这个判断存在的关键字。

    数据类型

    存储数字:

        存放整数的类型有整型:TINYINT, SMALLINT, MEDIUMINT,  INT, BIGINT。

        存放小数的类型有浮点型:FLOAT, DOUBLE。

    存储日期时间:YEAR, TIME, DATE,  DATETIME, TIMESTAMP。

    存储字符型:CHAR, VARCHAR, TINYTEXT, TEXT, MEDIUMTEXT, LONGTEXT, ENUM, SET。

    注意:存储范围越大,占用的空间就越大,使用过程中,根据使用场景,选择最合理最合适的数据类型,而不是存储范围最大的数据类型。

    数据表的操作

    USE DATABASEName; //使用DATABASEName 数据库

    SELECT DATABASE(); //查看当前使用的数据库名称

    创建数据库语法:

    CREATE TABLE [IF NOT EXISTS] TABLENAME (

      column_name data_type,

      ……

    );

    SHOW TABLES;  // 查看当前数据库中是否有刚刚新建的表

    SHOW TABLES FROM  otherDatabaseName;  // 查看其他数据库中的表 后面还可以带 LIKE, WHERE 模糊查询或查询条件 的通配符。

    SHOW COLUMNS FROM tableName; // 查看表中的列

    记录操作

      INSERT

        INSERT INTO tb1 [column_name, ……] VALUES(val, ……);  // 如何前面的列名省略,则所有字段全部赋值,如果只给部分字段赋值,则必须制定列名

      SELECT

        SELECT expr, … FROM tableName;  //查询表中的记录,证明记录是否存在

      NULL, NOT NULL 

        允许为空或非空约束指定字段在数据录入的时候是否为空,二者只能选其一作用一个字段。不为空的字段在录入数据的时候必须为其赋值。

      AUTO_INCREMENT

        保证记录的唯一性,字段值不会重复,自动编号,且必须与主键组合使用,默认情况下起始值为1, 每次的增量为1。可以是整数,或者浮点数,浮点数的小数位数必须是0,比如float(7, 0), double(7, 0)。

      PRIMARY_KEY

        主键约束,每张表只能存在一个主键,主键保证记录的唯一性,主键自动为NOT NULL 。

      注意:auto_increment 必须与主键 primary_key 一起使用,但主键 primary_key 不一定要与iauto_increment 一起使用。

      UNIQUE_KEY

        唯一约束,可以保证记录的唯一性,唯一约束的字段可以为空值(NULL),每一张数据表可以存放多个唯一约束。

      DEFAULT

        默认约束,当插入记录时,如果没有明确为字段赋值,则自动赋予默认值。

      FOREIGN_KEY

        外键约束保持数据的一致性与完整性,实现一对一或一对多的关系。

        要求: 1,父表和子表必须使用相同的存储引擎,而且禁止使用临时表。

            2, 数据表的存储引擎只能是InnoDB。

            3,外键列和参照列必须具有相似的数据类型。其中数字的长度或是否有符号位必须相同,而字符的长度则可以不同。

            4,外键列和参照列必须创建索引,如果参照列不存在索引的话,Mysql 将自动创建索引。

      约束: 1,约束保证数据的完整性和一致性。

          2,约束分为表级约束和列级约束(约束如何是针对一个字段就是列级,如果是针对两个及以上的则为表级约束)。

          3,约束类型包括: NOT NULL(非空约束), PRIMARY KEY(主键约束), UNIQUE KEY(唯一约束), DEFAULT(默认约束), FOREIGN KEY(外键约束)

      外键约束的参照操作:

        1,CASSADE:从父表删除或更新且自动删除或更新子表中匹配的行。

        2,SET NULL:从父表删除或更新行,并设置子表中的外键列为NULL.如果使用该选项,必须保证子表列没有指定NOT NULL。

        3,RESTRICT:拒绝对父表的删除或更新操作。

        4,NO ACTION:标准SQL的关键字,在mysql中与RESTRICT相同。

    修改数据表

      ALTER TABLE tableName ADD [COLUMN] column_name column_definition [FIRST|AFTER col_name];  // 修改数据表,新增字段,可以一次加一列,也可以加多列,加多列不可以指定位置关系,只能在原来数据表的下方。

      ALTER TABLE tableName DROP column_name;// 删除数据表中的字段

    修改列定义

      ALTER TABLE tableName MODIFY  [COLUMN] column_name column_definition [FIRST|AFTER col_name];

    修改列名称

      ALTER TABLE tableName CHANGE  [COLUMN] column_name column_definition [FIRST|AFTER col_name];

    修改数据表名

      ALTER TABLE tbl_name TO new_tb1_name; // 会对表的视图或存储过程有影响。

      UPDATE

        UPDATE tableName set col_name = value, … WHERE expr…;

        UPDATE table_references SET col_names = {expre1|DEFAULT} ... [WHERE(where_condition)];   //多表更新

      DELETE

        DELETE FROM tableName WHERE expr...;

      SELECT

        select 子查询,是指出现在其他sql 语句内的select子句;使用比较运算符的子查询,=, >, <, >=, <=, <>, !=, <=>, 另外使用ANY, SOME, ALL 关键字修饰的比较运算符,使用 [NOT] IN 的子查询,使用 [NOT] EXISTS 的子查询;

        INSERT [INTO] tableName [(col_name, ...)] SELECT  ...   将查询结果写入到数据表

        CREATE ... SELECT...;   //创建数据表的同事将查询结果写入到数据表      CREATE TABLE [IF NOT EXISTS] tbl_name [(create_definition, ...)] select_statement

      WHERE,  LIKE, GROUP BY, HAVING, ORDER BY[]

     

    表的连接诶类型

      INNER JOIN, LEFT JOIN, RIGHT JOIN, 使用ON关键字来设定连接条件,也可以使用WHERE 来代替,通常使用ON关键字来设定连接条件,使用WHERE关键字进行结果集记录的过滤。

      内连接,显示左表及右表符合链接条件的记录,取交集。

      左连接,显示左表的全部记录及右表符合连接条件的记录。

      右连接,显示右表中的全部记录及左表符合连接条件的记录。

    mysql数据库函数分类

      1,字符函数

        CONCAT()   //字符连接

        CONCAT_WS()   //使用指定的分隔符进行字符连接

        FORMAT()  //数字格式化

        LOWER()  //转换成小写字母

        UPPER()  //转换成大写字母

        LEFT()  //获取左侧字符

        RIGHT()  //获取右侧字符

        LENGTH()  //获取字符串长度

        LTRIM()  //删除前导空格

        RTRIM() //删除后续空格

        TRIM()  //删除前导和后续空格

        SUBSTRING()  //字符串截取

        [NOT] LIKE  //模式匹配

        REPLACE()  //字符串替换    

      2,数值运算符与函数

        CEIL()  //进一取整

        DIV()  //整数除法

        FLOOR()  //舍一取整

        MOD()  //取余数(取模)

        POWER()  //幂运算

        ROUND()  //四舍五入

        TRUNCATE()  //数字截取

      3,比较运算符与函数

        [NOT] BETWEN ... AND ...  //[不]在范围之内

        [NOT] IN()   //[不]在列出值范围内

        IS [NOT] NULL  //[不]为空

      4,日期时间函数

        NOW()  //当前日期和时间

        CURDATE()  //当前日期

        CURTIME()  //当前时间

        DATE_ADD()  //日期变化

        DATEDIFF()  //日期差值

        DATE_FORMAT()  //日期格式化

      5,信息函数

        CONNECTION_ID()  //连接ID

        DATABASE()  //当前数据库

        LAST_INSERT_ID()  //最后插入记录的ID号

        USER()  //当前用户

        VERSION()  //版本信息

      6,聚合函数

        AVG()  //平均值

        COUNT()  //计数

        MAX()  //最大值

        MIN()  //最小值

        SUM()  //求和

      7,加密函数

        MD5()  //信息摘要算法  web页面应用

        PASSWORD() //密码算法  mysql 用户密码修改

    自定义函数

        CREATE FUNCTION function_name([params  params_type, ...]) RETURNS {STRING|INTEGER|REAL|DECIMAL} RETURN routine_body

        如:创建一个日期格式化的函数

          create function f1() returns varchar(30)

          return date_format(now(), '%Y年%m月%d日 %H点:%i分:%s秒');

        调用函数:select f1();

        如:创建一个求两个参数平均值的函数

          create function f2(num1 smallint unsigned, num2 smallint unsigned)

          returns float(10, 2)

          return (num1+num2)/2;

        调用函数:select f2(7, 8);

        注意:参数和返回值。

         关于函数体:

          1,函数体由合法的SQL语句构成

          2,函数体可以是简单的SELECT或INSERT语句

          3,函数体如果为复合结构则使用BEGIN...END语句

          4,复合机构可以包含声明,循环,控制结构;

    存储过程

      存储过程是SQL语句和控制语句的预编译集合,以一个名词存储并作为一个单元处理。

       优点:1,增强SQL语句的功能和灵活性;2,实现较快的执行速度;3,减少了网络流量;

       CREATE  [definer = {user|CURRENT_USER}] 

       PROCEDURE proc_name ([proc_parameter [, ...]])

       [characteristic ...] routine_body

       proc_parameter: [ IN | OUT | INOUT ]  param_name type   注意:IN ,表示该参数的值必须在调用存储过程时指定; OUT,表示该参数的值可以被存储过程改变,并且可以返回;INOUT,表示该参数的调用时指定,并且可以被改变和返回.

    MySQL存储引擎

      MySQL可以将。数据以不同的技术存储在文件(内存)中,这种技术就称为存储引擎。每一种存储引擎使用不同的存储机制、索引技巧、锁定水平,最终提供广泛且不同的功能。

       并发控制:

        - 当多个连接对记录进行修改时保证数据的一致性和完整性。

       锁:

        -共享锁(读锁):在同一时间段内,多个用户可以读取同一个资源,读取过程中数据不会发生任何变化。

        -排他锁(写锁):在任何时候只能有一个用户写入资源,当进行写锁时会阻塞其他的读锁或者写锁操作。

       锁颗粒:

        -表锁:是一种开销最小的锁策略。对一张表进行加锁处理。

        -行锁:是一种开销最大的锁策略。可能对表中的每一行记录进行加锁处理。

       事务处理:

        -事务用语保证数据库的完整性;

        特性:原子性,一致性,隔离性,持久性。

       外键:

        -是保证数据一致性的策略。

       索引:

        -是对数据表中的一列或多谢的值进行排序的一种结构。

    kMySQL的存储引擎种类:

         -MyISAM:

         -InnoDB

         -Memory

         -CSV

         -Archive

        注意:不同的存储引擎,对事务的支持,锁的策略,外键,数据压缩,存储内存是不一样的。

    注意:mysql的使用过程中,需要多实践,针对不同的聚合函数,数据函数,关键字等的组合使用,非常有意思,需要深入学习。

  • 相关阅读:
    006 date find
    005 输出重定向 > >>命令 echo命令 tail命令
    总结,一周,
    mokey 学习
    树状,
    定制,
    萌芽,
    到底为什么,
    会,
    “恋爱”,一路走来,
  • 原文地址:https://www.cnblogs.com/wonderful-day/p/11913471.html
Copyright © 2011-2022 走看看