文章目录

  • 1.数据库
  • 1.1数据库简介
  • 1.2MySQL数据库的优点
  • 1.3SQL简介
  • 1.4如何修改MySQL命令提示符
  • 1.5MySQL常用命令
  • 1.6MySQL的语法
  • 1.6MySQL的一些语句
  • 2.数据库操作
  • 3.mysql中的数据类型
  • 3.1整数类型
  • 3.2浮点类型
  • 3.3字符串类型
  • 3.4日期时间类型
  • 3.5二进制类型
  • 3.6如何表示布尔类型
  • 4.存储引擎
  • 4.1查看存储引擎
  • 4.2存储引擎优缺点及选择
  • 5.数据表的创建
  • 5.1什么是数据表
  • 5.2创建数据表
  • 5.3数据表相关操作


1.数据库

1.1数据库简介

①数据库
数据库(database)就是存储数据的仓库,为了方便数揭数据的存储和管理,将数据按照特定的规律存储在磁盘上。通过数据库管理系统,有效地组织和管理存储在数据库中的数据。

②数据库系统
数据库系统和数据库不是—个概念,数据库系统(DBS) 比数据库大很多,由数据库、数据库管理系统、应用开发工具构成。

③数据库管理系统
数据库管理系统(DataBase Management System),简称DBMS,用来定义数据、管理和维护数据的软件。它是数据库系统的一种重要的组成部分。

1.2MySQL数据库的优点

  • 开放源代码
  • 跨平台性好
  • 开源免费
  • 功能强大使用方便

1.3SQL简介

①SQl
Structured Query Language简称SQL,结构化查询语言,数据厍管理系统通过SQL语言来管理数据库中的数据。

②SQL语言的组成部分

  • DDL(Data Defination Language):数据定义语言,主要用于定义数据库、表、视图、索引和触发器等像DROP、 CREATE、ALTER等语句
  • DML(Data Manipulation Language):主要包括对数据的增删改。INSERT插入数据、UPDATE更新数据、DELETE删除数据
  • DQL(Data Query Language):数据检索语句,用来从 表中获得数据,确定数据怎样在应用程序中给出,像SELECT查询数
  • DCL(Data Control Language):数据控制语言,主要用于控制用户的访问权限,像GRANT、REVOKE、COMMIT、ROLLBACK等语句。

1.4如何修改MySQL命令提示符

连接客户端时通过参数指定:-uroot -proot --prompt提示符
连接上客户端后,通过prompt命令修改:prompt提示符
命令提示符常用参数:
\D:完整的日期
\d:当前数据库
\h:服务器名称
\u:当前用户名

1.5MySQL常用命令

SELECT VERSION();显示当前版本
SELECT NOW();显示当前日期时间
SELECT USER();显小当前用户

1.6MySQL的语法

关键字与函数名称全部大写
数据库名称、表名称、字段名称等全部小写
SQL语句必须以分隔符结尾(;或者\g 也可以进行修改)
SQL语句支持折行操作,但不能把单词、标记或引号字符串分割为两部分
数据库名称、表名称、字段名称等尽量不要使用MySQL的保留字,如果需要使用的时候需要使用反引号(``)将名称括起来

1.6MySQL的一些语句

\c:不执行当前语句
DELIMITER //:将命令分隔符修改为两个斜线
\T 保存路径\文件名称:将所写的命令保存到当前的文本文件中
\t:结束文本日志


2.数据库操作

--创建数据库和指定编码方式
 CREATE {DATABASE|SCHEMA} [IF NOT EXISTS] db_name[[DEFAULT] CHARACTER SET [=] charset_name]
 --查看警告
SHOW WARNINGS;
--查看当前数据库
SHOW {DATABASES|SCHEMAS}
--查看指定数据库的定义
SHOW CREATE{DATABASE|SCHEMA}db_name
--修改指定数据库的编码方式
ALTER DATABASE bd_name [DEFAULT] CHARACTER SET [=] charset_name
--打开指定数据库
USE db_name
--当前打开数据库名称
SELECT DATABASE()
--删除指定的数据库
DROP {DATABASE|SCHEMA} [IF EXISTS] db_name
--使用帮助
help
?
\h

3.mysql中的数据类型

3.1整数类型

MySQL 某月的第一天 数据库当月第一天_MySQL

3.2浮点类型

MySQL 某月的第一天 数据库当月第一天_数据库_02

3.3字符串类型

MySQL 某月的第一天 数据库当月第一天_MySQL_03

3.4日期时间类型

MySQL 某月的第一天 数据库当月第一天_MySQL 某月的第一天_04

3.5二进制类型

用于保存二进制数据,比如视频格式还有图片格式(但通常使用路径来储存所以不怎么用得到)

3.6如何表示布尔类型

TINYINT(1)

4.存储引擎

存储引擎指的是表的类型,不同的存储引擎决定了表在计算机中的存储方式

4.1查看存储引擎

MySQL 某月的第一天 数据库当月第一天_数据库_05

4.2存储引擎优缺点及选择

① innoDB(默认的引擎)
优:

  • 支持事务处理也支持外界
  • 支持崩溃修复能力和并发控制

缺:

  • 读写效率差
  • 占用空间大

适用场景:

  • 更新密集的表:InnoDB存储引擎特别适合处理多重并发的更新请求。
  • 事务:InnoDB存储引擎是唯一支持事务的标准MySQL存储引擎,这是管理敏感- 数据(如金融信息和用户注册信息)的必须软件
  • 自动灾难恢复:与其他存储引擎不一样,InnoDB表能够自动从灾难中恢复。虽然MyISAM表也能在灾难后修复,但其过程要长的多
  • 如对事务完整性要求较高并实现并发控制则选择
  • 频繁更新删除,因为支持事务提交和回滚

② MyISAM
优:

  • 插入数据速度快
  • 空间内存使用比较低

缺:

  • 不支持事务,事务完整性并发性要求不重要情况下使用

适用场景:

  • 只用于插入、存储和读取就选择

③ memory
优:

  • 将数据存储在内存中数据的处理速度快
    缺:
  • 不能建立太大的表
  • 安全性不高
    适用场景:
  • 需要很快读写速度但对安全性不高可以选择
  • 生命周期短一次性的比较合适

总结:
同一个数据库中可以使用多种数据引擎的表
较高数据处理innodb
查询写入速度快myisam
查询临时表memory,使用完成后释放掉


5.数据表的创建

5.1什么是数据表

数据表是数据库最重要的组成部分之一,是其它对象的基础,是存储数据的数据结构
数据表由行(row)和列(column)构成的二维网络
数据表一定先有表结构,再有数据

5.2创建数据表

mysql> CREATE TABLE [IF NOT EXISTS] tbl name( 字段名称字段类型[完整性约束条件]...)ENGINE=引擎名称CHARSET=编码方式;
# 举例
->CREATE TABLE IF NOT EXISTS user (
->id SAMLLINT,
->username VARCHAR(20),
->age TINYINT,
->married TINYINT(1) COMMENT '0代表未婚,非0代表已婚' # 给字段添加注释的方法
) ENGINE=INNODB CHARSET=UTF8;
Query OK, 0 rows affected
mysql> SHOW TABLES;
+----------------+
| Tables_in_sjk1 |
+----------------+
| user           |
+----------------+
1 row in set

5.3数据表相关操作

--临时转变客户端的方式
SET NAMES GBK
--查看擦好看数据库下的数据表
SHOW TABLES
--查看指定表的表结构
DECS tbl_name
DESCRIBE tbl_name
SHOW COLUMNS FROM tbl_name
--查看数据类型取值范围
?MEDIUMINT
--向表中插入记录
INSERT tbl_name VALUE|VALUES(值,....);#如果超过范围则插入记录不成功
--查询表中所有记录
SELECT * FROM test1;
--测试无符号
CREATE TABLE IF NOT EXISTS user (
num1 TINYINT UNSIGNED, #取值范围从-128到127变成0到255
num2 TINYINT
);
--测试ZEROFILL
mysql> CREATE TABLE IF NOT EXISTS user9(
    -> id TINYINT(5) ZEROFILL,
    -> name TINYINT);
Query OK, 0 rows affected (0.03 sec)

mysql> INSERT user9 VALUES(1,3);
Query OK, 1 row affected (0.00 sec)

mysql> SELECT * FROM user9;
+-------+------+
| id    | name |
+-------+------+
| 00001 |    3 |
+-------+------+
1 row in set (0.00 sec)
#如果规定了显示长度是2位但是存储123只要不超过他的存储范围也是可以的