mysql—MySQL 5.7.17安装及基本SQL语句(第七章)

DBS ------- DataBase System 数据库系统

以关系(二维表)的方式的存储数据
	
	记录 Record
	字段/属性	Column

数据库, 库

约束 Constraint

域约束:数据类型约束
	保证某字段的数据类型一致

外键约束:引用完整性约束(InnoDB)
	一个表中某字段的数据必须在与之相关的其他表的相关联字段中存在

主键约束
	某字段能惟一标识此字段所属的实体,并且不允许为空
	一个表只能有一个主键

惟一键约束
	某字段能惟一标识此字段所属的实体,可以为空
	一个表可以有多个惟一键

检查性约束
	保证某字段中不能出现违反常理的数据,例如年龄

事务 Transaction
保证数据ACID属性

数据库管理软件:

Oracle, MySQL, MariaDB(Percona), DB2, HBase, SQ512L Server(关系型数据库管理软件)

noSQL(非关系型数据库)    Redis, MongoDB, Memcached 

SQL语句 结构化查询语句:
DDL 数据定义语言
DML 数据操纵语言
DCL 数据控制语言

MySQL存储引擎 Storage Engine

支持插件式存储引擎

MyISAM
	不支持事务,只支持表级锁
	不支持外键
	支持B树索引、全文FULLTEXT索引、空间索引
	支持表压缩
	性能好,适用于查询较多(数据仓库)的情况
InnoDB
	支持事务,保证多个操作同时成功执行 
	支持行级锁
	支持使用表空间(Table Space)
	支持raw磁盘设备(无文件系统的设备)
	适用于在线事务处理系统(在线交易系统OLTP)
MRG_MYISAM
	将两个或两个以上的MYISAM表(表结构要一致)合并成一个表使用
CSV
	使用文本文件的方式保存表
	数据库移植时使用
ARCHIVE
	用于数据挖掘
MEMORY
	所有表存储在内存中
	用于创建临时表
	不支持事务、分布式事务、检查点
BLACKHOLE
	MySQL主从复制架构

不建议使用混合式存储引擎,即所有对象的存储引擎要一致

MySQL安装类型: https://www.mysql.com/
rpm软件
源码编译(cmake)
通用二进制格式

安装rpm MySQL 5.7.17

  1. 准备工作

关闭SELinux, 防火墙,修改主机名

  1. 准备本地yum仓库

[root@node01 ~]# createrepo /mysql57/

[root@node01 ~]# cat /etc/yum.repos.d/centos.repo
[centos]
name=centos7u2
baseurl=ftp://172.16.8.100/centos7u2
enabled=1
gpgcheck=0

[mysql57]
name=mysql57
baseurl=file:///mysql57
enabled=1
gpgcheck=0

[root@node01 ~]# yum clean all
[root@node01 ~]# yum makecache

  1. 安装mysql-server

yum install -y mysql-community-server

  1. 启动服务

[root@node01 ~]# systemctl start mysqld
[root@node01 ~]# systemctl enable mysqld
[root@node01 ~]#
[root@node01 ~]# ss -antp | grep "mysqld"
LISTEN 0 80 :::3306 ::?? users:(("mysqld",pid=2293,fd=22))

  1. 获取root用户的临时密码,并修改

[root@node01 ~]# grep "password" /var/log/mysqld.log
2017-03-09T05:48:24.711787Z 1 [Note] A temporary password is generated for root@localhost: >DK+,(%2qNl&
2017-03-09T05:51:32.429509Z 3 [Note] Access denied for user ‘root‘@‘localhost‘ (using password: NO)

方法1)

mysql -u root -p

mysql> ALTER USER ‘root‘@‘localhost‘ IDENTIFIED BY ‘Www.1.com‘; >>>修改用户密码
mysql> FLUSH PRIVILEGES; >>>>刷新授权表
mysql> exit

方法2)

[root@node01 ~]# mysqladmin -u root -p password "Www.2.com"
Enter password:

基本管理指令:

[root@node01 ~]# mysql -u root -p
Enter password:

[root@node01 ~]# mysql -uroot -pWww.1.com

数据库基本管理操作:

  1. 查看数据库

mysql> SHOW DATABASES;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
+--------------------+
4 rows in set (0.00 sec)

  1. 创建数据库

CREATE DATABASE <db_name> [CHARACTER SET=<字符集> COLLATE=<排序规则>]

mysql> CREATE DATABASE game;
Query OK, 1 row affected (0.00 sec)

mysql> CREATE DATABASE lol
-> CHARACTER SET=utf8
-> COLLATE=utf8_general_ci;
Query OK, 1 row affected (0.01 sec)

mysql>
mysql>
mysql> SHOW CREATE DATABASE lol;
+----------+--------------------------------------------------------------+
| Database | Create Database |
+----------+--------------------------------------------------------------+
| lol | CREATE DATABASE lol /*!40100 DEFAULT CHARACTER SET utf8 */ |
+----------+--------------------------------------------------------------+
1 row in set (0.00 sec)

查看MySQL支持的字符集

mysql> SHOW CHARACTER SET;

查看字符集的排序规则

mysql> SHOW COLLATION;

默认数据目录:
/var/lib/mysql

  1. 查看数据库的创建信息

mysql> SHOW CREATE DATABASE game;
+----------+-----------------------------------------------------------------+
| Database | Create Database |
+----------+-----------------------------------------------------------------+
| game | CREATE DATABASE game /*!40100 DEFAULT CHARACTER SET latin1 */ |
+----------+-----------------------------------------------------------------+

  1. 删除数据库

mysql> DROP DATABASE lol;

  1. 切换数据库

mysql> USE WarCraft;
Database changed

数据表基本管理操作:

  1. 查看表

mysql> SHOW TABLES;

  1. 创建表

CREATE TABLE <表名>(字段名称 数据类型 [属性], 字段名称 数据类型 [属性], ...... ) [ENGINE=<存储引擎>]

MySQL数据类型:

数值型
	精确数值
		TINYINT      	微整型
		INT				整型	 
		SMALLINT	 	小整型
		MEDIUMINT	 	中整型
		BIGINT    		大整型  
		DECIMAL(g,f)	定点数,用于财务相关计算		DECIMAL(10,6) 
			f:精度
	近似数值
		FLOAT(g,f)			单精度浮点型			
		DOUBLE(g,f)			双精度浮点型
		
		
字符型
	定长字符
		CHAR(10)		最多存储255个字符
		BINARY(10)	    存储字符时区分大小写
	变长字符
		VARCHAR(20)	最多存储65535个字符
		VARBINARY(20)
	TEXT			最多存储65535个字符
	TINYTEXT		最多存储255个字符
	MEDIUMTEXT		最多存储16777215个字符		
	LONGTEXT		最多存储4294967295个字符
	
	枚举	ENUM("男","女")
	
	集合	SET("a","b")	a , b , ab, ba 


	
日期/时间型
	DATE    			YYYY-MM-DD
	TIME				HH:MM:SS
	DATETIME			YYYY-MM-DD HH:MM:SS
	TIMESTAMP时间戳		YYYY-MM-DD HH:MM:SS
	YEAR				YYYY或YY

属性:

INT UNSIGNED	无符号整型
PRIMARY KEY		主键 
NOT NULL		不允许为空
DEFAULT "值"	设置字段的默认值 
AUTO_INCREMENT	自动增长, 必须与主键、不允许为空同时出现  

例:

mysql> CREATE TABLE game_account(
-> Account_name CHAR(15) PRIMARY KEY,
-> Account_password CHAR(25) NOT NULL,
-> Account_level TINYINT UNSIGNED,
-> Account_role CHAR(10) default "Fashi");

  1. 查看创建表的信息

mysql> SHOW CREATE TABLE game_account\G;
*************************** 1. row ***************************
Table: game_account
Create Table: CREATE TABLE game_account (
Account_name char(15) NOT NULL,
Account_password char(25) NOT NULL,
Account_level tinyint(3) unsigned DEFAULT NULL,
Account_role char(10) DEFAULT ‘Fashi‘,
PRIMARY KEY (Account_name)
) ENGINE=InnoDB DEFAULT CHARSET=latin1
1 row in set (0.00 sec)

例:

mysql> CREATE TABLE t1(id INT) ENGINE=MyISAM;
Query OK, 0 rows affected (0.02 sec)

  1. 删除表

mysql> DROP TABLE t1;
Query OK, 0 rows affected (0.00 sec)

  1. 查看表结构

mysql> DESC game_account;
+------------------+---------------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+------------------+---------------------+------+-----+---------+-------+
| Account_name | char(15) | NO | PRI | NULL | |
| Account_password | char(25) | NO | | NULL | |
| Account_level | tinyint(3) unsigned | YES | | NULL | |
| Account_role | char(10) | YES | | Fashi | |
+------------------+---------------------+------+-----+---------+-------+

mysql—MySQL 5.7.17安装及基本SQL语句(第七章)

上一篇:使用JDBC连接数据库出现The server time zone value '?й???????' is解决方案


下一篇:JSP+SSM+Mysql实现的学生成绩管理系统