MySQL入门

mysql基础

数据库基本概念

MariaDB or MySQL官网:https://db-engines.com/en/ranking

磁盘文件--> 层次模型 --> 网状模型 --> (Codd) 关系模型

DBMS是管理数据库的系统软件,它实现数据库系统的各种功 能。是数据库系统的核心

DBA:负责数据库的规划、设计、协调、维护和管理等工作

关系 :关系就是二维表。并满足如下性质: 表中的行、列次序并不重要

行row:表中的每一行,又称为一条记录

列column:表中的每一列,称为属性,字段

主键(Primary key):用于惟一确定一个记录的字段;复合主键:多个字段组合成一个主键(NOT NULL);

惟一键:一个或多个字段的组合,填入的数据必须能在本表 中唯一标识本行;允许为NULL,一个表可以存在多个

约束:

  主键约束:惟一、非空;一张表只能有一个;

  惟一键约束:惟一,可以存在多个;

  外键约束:参考性约束;

  检查性约束:check;

三层模型:

  物理层 --> SA (决定数据的存储格式,即RDBMS在磁盘上如何组织文件)

  逻辑层 --> DBA(描述存储什么数据,以及数据间存在什么样的关系)

  视图层 --> Coder(描述DB中的部分数据)

域domain:属性的取值范围,如,性别只能是‘男’和‘女’ 两个值

表:row, column;

关系运算:选择、投影

数据库:表、索引、视图(虚表)、SQL、存储过程procedure,过程无返回值、存储函数function,过程有返回值、触发器trigger、事件调度器event scheduler,任务计划;

事务transaction:多个操作被当作一个整体对待 ACID: 原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation,又称独立性)、持久性(Durability)。

原子性:整个事务中的所有操作,要么全部完成,要么全部不完成,不可能停滞在中间某个环节。事务在执行过程中发生错误,会被回滚(Rollback)到事务开始前的状态,就像这个事务从来没有执行过一样。

一致性:在事务开始之前和事务结束以后,数据库的完整性约束没有被破坏。

隔离性:两个事务的执行是互不干扰的,一个事务不可能看到其他事务运行时,中间某一时刻的数据。

持久性:在事务完成以后,该事务所对数据库所作的更改便持久的保存在数据库之中,并不会被回滚。

数据的操作:• 数据提取:在数据集合中提取感兴趣的内容。(SELECT)• 数据更新:变更数据库中的数据。(INSERT、DELETE、 UPDATE)

应用程序指以数据库为基础的应用程序:DBMS --> RDBMS(关系型数据库管理系统)

设计关系数据库时,遵从不同的规范要求,设计出合理的 关系型数据库,这些不同的规范要求被称为不同的范式,各种范 式呈递次规范,越高的范式数据库冗余越小。

目前关系数据库有六种范式:第一范式(1NF)、第二范式 (2NF)、第三范式(3NF)、巴德斯科范式(BCNF)、第 四范式(4NF)和第五范式(5NF,又称完美范式)。满足最 低要求的范式是第一范式(1NF)。在第一范式的基础上进 一步满足更多规范要求的称为第二范式(2NF),其余范式 以次类推。一般说来,数据库只需满足第三范式(3NF)即可

RDBMS:

范式:第一范式、第二范式、第三范式;

1NF:无重复的列,每一列都是不可分割的基本数据项,同 一列中不能有多个值

2NF:属性完全依赖于主键,第二范式必须先满足第一范式 ,要求表中的每个行必须可以被唯一地区分。

3NF:属性不依赖于其它非主属性,满足第三范式必须先满 足第二范式。第三范式要求一个数据库表中不包含已在其它表中已包含的非主关键字信息,非PK的字段间不能有从属关系

SQL: Structure Query Language:结构化查询语言--- SQL解释器---数据存储协议:应sq用层协议,C/S

olacle(tcp:1521),mysql(tcp:3306),sql  server(tcp:1433)

mysql基础和应用结构

mysql特性:插件式存储引擎、单进程多线程

mysql体系结构:


安装:服务端mysql-server和客户端mysql,yum安装,二进制安装,源码编译安装

提高安全性 :运行mysql_secure_installation


服务端程序:

mysqld, mysqld_safe, mysqld_multi

客户端程序:

mysql, mysqldump, mysqlbinlog, mysqladmin, ...

非客户端类管理程序:

myisamchk, myisampack, ...

配置文件: /etc/my.cnf 和 /etc /my.cnf.d/ *.cnf

mysql命令选项:

-uUSERNAME: 用户名;默认为root

-hHOST: 服务器主机; 默认为localhost

-pPASSWORD:用户的密码;建议使用-p,默认为空密码

mysql用户账号由两部分组成: 'USERNAME'@'HOST' HOST用于限制此用户可通过哪些远程主机连接mysql服务

支持使用通配符: % 匹配任意长度的任意字符 172.16.64.0/16 或 172.16.%.% _ 匹配任意单个字符

运行mysql前通常修改的参数

在配置文件的[mysqld]中添加两个选项: 

innodb_file_per_table = on  启用innodb存储引擎

skip_name_resolve = on 禁止主机名解析

MYSQL语言基础

在数据库系统中,SQL语句不区分大小写(建议用大写) ,但字符串常量区分大小写

SQL语句可单行或多行书写,以“;”结尾,关键词不能跨多行或简写

用空格和缩进来提高语句的可读性 ,句通常位于独立行,便于编辑,提高可读性

注释: SQL标准: /*注释内容*/ 多行注释      -- 注释内容 单行注释,注意有空格

MySQL注释: #


数据库对象的命名规则:1.必须以字母开头 ;2.可包括数字和三个特殊字符(# _ $);3.不要使用MySQL的保留字 ;4.同一Schema下的对象不能同名

MySQL的数据类型:字符型、数值型、日期时间型、内建类型

字符型:CHAR(#), BINARY(#):定长型;CHAR不区分字符大小写,而BINARY区分;

               VARCHAR(#), VARBINARY(#):变长型TEXT:TINYTEXT,TEXT,MEDIUMTEXT,LONGTEXT

               BLOB:TINYBLOB,BLOB,MEDIUMBLOB, LONGBLOB

数值型:

浮点型:近似FLOAT、DOUBLE、REAL、BIT

整型:精确:INTEGER:TINYINT,SMALLINT,MEDIUMINT,INT,BIGINT;DECIMAL

日期时间型:日期:DATE;时间:TIME;日期j时间:DATETIME;间戳:TIMESTAMP;年份:YEAR(2), YEAR(4)

内建:ENUM:枚举:ENUM('Sun','Mon','Tue','Wed');SET:集合

类型修饰符:

    字符型:NOT NULL,NULL,DEFALUT ‘STRING’,CHARACET SET ‘CHARSET’,COLLATION ‘collocation'

    整型:NOT NULL, NULL, DEFALUT value, AUTO_INCREMENT, UNSIGNED(使用unsigned会使数据可变长度增长一倍)

    日期时间型:NOT NULL, NULL, DEFAULT

DML:

INSERT/REPLACE(增), DELETE(删), SELECT(查), UPDATE(改),ALTER。

创建数据库:CREATE    DATABASE  |SCHEMA   [IF NOT EXISTS]   'DB_NAME'; 

删除数据库:DROP    DATABASE   |   SCHEMA   [IF EXISTS]   'DB_NAME';

查看支持所有字符集:SHOW CHARACTER SET;  

查看支持所有排序规则:SHOW COLLATION;

查看数据库列表:SHOW DATABASES;  

创建表:CREATE  TABLE  'DB_TABLE_NAME' ;

删除表:DROP TABLE [IF EXISTS] tb_name;

查看表: USE   'DB_NAME'  ;  SHOW  TABLES ;

查看支持的engine类型:SHOW ENGINES;

查看表结构:DESC [db_name . ]tb_name;

查看表状态:SHOW TABLE STATUS LIKE 'tbl_name'\G

实例:

CREATE TABLE students   (id   int   UNSIGNED NOT NULL PRIMARY KEY,name VARCHAR(20)NOT NULL,age tinyint UNSIGNED);

DESC students;

CREATE TABLE students2 (id   int   UNSIGNED NOT NULL ,name VARCHAR(20)NOT NULL,age tinyint UNSIGNED,PRIMARY KEY(id,name));

ALTER   TABLE   students   RENAME s1; (重命名)

ALTER TABLE  s1   ADD  phone  varchar(11)   AFTER name;

ALTER TABLE   s1  MODIFY  phone int;

ALTER TABLE   s1 CHANGE  COLUMN  phone  mobile char(11);

ALTER TABLE   s1  DROP  COLUMN mobile;

ALTER TABLE students ADD gender ENUM('m','f')    (枚举,gender的域值为m和f)

ALETR TABLE students  CHANGE id   sid  int  UNSIGNED NOT NULL PRIMARY KEY;

ALTER TABLE students ADD UNIQUE KEY(name);  (唯一键)

ALTER TABLE students ADD INDEX(age);  (添加age的索引)

SHOW INDEXES FROM students;

ALTER TABLE students DROP age;

索引:定义在查找时作为查找条件的字段 ----优点:提高查询速度 ;缺点:占用额外空间,影响插入速度  (创建索引必须要有索引名称)

创建索引: CREATE INDEX   index_name   ON tbl_name (index_col_name,...);

删除索引: DROP INDEX index_name ON tbl_name;

查看索引: SHOW INDEXES FROM [db_name.]tbl_name;

INSERT:(插入,增)

INSERT    [INTO]    tbl_name    [(col_name,...)]   {VALUES | VALUE}     (val1,...),(...),...

UPDATE:(改)

UPDATE   tbl_name  SET col1=val1, col2=val2, ... [WHERE clause]    [ORDER BY 'col_name' [DESC]] [LIMIT [m,]n];

DELETE::(删)

DELETE   FROM    tbl_name   [WHERE clause]   [ORDER BY 'col_name' [DESC]] [LIMIT [m,]n]; 可先排序再指定删除的行数

SELECT col1,col2,... FROM tbl_name [WHERE clause] [ORDER BY 'col_name' [DESC]] [LIMIT [m,]n];  Limit m,n 跳过m个,要n个

SELECT字段表示法:  *: 所有字段      as:字段别名, col1 AS alias1  例:

WHERE clause:

操作符: >, <, >=, <=, ==, != , BETWEEN ... AND ...  

LIKE:  %:任意长度的任意字符 ;  _:任意单个字符;

RLIKE:正则表达式模式匹配

IS NULL ,IS NOT NULL IN (val1,val2,…)

条件逻辑操作: and,or,not

示例:

DESC students;

INSERT INTO students VALUES(1,'tom','m'),(2,'alice','f');

INSERT INTO students  (id,name) VALUES(3,'jack'),(4,'allen');

SELECT * FROM students WHERE id < 3;

SELECT * FROM students WHERE gender='m';

SELECT * FROM students WHERE gender IS NULL;

SELECT * FROM students WHERE gender IS NOT NULL;

SELECT * FROM students ORDER BY name DESC LIMIT 2;  (符合条件的前两个)

SELECT * FROM students ORDER BY name DESC LIMIT 1,2;

SELECT * FROM students  WHERE id >=2 and id <=4;

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 姓名:谢艾芳 学号:16040410073 转自http://www.jianshu.com/p/033bc52e...
    天使和双彩虹2阅读 483评论 0 6
  • 什么是数据库? 数据库是存储数据的集合的单独的应用程序。每个数据库具有一个或多个不同的API,用于创建,访问,管理...
    chen_000阅读 4,158评论 0 19
  • 21分钟 MySQL 入门教程 目录 一、MySQL的相关概念介绍 二、Windows下MySQL的配置 配置步骤...
    jony456123阅读 910评论 0 4
  • MySQL的相关概念介绍 MySQL 为关系型数据库(Relational Database Management...
    苏为阅读 466评论 0 1
  • Downloads for Apple Developers: https://developer.apple.c...
    Asingers阅读 1,616评论 0 0

友情链接更多精彩内容