mysql使用教程

简介

Mysql是最流行的关系型数据库管理系统RDBMS(Relational Database Management System:关系数据库管理系统)。

RDBMS即关系数据库管理系统的特点:

  1. 数据以表格的形式出现
  2. 每行为各种记录名称
  3. 每列为记录名称所对应的数据域
  4. 许多的行和列组成一张表单
  5. 若干的表单组成database

术语

  1. 数据库: 数据库是一些关联表的集合
  2. 数据表: 表示数据的矩阵
  3. 冗余 : 存储两倍数据,冗余降低性能,但提高数据的安全性
  4. 主键 : 主键是唯一的,一个数据表只能包含一个主键
  5. 外键 : 外键用来关联两个表
  6. 复合键(组合键):将多个列作为一个索引键,一般用于复合索引

推荐客户端工具

Navicat

linux安装mysql

  1. sudo apt update
  2. sudo apt install mysql-server

查看是否安装成功
sudo service mysql status,查看运行状态,是否在运行中

  1. 启动数据库:sudo service mysql start
  2. 关闭数据库:sudo service mysql stop

mysql使用

连接

xzw@DESKTOP-MJRQ5I0:~$ mysql -u root -p

-u 是用户 -p是密码

显示数据库 : show databases;

使用exit可以退出mysql>命令窗口

修改root用户密码

格式:mysql> set password for 用户名@localhost = password('新密码'); 
例子:mysql> set password for root@localhost = password('123');  

创建数据库

mysqladmin -u root -p create xzw
创建数据库 xzw

或:

create database xzw;

删除数据库

mysqladmin -u root -p drop xzw
删除数据库 xzw

或:

drop database xzw;

选择数据库

​ [root@host]# mysql -u root -p
​ Enter password:******
​ mysql> use RUNOOB;
​ Database changed
​ mysql>

数据类型

数值类型

  • 这些类型包括严格数值数据类型(INTEGER、SMALLINT、DECIMAL和NUMERIC),以及近似数值数据类型(FLOAT、REAL和DOUBLE PRECISION)。

日期和时间类型

  • 表示时间值的日期和时间类型为DATETIME、DATE、TIMESTAMP、TIME和YEAR。
  • 每个时间类型有一个有效值范围和一个"零"值,当指定不合法的MySQL不能表示的值时使用"零"值。
  • TIMESTAMP类型有专有的自动更新特性,将在后面描述。

字符串类型

  • 字符串类型指CHAR、VARCHAR、BINARY、VARBINARY、BLOB、TEXT、ENUM和SET。

创建数据表

​ CREATE TABLE table_name (column_name column_type);
以下例子中我们将在 RUNOOB 数据库中创建数据表runoob_tbl:

	CREATE TABLE IF NOT EXISTS `runoob_tbl`(
	   `runoob_id` INT UNSIGNED AUTO_INCREMENT,
	   `runoob_title` VARCHAR(100) NOT NULL,
	   `runoob_author` VARCHAR(40) NOT NULL,
	   `submission_date` DATE,
	   PRIMARY KEY ( `runoob_id` )
	)ENGINE=InnoDB DEFAULT CHARSET=utf8;

删除数据表

​ DROP TABLE table_name ;

插入数据

第一种方法将列名和列值分开了,在使用时,列名必须和列值的数一致。

INSERT INTO tablename(列名…) VALUES(列值);

第二种方法允许列名和列值成对出现和使用,如下面的语句将产生同样的效果。

INSERT INTO tablename SET column_name1 = value1, column_name2 = value2,…;

SELECT 查询数据

SELECT column_name,column_name
FROM table_name
[WHERE Clause]
[LIMIT N][ OFFSET M]
  • 查询语句中你可以使用一个或者多个表,表之间使用逗号(,)分割,并使用WHERE语句来设定查询条件。
  • 你可以使用星号(*)来代替其他字段,SELECT语句会返回表的所有字段数据
  • 可以使用 WHERE 语句来包含任何条件。
  • 你可以使用 LIMIT 属性来设定返回的记录数。
  • 你可以通过OFFSET指定SELECT语句开始查询的数据偏移量。默认情况下偏移量为0。

WHERE子句

我们知道从 MySQL 表中使用 SQL SELECT 语句来读取数据。
如需有条件地从表中选取数据,可将 WHERE 子句添加到 SELECT 语句中。

SELECT field1, field2,...fieldN FROM table_name1, table_name2...
[WHERE condition1 [AND [OR]] condition2.....
  • 查询语句中你可以使用一个或者多个表,表之间使用逗号, 分割,并使用WHERE语句来设定查询条件。
  • 可以在 WHERE 子句中指定任何条件
  • 可以使用 AND 或者 OR 指定一个或多个条件
  • WHERE 子句类似于程序语言中的 if 条件,根据 MySQL 表中的字段值来读取指定的数据。

update数据更新

如果我们需要修改或更新 MySQL 中的数据,我们可以使用 SQL UPDATE 命令来操作。.

UPDATE table_name SET field1=new-value1, field2=new-value2
[WHERE Clause]

DELETE语句

你可以使用 SQL 的 DELETE FROM 命令来删除 MySQL 数据表中的记录。
DELETE FROM table_name [WHERE Clause]

LIKE子句

WHERE 子句中可以使用等号 = 来设定获取数据的条件,如 "runoob_author = 'RUNOOB.COM'"。

但是有时候我们需要获取 runoob_author 字段含有 "COM" 字符的所有记录,这时我们就需要在 WHERE 子句中使用 SQL LIKE 子句。

SELECT field1, field2,...fieldN 
FROM table_name
WHERE field1 LIKE condition1 [AND [OR]] filed2 = 'somevalue'
  • LIKE 通常与 % 一同使用,类似于一个元字符的搜索。

UNION操作符

MySQL UNION 操作符用于连接两个以上的 SELECT 语句的结果组合到一个结果集合中。多个 SELECT 语句会删除重复的数据。

SELECT expression1, expression2, ... expression_n
FROM tables
[WHERE conditions]
UNION [ALL | DISTINCT]
SELECT expression1, expression2, ... expression_n
FROM tables
[WHERE conditions];

ORDER排序

如果我们需要对读取的数据进行排序,我们就可以使用 MySQL 的 ORDER BY 子句来设定你想按哪个字段哪种方式来进行排序,再返回搜索结果。

SELECT field1, field2,...fieldN table_name1, table_name2...
ORDER BY field1, [field2...] [ASC [DESC]]

你可以使用 ASC 或 DESC 关键字来设置查询结果是按升序或降序排列。 默认情况下,它是按升序排列。

use <数据库名>;

​ 使用某个数据库

数据类型的属性(字段属性)

  • NULL 数据列可包含NULL值
  • NOT NULL 数据列不允许包含NULL值
  • DEFAULT 默认值
  • PRIMARY KEY 主键
  • AUTO_INCREMENT 自动递增,适用于整数类型
  • UNSIGNED 无符号
  • CHARACTER SET name 指定一个字符集

大小写

MySQL在Linux下数据库名、表名、列名、别名大小写规则:

  • 数据库名与表名是严格区分大小写的
  • 表的别名是严格区分大小写的
  • 列名与列的别名在所有情况下均可忽略大小写
  • 字段内容默认情况下是大小写不敏感的

SET

变量赋值

数据库隔离级别

事务级别脏读不可重复读幻读
Read uncommitted
Read committed×
Repeatable read××
Serializable×××
  • 脏读:是指当一个事务正在访问数据,并且对数据进行了修改,而这种修改还没有提交到数据库中,这时,另外一个事务也访问这个数据,然后使用了这个数据。

  • 不可重复度:是指在一个事务内,多次读同一数据。在这个事务还没有结束时,另外一个事务也访问该同一数据。那么,在第一个事务中的两次读数据之间,由于第二个事务的修改,那么第一个事务两次读到的的数据可能是不一样的。这样就发生了在一个事务内两次读到的数据是不一样的,因此称为是不可重复读。(即不能读到相同的数据内容)

  • 幻读:是指当事务不是独立执行时发生的一种现象,例如第一个事务对一个表中的数据进行了修改,这种修改涉及到表中的全部数据行。同时,第二个事务也修改这个表中的数据,这种修改是向表中插入一行新数据。那么,以后就会发生操作第一个事务的用户发现表中还有没有修改的数据行,就好象发生了幻觉一样。

预处理语句

预处理语句的SQL语法基于三个SQL语句:

  1. PREPARE stmt_name FROM preparable_stmt;
  2. EXECUTE stmt_name [USING @var_name [, @var_name] ...];
  3. {DEALLOCATE | DROP} PREPARE stmt_name;

REPARE语句用于预备一个语句,并赋予它名称stmt_name,借此在以后引用该语句。

超时

显示等待超时时间

show global variables like '%timeout';

设置等待时间

设置全局变量wait_timeout为12小时
SET GLOBAL wait_timeout = 43200;
# mysql  

评论

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×