数据库简介
1、数据库
数据库(database)就是存储数据的仓库,为了方便数据的存储和管理,将数据按照特定的规律存储在磁盘上,通过数据库管理系统,有效地组织和管理存储改据库中的数据。
2、数据库系统
数据库系统和数据库不是一个概念,数据库系统(DBS)比数据库大很多,由数据库、数据库管理系统、应用开发工具构成。
3、数据库管理系统
数据库管理系统(DataBase Management System,简称DBMS),用来定义数据、管理和维护数据的软件,它是数据库系统的一种重要的组成部分。
MySQL数据库简介
MySQL 是最流行的关系型数据库管理系统,由瑞典 MySQL AB 公司开发,目前属于 Oracle 公司。MySQL 是一种关联数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。
MySQL数据库的优点
1、MySQL是开放源代码的数据库;
2、MysQL的跨平台性;
3、开源免费;
4、功能强大使用方便;
······
SQL简介
Structured Query Language简称SQL,结构化查询语言,数据库管理系统通过SQL语言来管理数据库中的数据。
SQL语言的组成
1、DDL(Data Defination Language):数据定义语言,主要用于定义数据库、表、视图、索引和触发器等。像DROP, CREATE, ALTER等语句;
2、DML(Data Manipulation Language):主要包括对数据的增m改。 INSERT插入数据、UPDATE更新数据、DELETE删除数据;
3、DQL(Data Query Language):数据检索语句,用来从表中获得数据,确定数据怎样在应用程序中给出,像SELECT查询数据;
4、DCL(Data Control Language):数据控制语言,主要用于控制用户的访问权限像GRANT、REVOKE、COMMIT、ROLLBACK等语句。
MySQL基本操作
登录与退出
首先要开启MySQL服务。
登录
常用参数:
-u 用户名
-p 密码
-h 服务器名称
-P 端口号
-D 打开指定数据库
–prompt=name 设置命令提示符
–delimiter=name 指定外隔符
-V,–version 输出版本信息并且退出
C:\Users\HP>mysql -uroot -p
Enter password: ****
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.5.27 MySQL Community Server (GPL)
Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
退出
常用参数:
exit
quit
\q
mysql> exit
Bye
修改命令提示符
1、连接客户端时通过参数指定prompt提示符:mysql -uroot -proot --prompt 提示符。
例:将命令提示符改为sql
C:\Users\HP>mysql -uroot -proot --prompt sql
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 4
Server version: 5.5.27 MySQL Community Server (GPL)
Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
sql
2、 连接上客户端后,通过prompt命令修改。
例:将命令提示符改为mysql>
sqlprompt mysql>
PROMPT set to 'mysql>'
mysql>
命令提示符常用参数
\D:完整的日期
\d:当前数据库
\h:服务器名称
\u:当前用户名
mysql>prompt \h`\u`\D`\d
PROMPT set to '\h`\u`\D`\d'
localhost`root`Tue Mar 03 18:52:02 2020`(none)
常用命令
SELECT VERSION(); 显示当前版本
SELECT NOW(); 显示当前日期时间
SELECT USER(); 显示当前用户
mysql>SELECT VERSION();
+-----------+
| VERSION() |
+-----------+
| 5.5.27 |
+-----------+
1 row in set (0.00 sec)
mysql>SELECT NOW();
+---------------------+
| NOW() |
+---------------------+
| 2020-03-03 19:04:47 |
+---------------------+
1 row in set (0.00 sec)
mysql>SELECT USER();
+----------------+
| USER() |
+----------------+
| root@localhost |
+----------------+
1 row in set (0.00 sec)
MysQL语句的规范
1、关键字与函数名称全部大写;
2、数据库名称、表名称、字段名称等全部小写;
3、SQL语句必须以分隔符结尾;
4、SQL语句支持折行操作,只要不把单词、标记或引号字符串分割为两部分,可以在下一行继续写;
5、数据库名称、表名称、字段名称等尽量不要使用MysQL的保留字,如果需要使用的时候需要使用反引号(’’)将名称括起来。
数据库相关操作
1、创建数据库
CREATE {DATABASE | SCHEMA} [IF NOT EXISTS] db_name [[DEFAULT] CHARACTEA SET [=] charset_name]
mysql> CREATE DATABASE maizi1;
Query OK, 1 row affected (0.29 sec)
2、查看当前服务器下的数据库列表
SHOW {DATABASES | SCHEMAS}
mysql> SHOW DATABASES;
+--------------------+
| Database |
+--------------------+
| information_schema |
| maizi1 |
| mysql |
| performance_schema |
| test |
+--------------------+
5 rows in set (0.08 sec)
3、查看指定数据库的定义
SHOW CREATE {DATABASE | SCHEMA} db_name
mysql> SHOW CREATE DATABASE maizi1;
+----------+-----------------------------------------------------------------+
| Database | Create Database |
+----------+-----------------------------------------------------------------+
| maizi1 | CREATE DATABASE `maizi1` /*!40100 DEFAULT CHARACTER SET utf8 */ |
+----------+-----------------------------------------------------------------+
1 row in set (0.28 sec)
4、修改指定数据库的编码方式
ALTER {DATABASE | SCHEMA} db_name [DEFAULT] CHARACTER SET [=] charset_name
mysql> ALTER DATABASE maizi1 DEFAULT CHARACTER SET=GBK;
Query OK, 1 row affected (0.00 sec)
mysql> SHOW CREATE DATABASE maizi1;
+----------+----------------------------------------------------------------+
| Database | Create Database |
+----------+----------------------------------------------------------------+
| maizi1 | CREATE DATABASE `maizi1` /*!40100 DEFAULT CHARACTER SET gbk */ |
+----------+----------------------------------------------------------------+
1 row in set (0.00 sec)
5、打开指定数据库
USE db_name
mysql> USE maizi1;
Database changed
6、删除指定数据库
DROP {DATABASE | SCHEMA} [IF EXISTS] db_name
mysql> DROP DATABASE IF EXISTS maizi1;
Query OK, 0 rows affected (0.33 sec)
数据表相关操作
数据表是数据库最重要的组成部分之一,是其它对象的基础。数据表是存储数据的数据结构,包含了特定实体类型的数据。数据表是由行(row)和列(column)构成的二维网络,一定要先有表结构,再有数据。数据表至少有一列,可以没有行或者多行。数据表名称要求唯一,而且不要包含特殊字符。
MysQL数值类型
1、整形
2、浮点型
3、日期和时间类型
4、字符串类型
MySQL存储引擎
存储引擎就是指表的类型,数据库的存储类型决定了表在计算机中的存储方式。用户可以根据不同的存储方式、是否进行事务处理等来选择合适的存储引擎。
1、如何查看MysQL的存储引擎
(1)查看MySQL支持的存储引擎: SHOW ENGINES
(2)查看显示支持的存储引擎信息: SHOW VARIABLES LIKE ‘have%’
(3)查看默认的存储引擎: SHOW VARIABLES LIKE ‘storage_engine’
2、MySQL常用存储引擎及特点
InnoDB存储引擎、MyISAM存储引擎、MEMORY存储引擎
InnoDB:
特点:
· 提供的功能有事务、回滚、奔溃修复和多版本并发控制的事务安全;
· 是Mysql是第一个提供外键约束的表引擎;
· 支持自动增长列AUTO_INCREMENT。
优缺点:
· 优势在于提供了良好的事务管理、奔溃修复能力和并发控制。
· 缺点是读写效率稍差,占用的数据空间相对比较大。
适用场合:
· 更新密集的表:InnoDB存储引擎特别适合处理多重并发的更新请求;
· 事务:InnoDB存储引擎是唯一支持事务的标准MySQL存储引擎,这是管理敏感数据(如金融信息和用户注册信息)的必须软件;
· 自动灾难恢复:与其他存储引擎不一样,InnoDB表能够自动从灾难中恢复。虽然MyISAM表也能在灾难后修复,但其过程要长的多。
MyISAM:
优缺点:
· MyISAM存储引擎的优势在于占用空间小,处理速度快,缺点是不支持事务和并发性。
MEMORY:
优缺点:
· MEMORY表的大小是受到限制的。表的大小主要取决于两个参数,分别是max_rows和max_heap_table_size。其中,max_rows可以在创建表时指定:max_heap_table_size的大小默认为16MB,可以按需要进行扩大。因其存在内存中的特性,这类表的处理速度非常快。但是其数据容易丢失,生命周期短;(mysqld守护进程奔溃时,所有的MEMORY数据都会丢失)
· MEMORY表不支持VARCHAR、BLOB、TEXT数据类型,因为这种表类型按固定长度的记录格式存储。
适用场景:
· 暂时:目标数据只是临时需要,在其生命周期中必须立即可用;
· 相对无关:存储在MEMORY表中的数据如果突然丢失,不会对应用服务产生实质的负面影响,而且不会对数据完整性有长期影响。
创建数据表
mysql> CREATE DATABASE test1;
Query OK, 1 row affected (0.00 sec)
mysql> USE test1;
Database changed
mysql> #创建学员表(user)
mysql> #编号id
mysql> #用户名username
mysql> #年龄age
mysql> #性别sex
mysql> #邮箱email
mysql> #地址addr
mysql> #生日birth
mysql> #薪水salary
mysql> #电话tel
mysql> #是否结婚married
mysql> CREATE TABLE IF NOT EXISTS `USER`(
-> id SMALLINT,
-> username VARCHAR(20),
-> age TINYINT,
-> sex ENUM('男','女','保密'),
-> email VARCHAR(50),
-> addr VARCHAR(200),
-> birth YEAR,
-> salary FLOAT(8,2),
-> tel INT,
-> married TINYINT(1) COMMENT '0代表未结婚,非0代表已婚'
-> )ENGINE=INNODB CHARSET=UTF8;
Query OK, 0 rows affected (0.29 sec)
mysql> SHOW TABLES;
+-----------------+
| Tables_in_test1 |
+-----------------+
| user |
+-----------------+
1 row in set (0.00 sec)
查看表结构:
1、DESC tbl_name
2、DESCRIBE tbl name
3、SHOW COLUMNS FROM tbl name
mysql> DESC user;
+----------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------+--------------+------+-----+---------+-------+
| id | smallint(6) | YES | | NULL | |
| username | varchar(20) | YES | | NULL | |
| age | tinyint(4) | YES | | NULL | |
| sex | enum(' | YES | | NULL | |
| email | varchar(50) | YES | | NULL | |
| addr | varchar(200) | YES | | NULL | |
| birth | year(4) | YES | | NULL | |
| salary | float(8,2) | YES | | NULL | |
| tel | int(11) | YES | | NULL | |
| married | tinyint(1) | YES | | NULL | |
+----------+--------------+------+-----+---------+-------+
10 rows in set, 3 warnings (0.31 sec)
插入数据:
mysql> INSERT user VALUES(1,'Tom',18,'男','1234567890@qq.com','Beijing',2002,5123.45,12345678,0);
Query OK, 1 row affected (0.30 sec)
查看表格:
mysql> SELECT * FROM user;
+------+----------+------+------+-------------------+---------+-------+---------+----------+---------+
| id | username | age | sex | email | addr | birth | salary | tel | married |
+------+----------+------+------+-------------------+---------+-------+---------+----------+---------+
| 1 | Tom | 18 | 男 | 1234567890@qq.com | Beijing | 2002 | 5123.45 | 12345678 | 0 |
+------+----------+------+------+-------------------+---------+-------+---------+----------+---------+
1 row in set (0.00 sec)