数据库学习-MySQL基础篇(一)


注:Mysql技术内幕第五版学习笔记

1. MySQL学习准备(不包括软件安装及配置)

(1) 建立和删除数据库连接

注:这里只简单的学习,更多操作如创建用户,修改密码等后面会仔细的学习

mysql -u root -p123456 --建立与数据库的连接,-u后面跟的是用户名,-p后面跟的是密码名

执行结果
在这里插入图片描述

exit --断开数据库连接

在这里插入图片描述

(2) SQL语句的一些小规则

  • 以;或者\g或者\G结束,其中\G会显示一些统计信息在界面上输出
    在这里插入图片描述
  • 输入多条语句决定但是决定不执行了,可以使用\c来清除
select now(),
version(),
\c

在这里插入图片描述

  • mysql中大小写区分
不区分大小取决于操作系统区分大小
关键字、函数名、存储程序名 、列名、索引名数据库名、表名、视图名触发程序名、别名
  • SQL关键字、函数不区分大小写,但是表名、视图名、数据库名是否区分大小要根据操作系统

(3) Windows下一些有用的快捷键

在这里插入图片描述
在这里插入图片描述

(4) SQL语句的输入输出重定向

可将常用的输入输出保存到文件中等,提高工作效率。
重定向操作符

  • >将命令输出写入到文件或设备(例如打印机)中,而不是写在命令提示符窗口中。
  • <从文件中而不是从键盘中读入命令输入。
  • >>将命令输出添加到文件末尾而不删除文件中的信息。
  • >&将一个句柄的输出写入到另一个句柄的输入中。
  • <&从一个句柄读取输入并将其写入到另一个句柄输出中。
  • |从一个命令中读取输出并将其写入另一个命令的输入中。也称作管道。
mysql MyDataBase < test.sql; --从test.sql中读sql语句并在MyDataBase数据库中执行
mysql MyDataBase < test.sql > test.out; --从test.sql中读语句执行并将输出保存到test.out文件中

下面要开始学了忘,忘了学,学了忘,忘了学,学了忘无限循环的各种语句了,哪个大佬看到我,求告知如何记住这些语句的小技巧,跪谢

2 数据库的创建、选择、更改与删除

(1) 创建

创建一个名为DataBaseStudyTest的数据库,如果改数据库不存在则创建,存在则显示一条warning

CREATE DATABASE IF NOT EXISTS DataBaseStudyTest; --创建
SHOW DATABASES; --查看系统中的数据库

在这里插入图片描述
在这里插入图片描述
注意:如果不加IF NOT EXISTS,如果数据库存在就会报错
在这里插入图片描述
创建数据库是设置数据库的字符集及排序规则

CREATE DATABASE IF NOT EXISTS DataBaseStudyTest CHARACTER SET utf8 COLLATE utf8_icelandic_ci;
SHOW DATABASE DataBaseStudyTest; --查看数据库的定义

在这里插入图片描述

(2) 选择

USE DataBaseStudyTest;

在这里插入图片描述

(3) 更改

ALTER DATABASE DataBaseStudyTest [CHARACTER SET charset] [COLLATE collation];

(4) 删除

DROP DATABASE [IF EXISTS] DataBaseStudyTest;

3. 表的创建、删除、更改

(1) 表的创建

1) 创建表的基本语法
CREATE TABLE TableName(
	ColumnName1 ColumnType1,
	……
	ColumnNameN ColumnTypeN
);

创建一个学生表
在这里插入图片描述

2) CREATE TABLE语句的重要扩展
  • 指定存储特性(存储引擎InnoDB,MyISAM这些,后面详细学习这些的区别,暂时不做了解)
    创建表时指定存储特性,如果未指定则默认未InnoDB,当然也可以更改默认的存储引擎
CREATE TABLE TableName(……) ENGINE = MyISAM;
  • 创建检测表是否存在,如果存在则不创建
CREATE TABLE IF NOT EXISTS TableName(……);
  • 创建临时表
CREATE TEMPORARY TABLE Table(……);

TEMPORARY创建的临时表,创建的临时表会在服务器会话终止时自动消失。临时表的名字可以与永久表的名字相同,且永久表的不会收到任何破坏,当临时表和永久表的名字相同时,永久表就会被隐藏起来不能访问。

  • 根据其它表或者查询结果来创建表
--不能根据原表中列的字迹或者其它表的列来建立表,只能创建和原表一样的空表,数据需要使用insert语句再插入;同时也会复制原表的索引等
CREATE TABLE TableNameNew LIKE TableNameOld; 
--根据select子句的结果创建新的表,包括数据内容,不会复制原表的索引等
CREATE Table TableNameNew SELECT ……
  • 使用分区表
    分区表:让表的内容存储再不同的物理存储位置上,可以通过I/O并行机制来缩短访问时间也可以指定搜索区域。
-- 默认情况下,MySQL会将分区存储在专属于分区表的数据库目录中
CREATE TABLE TableName(……) PARTITION BY ……
--如果想将存储分散到其它不同地方,需要使用DATA_DIRECTORY及INDEX_DIECTORY选项
--例子 根据dt对表格内容进行分区存储
CREATE TABLE LogPartition(
	dt DATATIME NOT NULL,
	info VARCHAR(100) NOT NULL,
	INDEX(dt)
)
PARTITION BY RANGE(YEAR(dt))
(
	PARTITION p0 VALUES LESS THAN (2010),
	PARTITION p1 VALUES LESS THAN (2011),
	PARTITION p2 VALUES LESS THAN (2012),
	PARTITION pMax VALUES LESS THAN MAXVALUE
);

(2) 表的删除

1) 基本语法
DROP TABLE TableName;
2) 重要扩展
  • 同时删除多个表
DROP TABLE TableName1,TableName2……TableNameN;
  • 删除不存在表的判断
DROP TABLE IF EXISTS TableName;--当表不存在时不删除
  • 删除临时表
DROP TEMPORARY TABLE TableName;

(3) 表的更改

进行表的重命名、添加或者删除列、更改列的属性、修改存储引擎等。
基本语法

ALTER TABLE TableName action,……action;
  • 更改列的数据类型
--将students表中的年龄列的数据类型由int改为char
ALTER TABLE students MODIFY age CHAR;
--或者
ALTER TABLE students CHANGE age age CHAR;--列名需要写两边,CHANGE oldName newName
  • 更改表使用的存储引擎(更改后可能会丢失一些东西:如外键约束等)
ALTER TABLE students ENGINE = InnoDB;
  • 对表进行重命名
    对表进行重命名不能使用已有的名字
ALTER TABLE students RENAME TO studentsNew;
--或者
RENAME TABLE students TO studentsNew;--可同时重命名多个表

4. 查看数据库的元数据(数据库及其内部对象)信息

(1) 使用SHOW语句查看元数据(MySQL特有)

  • 列出可以访问的数据库
SHOW DATABASES;
  • 显示数据库的CREATE DATABASE语句
SHOW CREATE DATABASE DataBaseName;

在这里插入图片描述

  • 显示数据库中的表
SHOW TABLES [FROM DataBaseName];--此句不能显示临时表
  • 显示表的CREATE TABLE语句
SHOW CREATE TABLE TableName;

在这里插入图片描述

  • 显示表里的列或者索引信息
SHOW COLUMNS FORM TableName;
SHOW INDEX FROM TableName;
  • 查看表使用的存储引擎
SHOW TABLE STATUS LIKE TableName;--使用SHOW CREATE TABLE TableName;也可以查看表使用的存储引擎

注意:一些SHOW语句后面可接LIKE或者WHERE子句

(2) 使用INFORMATION_SCHEMA

可以把INFORMATION_SCHEMA可看作一个虚拟的库,其中的表是不同数据库元数据的视图。
在这里插入图片描述
可以使用如下语句进行查看INFORMATION_SCHEMA中的数据

SELECT …… FROM INFROMATION_SCHEMA.TableName;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值