MySQL基础学习笔记part1

数据库简介
数据库就是存储数据的仓库。为了方便数据的存储和管理,将数据按照特定的规律存储在磁盘上,通过数据管理系统,有效地组织和管理存储在数据库中的数据。
数据库系统:数据库系统和数据库不是一个概念,数据库系统(DBS),比数据库大很多,由数据库、数据库管理系统,应用开发工具构成。
数据库管理系统:用来定义数据、管理和维护数据的软件。它是数据库系统的一种重要的组成部分。
常见的数据库系统:甲骨文Oracle数据库、MySQL等

MySQL数据库:开放源代码的数据库、具有跨平台性、开源免费、功能强大使用免费
MySQL官网可下载软件

SQL简介
Structured Query Language 简称SQL ,结构化查询语言,数据库管理系统通过SQL语言来管理数据库中的数据。
SQL语言的组成部分:DDL、DML、DQL、DCL
DD(Defination)L:数据库定义语言,主要用于定义数据库、表、视图、索引、触发器等、如DROP、CREATE、ALTER等语句
DM(Manipulation)L:主要包括对数据的增删改。INSERT插入数据、UPDATE更新数据、DELETE删除数据。
DQ(Query)L:数据检索语句,用来从表中获得数据,确定数据怎样在应用程序中给出。像SELECT查询数据。
DC(Control)L:数据控制语句,主要用于控制用户的访问权限。像GRANT、REVOKE、COMMIT、ROLLBACK等语句。

安装目录简介
bin目录:存储可执行文件
date目录:存储数据文件
include目录:存储包含的头文件
lib目录:存储库文件
docs目录:文档
share目录:错误信息和字符集文件
my.ini文件:MySOL的配置文件、设置字符集(客户端字符集[mysql]、服务器端字符集[mysqld])

开启服务,停止服务
3

(配置)设置统一字符集
4

5

6

登录
2

3

4

或者mysql -uroot -p(+密码)
或者mysql --username=root(用户名) --pastword=密码(mysql5.5之后的版本不能使用)

常用参数
-u/–username=name,用户名
-p,–password[=pwd],密码
-h,–host=name,服务器名称
-P,–post=#,端口号(默认3306)
10
-D,–database=name,打开指定数据库
–prompt=name,设置命令提示符(默认的命令提示符mysql>)
也可以在连接上客户端后,通过prompt命令修改
9

只对于当前进程有效

–delimiter=name,指定分隔符
-V,–version,输出版本信息并且退出
11

退出:exit、quit、\q、Ctrl+c

SQL语句规范
Commands end with ; or \g.(表示默认的命令分隔符是;或者是\g)
可以使用help、?或者是\h来查看帮助手册
28

29

30

\c 来取消当前输入的命令
17

命令提示符常用参数
\D:完整日期
\d:当前数据库
\h:服务器名称
\u:当前用户名

12

SQL语句不区分大小写
MySQL常用命令
SELECT VERSION();显示当前版本
SELECT NOW();显示当前日期时间
SELECT USER();显示当前用户
DELIMITER:修改命令分隔符
18

13

14

MySQL语句的规范
关键字与函数名称全部大写
数据库名称、表名称、字段名称等全部小写
SQL语句必须以分隔符结尾
SQL语句支持折行操作,只要不把单词、标记或引号字符串分割为两部分,可以在下一行句续写
数据库名称、表名称、字段名称等尽量不要使用MySQL的保留字,如果需要使用的时候需要使用反引号(’ ')将名称括起来

15

引号要成对使用,不可单独使用,单独使用后要补全才行,否则不能退出
16
可以使用DELIMITER();命令来修改命令分隔符
也可以在登录的时候使用以下:来修改命令提示符
mysql -uroot -p --delimiter=//

按上下键可以调出之前写的命令

\T可以开启输出日志
20

以\t来结束输出日志

数据库的相关操作(DDL)
创建数据库 CREATE {DATABASE | SCHEMA} [IF NOT EXISTS] db_name DEFAULT CHARACTER SET [=] charset_name;
{}代表必选内容,[]代表可以选可以不选内容
21

SHOW WARNINGS:显示上一条操作产生的警告
22

SHOW {DATABASES | SCHEMAS}:查看当前服务器下的数据库列表
23

information_schema、mysql、performance_schema是不可以删除的

SHOW CREATE {DATABASES | SCHEMAS}:查看指定数据库的定义
24

修改指定数据库的编码方式:ALTER {DATABASE|SCHEMA} db_name[DEFAULT] CHARACTER SET [=] charset_name
25

打开指定数据库:USE db_name
得到当前打开的数据库名称:SELECT {DATABASE() | SCHEMAS()}
26

删除或指定的数据库:DROP{DATABASE|SHEMA}[IF EXISTS] db_name

MySQL中支持的数据类型简介
1.数据表
数据表是数据库最重要的组成部分之一,是其他对象的基础
数据表是存储数据的数据结构
数据表是包含了特定实体类型的数据
数据表由行(row)和列(column)构成的二维网络
数据表一定先有表结构,再有表数据(没有数据称为空表)
数据表至少有一列,可以没有行或者多行
数据表名称要求唯一,而且不要包含特殊字符

2.创建数据表
CREATE TABLE [IF NOT EXISTS] tal_name(
字段名称 字段类型 [完整性约束条件]

)ENGINE=引擎名称 CHARSET=‘编码方式’;
42

44

可以通过COMMENT 注释内容 给字段添加注释信息
43

练习
45

46

完整性约束条件
59

测试主键(主键不能重复)
CREATE TABLE IF NOT EXISTS uesr1(
id INT PRIMARY KEY, 或者(id INT KEY, )可以省略PRIMARY
username VARCHAR(20)
);
60

INSERT uesr1 VALUE(1,‘King’);
INSERT uesr1 VALUE(13,‘King2’);
查询信息
SELECT * FROM uesr1 WHERE id=1;
62

多字段主键(复合主键)------------注意一个表中只能有一个主键
CREATE TABLE IF NOT EXISTS user2(
id INT,
username VARCHAR(20),
card CHAR(18),
PRIMARY KEY(id,card) 或者(KEY(id,card)可以省略PRIMARY
);
63

INSERT user2 VALUE(1,‘King’,‘112’);
INSERT user2 VALUE(1,‘King’,‘111’);
//这两条信息主键不一样

查看创建表的标的定义
SHOW CREATE TABLE uesr1;
61

MySQL中的数据类型
1.整数类型
27

2.浮点数类型
31

3.字符串类型
32

4.日期时间类型
33

5.二进制类型

设置合适的数据类型
34

35

36

MySQL中的存储引擎简介
存储引擎就是指表的类型。数据库的存储类型决定了表在计算机的存储方式。用户可以根据不同的存储方式,是否进行事务处理等选择合适的存储引擎

查看MySQL的存储引擎
查看MySQL支持的存储引擎:SHOW ENGINES
37

Transactions:是否支持事务处理
XA:是否是分布交易处理的XA规范
Savepoints:是否支持保存点

显示支持的存储引擎信息:SHOW VARIABLES LIKE ‘have%’
38

查看默认的存储引擎:SHOW VARIABLES LIKE ‘storage——engine’
39

MySQL常用存储引擎及特点(不同的表可以使用不同的存储引擎,使用ENGINE来指定)
1.InnoDB存储引擎
InnoDB是事务型数据库的首选引擎,支持事务安全表(ACID),其它存储引擎都是非事务安全表,支持行锁定和外键,MySQL5.5以后默认使用InnoDB存储引擎。InnoDB存储引擎中,创建的表的结构存储于.frm文件中。数据和索引存储在innodb_data_home和innodb_data_path表空间中。
InnoDB特点: 支持事务处理,支持外键,支持崩溃修复能力和并发控制。如果需要对事务的完整性要求比较高(比如银行),要求实现并发控制(比如售票),那选择InnoDB有很大的优势。
如果需要频繁的更新、删除操作的数据库,也可以选择InnoDB,因为支持事务的提交(commit)和回滚(rollback)。

2.MyISAM存储引擎
MyISAM基于ISAM存储引擎,并对其进行扩展。它是在Web、数据仓储和其他应用环境下最常使用的存储引擎之一。MyISAM拥有较高的插入、查询速度,但不支持事务,不支持外键。
MyISAM存储引擎的表存储成3个文件,文件名与表名相同,扩展名分别为:frm,MYD,MYI。
frm文件:存储表的结构。
myd文件:存储数据。
myi文件:存储索引。
MyISAM特点: 插入数据快,空间和内存使用比较低。如果表主要是用于插入新记录和读出记录,那么选择MyISAM能实现处理高效率。如果应用的完整性、并发性要求比较低,也可以使用MyISAM。
3.MEMORY存储引擎
MEMORY存储引擎将表中的数据存储到内存中,为查询和引用其他表数据提供快速访问。
MEMORY特点: 所有的数据都在内存中,数据的处理速度快,但是安全性不高。如果需要很快的读写速度,对数据的安全性要求较低,可以选择MEMOEY。
它对表的大小有要求,不能建立太大的表。所以,这类数据库只使用在相对较小的数据库表。

MyISAM和InnoDB和MEMORY区别
MySQL常见的三种存储引擎为InnoDB、MyISAM和MEMORY。其区别体现在事务安全、存储限制、空间使用、内存使用、插入数据的速度和对外键的支持。具体如下:
1、事务安全:InnoDB支持事务安全,MyISAM和MEMORY两个不支持。
2、存储限制:InnoDB有64TB的存储限制,MyISAM和MEMORY要是具体情况而定。
3、空间使用:InnoDB对空间使用程度较高,MyISAM和MEMORY对空间使用程度较低。
4、内存使用:InnoDB和MEMORY对内存使用程度较高,MyISAM对内存使用程度较低。
5、插入数据的速度:InnoDB插入数据的速度较低,MyISAM和MEMORY插入数据的速度较高。
6、对外键的支持:InnoDB对外键支持情况比较好,MyISAM和MEMORY两个不支持外键。

注释
# 注释内容
– 注释内容
40

可以使用反引号将名称括起来,防止与关键字连在一起
41

查看数据库中的数据表以及表结构
查看数据库中的数据表
SHOW TABLES

查看指定表的表结构
DESC tbl_name
DESCRIBE tbl_name
SHOW COLUMNS FROM tbl_name
47

测试整型
CREATE TABLE test1(
num1 TINYINT,
num2 SMALLINT,
num3 MEDIUMINT,
num4 INT,
num5 BIGINT
);
tinyint(4) 表示显示长度,要配合上零填充才有意义

---------向表中插入记录 INSERT tbl_name VALUE | VALUES(值,…);
INSERT test1 VALUE(-128,-32768,-8388608,-2147483648,-9223372036854775808);
---------查询表中所有记录SELECT * FROM tbl_name;
SELECT * FROM test1;

---------无符号UNSIGNED
CREATE TABLE test2(
num1 TINYINT UNSIGNED,
num2 TINYINT
);
INSERT test2 VALUE(0,-12);
SELECT * FROM test2;

---------零填充ZEROFILL(被ZEROFILL修饰的会自动加上UNSIGNED修饰)
CREATE TABLE test3(
num1 TINYINT(3) ZEROFILL,
num2 TINYINT
);
INSERT test3 VALUE(1,1);
SELECT * FROM test3;
49

测试浮点数
CREATE TABLE test4(
num1 FLOAT(6,2),
num2 DOUBLE(6,2),
num3 DECIMAL(6,2)
);
INSERT test4 VALUE(3.1415,3.1415,3.1415);
SELECT * FROM test4;
INSERT test4 VALUE(3.1495,3.1415,3.1495);[进行四舍五入]
注意:根据平台的不同,精度也不同,所以不要对两个浮点数进行比较,不要查询浮点数。
对精度要求较高的需要使用定点数
50

51

52

53

测试字符串类型
CHAR(M):定长字符串,占用空间大,速度快
VARCHAR(M):变长字符串,占用空间小,速度慢
CREATE TABLE test5(
str1 CHAR(5),
str2 VARCHAR(5),
);
INSERT test5 VALUE(‘1’,‘1’);
SELECT * FROM test5;
INSERT test5 VALUE(‘123456’,‘123456’);//报错
INSERT test5 VALUE(‘1’,‘1’);
INSERT test5 VALUE(‘1 ‘,‘1 ‘);//char类型不保存字符后面的空格,varchar类型保存字符后面的空格
INSERT test5 VALUE(’ 1’,’ 1’);//char类型和varchar类型都保存字符前面的空格

SELECT LENGTH(‘1’);//得到字符长度
SELECT CHAR_LENGTH(‘1’);//得到字符数

TEXT不能有默认值
CHAR、VARCHAR、TEXT的存储和检索数据的方式都不一样,数据检索的效率:CHAR>VACHAR>TEXT(牺牲空间换时间)

测试TEXT
CREATE TABLE test6(
str1 TEXT
);
INSERT test6 VALUE(‘shshshshshcdnc nm’);
SELECT * FROM test6;

测试枚举类型有且只能选择一个值,每个值都有序号,序号以1开始
CREATE TABLE IF NOT EXISTS text7(
sex ENUM(‘男’,‘女’,'保密 ')
);
INSERT text7 VALUES(‘男’);
INSERT text7 VALUES(‘女’);
INSERT text7 VALUES(‘保密’);
SELECT * FROM text7;
//可以使用序号来选择对应的枚举值
INSERT text7 VALUES(‘1’);
INSERT text7 VALUES(‘2’);
INSERT text7 VALUES(‘3’);
//枚举值可以为空值
INSERT text7 VALUES(‘NULL’);

测试集合类型
CREATE TABLE IF NOT EXISTS text8(
fav SET(‘A’,‘B’,‘C’,‘D’)//可以用序号代替,第一个值以1开始
);
DESC text8;
INSERT text8 VALUES(‘A,C,D’);//保持插入顺序
1 2 4 …
INSERT text8 VALUES(‘B,C,D’);
SELECT * FROM text8;
INSERT text8 VALUES(‘3’);
54

测试日期时间类型
(除了经常使用YEAR来保存年份以外(YEAR占用空间小),其他和日期时间有关的可以通过整型来保存时间戳,方便计算)
在这里插入图片描述

CREATE TABLE IF NOT EXISTS test9(
birth YEAR
);
INSERT test9 values(1901);//最大值是2155
SELECT * FROM test9
INSERT test9 values(‘1985’);//支持字符串的形式
INSERT test9 values(‘12’);显示的是2012
00-69会转换成2000-2069之间
70-99会转换成1970-1999之间
输入0会转换成0000
输入字符串‘0‘会转换成2000('00’与’0’是一样的,都是2000)

测试TIME
CREATE TABLE IF NOT EXISTS test10(
tem TINE
);
INSERT test10 values(‘1 12:12:12’);
依次对应日、时、分、秒
SELECT * FROM test10;
55

INSERT test10 values(‘11:11’);
INSERT test10 values(‘1234’);
INSERT test10 values(‘12’);
INSERT test10 values(‘0’);和INSERT test10 values(0);是一样的
56

字符串类型是以小时、分钟、秒依次来省略的(最先省略小时)

测试DATE
57

CREATE TABLE IF NOT EXISTS test11(
tem2 DATE
);
INSERT test11 values(‘12-6-7’);
INSERT test11 values(‘12/6/7’);
INSERT test11 values(‘12@6/7’);
INSERT test11 values(‘120607’);
依次对应年、月、日
58

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值