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中是新类型。) 

     

     

     

     

     

     

  • 相关阅读:
    Bootstrap 2.2.2 的新特性
    Apache POI 3.9 发布,性能显著提升
    SQL Relay 0.48 发布,数据库中继器
    ProjectForge 4.2.0 发布,项目管理系统
    红帽企业 Linux 发布 6.4 Beta 版本
    红薯 快速的 MySQL 本地和远程密码破解
    MariaDB 宣布成立基金会
    Percona XtraBackup 2.0.4 发布
    Rocks 6.1 发布,光盘机群解决方案
    精通Servlet研究,HttpServlet的实现追究
  • 原文地址:https://www.cnblogs.com/aitiknowledge/p/11430185.html
Copyright © 2011-2022 走看看