SQL简介
SQL语言介绍
SQL全称:Structured Query Language,是结构化查询语言,用于访问和处理数据库的标准的计算机语言。
SQL的特点
- 具有综合统一性,不同数据库的支持的SQL稍有不同。
- 非过程化语言。
- 语言简捷,用户容易接受。
- 以一种语法结构提供两种使用方式。
SQL语言的组成
- 数据定义语言(DDL)
- 数据操纵语言(DML)
- 数据查询语言(DQL)
- 数据控制语言(DCL)
SQL语法特点
- SQL对关键字的大小写不敏感。
- SQL语句可以单行或者多行书写,以分号结束。
- SQL的注释:
- 单行注释:
# 或-- (其中-- 后需要有一个空格) - 多行注释:
/*...*/
SQL和数据库管理系统(DBMS)的关系
SQL是一种用于操作数据库的语言,SQL适用于所有关系型数据库。
MySQL简介
MySQL的介绍
MySQL是一个关系型数据库,使用的是SQL语言。
MySQL的特点
- MySQL数据库是用C和C++语言编写的,以保证源码的可移植性。
- 支持多个操作系统例如:Windows、Linux、Mac OS等等。
- 支持多线程,可以充分的利用CPU资源。
- 为多种编程语言提供API,包括C语言,Java,PHP,Python语言等。
- MySQL优化了SQL算法,有效的提高了查询速度。
- MySQL开放源代码且无版权制约,自主性强、使用成本低。
- MySQL历史悠久、社区及用户非常活跃,遇到问题,可以很快获取到帮助。
MySQL常用图形管理工具
如果日常的开发和维护均在类似DOS窗口中进行,对于编程初学者来说,上手就略微有点困难,增加了学习成本。因此一般使用MySQL图形管理工具来连接MySQL,然后在图形化界面上操作MySQL。
MySQL Workbench
MySQL Workbench MySQL 是官方提供的图形化管理工具,支持数据库的创建、设计、迁移、备份、导出和导入等功能,并且支持 Windows、Linux 和 mac 等主流操作系统。
MySQL下载
MySQL 8.0保姆级下载、安装及配置教程 跟着视频走一遍,可以顺畅地进行下载(不建议看视频下面的博客链接,没有视频好理解)。
注意
- 在安装的第一步“Choosing a Setup Type”时,可自选存储地址,不过建议直接在默认地址上改盘符,如果存储地址是已建立的文件夹,会有警告。
- 如果是选用的是.zip压缩包安装MySQL,建议参照MySQL8.0 zip安装。如果过程中出现问题(如忘记密码或密码错误),可参照MySQL密码错误处理。
MySQL数据库基本操作
前提说明
-
后面语句中的中括号代表括号和括号内的内容可写可不写(仅作逻辑判断用,防止操作失败),根据实际需求决定。 例:删除数据库操作语句drop database [if exists] 数据库名; 在需要删除的数据库存在时, drop database if exists 数据库名 和drop database 数据库名 效果一样。 在需要删除的数据库不存在时, drop database if exists 数据库名 不会报错,而drop database 数据库名 会提示操作失败。 -
SQL语句以; 结尾,因此如果是在DOS界面进行MySQL操作, 在需要换行时直接按Enter 键即可。只有出现; ,系统才会判断SQL语句结束。 -
由于SQL语句不区分大小写,为了方便学习时的理解,因此语句都用小写形式。
DDL
DDL(Data Definition Language),数据定义语言,该语言部分包括以下内容:
-
对数据库的常用操作
功能 | SQL语句 |
---|
查看所有的数据库 | show databases; | 创建数据库 | create database [if not exists] 数据库名 [charset=XXX(编码格式)]; | 切换到(选择要操作的)数据库 | use 数据库名; | 删除数据库 | drop database [if exists] 数据库名; | 修改数据库编码格式 | alter database 数据库名 character set 编码格式; |
-
对表结构的常用操作
-
创建表
-
创建表的格式 创建表是构建一张空表,指定这个表的名字,这个表有几列,每一列叫什么名字, 以及每一列存储的数据类型。 格式规范: create table [if not exists]表名(
字段名1 类型[(宽度)] [约束条件] [comment '字段说明'],
字段名2 类型[(宽度)] [约束条件] [comment '字段说明'],
字段名3 类型[(宽度)] [约束条件] [comment '字段说明']
)[表的一些设置][comment '表说明'];
注:这里中括号中的内容建议写,因为写了后,在查看表的创建语句时可以显示出来, 方便理解。 -
数据类型 数据类型是指在创建表的时候为表中字段指定数据类型,只有数据符合类型要求才能存储起来。 使用数据类型的原则是:够用就行,尽量使用取值范围小的,而不用大的,这样可以更多的节省存储空间。
-
数值类型 例: 假设有一个字段名为年龄 ,那么定义语句为:
age tinyint unsigned comment ‘年龄’
注: 因为数值类型的实际大小是系统限定好的,因此[(宽度)] 这一部分不用写, 应该注意的是[约束条件] 这一部分,有SIGNED 和UNSINGED 之分。 -
日期和时间类型 例: 假设有一个字段名为生日 ,那么定义语句为:
birthday date comment ‘生日’
注: 对于日期和时间类型,[(宽度)] 和[约束条件] 都不用写。 -
字符串类型 例: 假设有一个字段名为姓名 (此字段不能超过10个字符),那么定义语句为:
name varchar(10) comment ‘姓名’
注: 因为字符串类型的实际大小与存储的字符个数有关,因此[(宽度)] 这一部分必须写,而[约束条件] 不用写。 值得注意区分的是, char(n) 表示无论字符串有多少个字符,系统都为其分配n个char的大小,多余的字符用空格 表示。(性能高,内存利用稍差) varchar(n) 表示系统最多为其分配n个char的大小,实际大小与字符串的字符个数匹配。(性能稍低,内存利用好) -
其他操作
功能 | SQL语句 |
---|
查看当前数据库的所有表名称 | show tables; | 查看指定某个表的创建语句 | show create table 表名; | 查看表结构 | desc 表名; | 删除表 | drop table 表名; |
-
修改表结构
-
添加列 语法: alter table 表名 add 列名 类型 [(长度)] [约束]; 例: #为student表添加一个新的字段为:系别 dept 类型为 varchar(20)
alter table student add dept varchar(20);
-
修改列名和类型 语法: alter table 表名 change 旧列名 新列名 类型 [(长度)] [约束]; 例: #为student表的dept字段更换为department varchar(30)
alter table student change dept department varchar(30);
-
删除列 语法: alter table 表名 drop 列名; 例: #删除student表中department这列
alter table student drop department;
-
修改表名 语法: rename table 表名 to 新表名; 例: #将表student改名成 stu
rename table student to stu;
DML
DML(Data Manipulation Language),数据操作语言,用来对数据库中表的数据记录进行更新。
关键字:
意义 | 关键字 |
---|
插入 | insert | 删除 | delete | 更新(修改) | update |
-
数据插入 语法: insert into 表 (列名1,列名2,列名3...) values (值1,值2,值3...); //向表中插入某些
insert into 表 values (值1,值2,值3...); //向表中插入所有列
例: insert into student(sid,name,gender,age,birth,address,score) values(1001,'男',18,'1996-12-23','北京',83.5);
insert into student values(1001,'男',18,'1996-12-23','北京',83.5);
-
数据更新(修改) 语法: update 表名 set 字段名=值,字段名=值...;
update 表名 set 字段名=值,字段名=值... where 条件;
例: -- 将所有学生的地址修改为重庆
update student set address = '重庆’;
-- 讲id为1004的学生的地址修改为北京
update student set address = '北京' where id = 1004
-- 讲id为1005的学生的地址修改为北京,成绩修成绩修改为100
update student set address = '广州',score=100 where id = 1005
-
数据删除 语法: delete from 表名 [where 条件];
truncate table 表名 或者 truncate 表名;
例: -- 1.删除sid为1004的学生数据
delete from student where sid = 1004;
-- 2.删除表所有数据
delete from student;
-- 3.清空表数据
truncate table student;
truncate student;
注: delete和truncate的原理不同。 delete只删除表的内容。 而truncate类似于drop table,可以理解为是先将整个表删除,然后再重新创建该表。
————————————————这是分割线———————————————————— 此篇博客仅作个人安装以及学习记录,后期仍将不断更新。 学习内容以及图片、代码来自黑马程序员 MySQL数据库入门到精通 不得不说,对于新手而言,黑马程序员的B站课YYDS!(已投币)
|