zoukankan      html  css  js  c++  java
  • 了解MySQL

    目前流行的数据库

    MySQL  Oracle  Microsoft SQLServer  Microsoft Access

    PostgreSQL  DB2/UDB  InfoMax

    MySQL介绍

      世界上最流行的开源数据库,支持任何平台的操作系统,是一个强大的关系型数据库,支持SQL。值得注意的是MySQL不是语言是一个关系数据库管理系统(Relational Database Management System)应用软件

    唠叨一下:强力删除MySQL,在命令行数据rpm -e --nodeps mysql

    初步了解RDBMS术语:

    • 数据库: 数据库是一些关联表的集合。
    • 数据表: 表是数据的矩阵。在一个数据库中的表看起来像一个简单的电子表格。
    • 列: 一列(数据元素) 包含了相同类型的数据, 例如邮政编码的数据。
    • 行:一行(=元组,或记录)是一组相关的数据,例如一条用户订阅的数据。
    • 冗余:存储两倍数据,冗余降低了性能,但提高了数据的安全性。
    • 主键:主键是唯一的。一个数据表中只能包含一个主键。你可以使用主键来查询数据。
    • 外键:外键用于关联两个表。
    • 复合键:复合键(组合键)将多个列作为一个索引键,一般用于复合索引。
    • 索引:使用索引可快速访问数据库表中的特定信息。索引是对数据库表中一列或多列的值进行排序的一种结构。类似于书籍的目录。
    • 参照完整性: 参照的完整性要求关系中不允许引用不存在的实体。与实体完整性是关系模型必须满足的完整性约束条件,目的是保证数据的一致性。

    下载安装MySQL:

      先去官网下载MySQL5.+版本的压缩包(这里不介绍8版本的,8版本的解压压缩包之后会自动生成配置文件)

      解压压缩包之后,需要记住安装目录(我是安装在D:Program FilesMySQLMySQL Server5.7)

      在安装目录下创建 my.ini 配置文件,配置信息如下:

    [client]
    # 设置mysql客户端默认字符集
    default-character-set=utf8
     
    [mysqld]
    # 设置3306端口(默认)
    port = 3306
    # 设置mysql的安装目录
    basedir=D:Program FilesMySQLMySQL Server5.7
    # 设置 mysql数据库的数据的存放目录,MySQL 8+ 不需要以下配置,系统自己生成即可,否则有可能报错
    # datadir=D:Program FilesMySQLMySQL Server5.7data
    # 允许最大连接数
    max_connections=20
    # 服务端使用的字符集默认为8比特编码的latin1字符集
    character-set-server=utf8
    # 创建新表时将使用的默认存储引擎
    default-storage-engine=INNODB

      以管理员身份打开cmd命令行工具,切换目录  

    cd D:Program FilesMySQLMySQL Server5.7

      初始化数据库:

    mysqld --initialize --console

      初始化data目录

    mysqld --initialize-insecure

      在环境变量配置MySQL,可自行百度搜索

    概念:Structure Query Language(SQL)结构化查询语言

      1、为了与关系型数据库通讯的语言

      2、几乎所有的关系型数据库都支持SQL语言

      3、操作对象:table表格、view视图、index索引、program unit程序单元

    SQL语言分类

    • DQL:数据查询语言 data query language

      • select 查看数据

    • DDL:数据定义语言 data definition language

      • create 创建

      • alter 修改

      • drop 删除

      • rename 重命名

      • truncate 清空

    • DML:数据操纵语言 data manipulation language

      • insert 新增

      • delete 删除

      • update 修改

      • select 查看(可以放在DQL中)

    • DCL:数据控制语言 data control language

      • grant 授权

      • revoke 撤权

    • 事务

      • start transaction 开启事务

      • commit 提交事务

      • rollback 回滚事务

      • savepoint 设置事务回滚点

    MySQL登录

    • 密文登录(建议使用):mysql -u 用户名 -p

    • 明文登录:mysql -u 用户名 -p密码 (没有空格)

    • 完全登陆法:myql -u 用户名 -p密码 数据库名称 -h 服务器ip -P 端口号

      • mysql -u root -p123456 mysql -h 127.0.0.1 -P 3306

    • 修改密码:mysqladmin -u root(用户名) -p password root(新密码)

    Show命令(常用)

    • 切换数据库(进入数据库):use 数据库名称 eg:use mysql

    • 查看系统数据库:show databases;

    • 查看表格(进入数据库之后):show tables;

    • 查看系统状态:show status;

    • 查看系统参数:show variables;

    • 查看系统线程:show processlist;(主要用来检测那些用户登录了mysql数据库,并检测当前进入了哪个数据库)

    • 查看系统引擎:show engines;(这三者面试常见)

      • InnoDB:现在我们用的数据库引擎默认是InnoDB,因为它支持事务、行级锁、外键

      • MyIsAm:引擎一般,MySQL5.0以下用的

      • memory:一般适用于数据不是很多,读写速率和效率比较高的时候

    • 查看表结构:show columns from tbname;

      • desc tbname

    • 查看建表过程:show create table tbname;(主要是查看建表过程的sql语句

    • 查看表索引:show index from tbname;(只有表格建立了索引,才可以查看)

    • 补充

      • %:匹配0到多个字符 eg:show tables like "test%"; 会查询以test开头的所有数据库

      • _:匹配1个字符

      • *:指代符

    简单的select 语句

    • 简单计算:select 1+1;select 1+1 as sum,1*1 product;

    • 查看所处数据库:select database(); show tables; show processlist;

    • select now(),current_date,sysdate();

      • select sysdate(),sleep(3),sysdate();=====sysdate():实时时间

      • select now(),sleep(3),now();=====now():当前时间

    • select * from tbname;select host,user from tbname;

     

    MySQL的数据类型(标记的都是常用的)

     整型 (下面的M表示显示的长度,UNSIGNED表示无符号,ZEROFILL表示长度不够0填充)

    TINYINT[(M)] [UNSIGNED] [ZEROFILL] 一个很小的整数。

    有符号的范围是-128到127,无符号的范围是0到255。

    SMALLINT[(M)] [UNSIGNED] [ZEROFILL] 一个小整数。

      有符号的范围是-32768到32767,无符号的范围是0到65535。

    MEDIUMINT[(M)] [UNSIGNED] [ZEROFILL]一个中等大小整数。

      有符号的范围是-8388608到8388607,无符号的范围是0到 16777215。

    INT[(M)] [UNSIGNED] [ZEROFILL] 一个正常大小整数。

      有符号的范围是-2147483648到2147483647,无符号的范围是 0到4294967295。

    INTEGER[(M)] [UNSIGNED] [ZEROFILL] 

      这是INT的一个同义词。

    BIGINT[(M)] [UNSIGNED] [ZEROFILL]一个大整数。

      有符号的范围是-9223372036854775808到 9223372036854775807,无符号的范围是0到18446744073709551615 

    浮点型 (M表示显示的位数,D表示小数点后面几位)

    FLOAT[(M,D)] [ZEROFILL] 

      一个小(单精密)浮点数字。不能无符号。允许的值是-3.402823466E+38到1.175494351E-38,0 和1.175494351E-38到3.402823466E+38。M是显示宽度而D 是小数的位数。没有参数的FLOAT或有<24 的一个参数表示一个单精密浮点数字。

    DOUBLE[(M,D)] [ZEROFILL]

      一个正常大小(双精密)浮点数字。不能无符号。允许的值是1.7976931348623157E+308到-2.2250738585072014E-308、 0和 2.2250738585072014E-308到1.7976931348623157E+308。M是显示宽度而D是小 数位数。没有一个参数的DOUBLE或FLOAT(X)(25 < = X < = 53)代表一个双精密 浮点数字。

    DOUBLE PRECISION[(M,D)] [ZEROFILL]  REAL[(M,D)] [ZEROFILL]   这些是DOUBLE同义词。

    DECIMAL[(M[,D])] [ZEROFILL] 

    一个未压缩(unpack)的浮点数字。不能无符号。

    NUMERIC(M,D) [ZEROFILL]

    这是DECIMAL的一个同义词。

     

     字符型 (M表示存储的最大长度)

     CHAR(M) [BINARY] 

      一个定长字符串,当存储时,总是是用空格填满右边到指定的长度。M的范围是1 ~ 255个字符。

    VARCHAR(M) [BINARY] 

      一个变长字符串,当存储时在m的范围内,字符串的长度是多少,就存储多少长度

    TINYBLOB  TINYTEXT

      一个BLOB或TEXT列,最大长度为255(2^8-1)个字符。

    BLOB  TEXT 

      一个BLOB或TEXT列,最大长度为65535(2^16-1)个字符。

    MEDIUMBLOB   MEDIUMTEXT

      一个BLOB或TEXT列,最大长度为16777215(2^24-1)个字符。

    LONGBLOB   LONGTEXT 

      一个BLOB或TEXT列,最大长度为4294967295(2^32-1)个字符。

     

    枚举型和集合型

    create table t4(
        id int,
        name varchar(50),
        gender enum('male','female'....)/('0','1')   #单选,或者数据缺失null
                                       
    );    
    create table t5(
        hobby set('篮球','足球','羽毛球')    # 一个或者多个组合,或者为空'',或者数据缺失null
    );

    日期型

    DATE 

      一个日期。支持的范围是'1000-01-01'到'9999-12-31'。MySQL以'YYYY-MM-DD'格式来显示 DATE值,但是允许你使用字符串或数字把值赋给DATE列。

    DATETIME 

      一个日期和时间组合。支持的范围是'1000-01-01 00:00:00'到'9999-12-31 23:59:59'。MySQL 以'YYYY-MM-DD HH:MM:SS'格式来显示DATETIME值,但是允许你使用字符串或数字把值赋 给DATETIME的列。

    TIMESTAMP[(M)] 

      一个时间戳记。范围是'1970-01-01 00:00:00'到2037年的某时。MySQL以 YYYYMMDDHHMMSS、YYMMDDHHMMSS、YYYYMMDD或YYMMDD格式来显示 TIMESTAMP值,取决于是否M是14(或省略)、12、8或6,但是允许你使用字符串或数字把值 赋给TIMESTAMP列。

    TIME 

      一个时间。范围是'-838:59:59'到'838:59:59'。MySQL以'HH:MM:SS'格式来显示TIME值,但 是允许你使用字符串或数字把值赋给TIME列。

    YEAR[(2|4)] 

      一个2或4位数字格式的年(缺省是4位)。允许的值是1901到2155,和0000(4位年格式),如果 你使用2位,1970-2069( 70-69)。MySQL以YYYY格式来显示YEAR值,但是允许你把使用字 符串或数字值赋给YEAR列。(YEAR类型在MySQL3.22中是新类型。) 

     

     

     

     

     

     

  • 相关阅读:
    mybatis
    mybatis
    hadoop完全分布式搭建
    用构造器确保初始化
    HashMap的内部结构与hash冲突
    方法重载 与 方法覆盖
    Django后台管理admin或者adminx中使用富文本编辑器
    Celery在Django中的使用介绍
    django.db.utils.InternalError: (1060, "Duplicate column name 'user_id'")迁移报错解决方法
    Django2.0版本以上与pymsql 不匹配问题以及解决方法
  • 原文地址:https://www.cnblogs.com/aitiknowledge/p/11430185.html
Copyright © 2011-2022 走看看