Mysql学习笔记之SQL-1

上篇文章我们介绍了Mysql的安装,这篇文章我们介绍Mysql的操作语言SQL

1. 简介

sql全称(Structured Query Language)是结构化查询语言,操作关系型数据库的编程语言,定义了一套操作关系型数据库统一标准

2. sql分类

sql语句,根据其功能,主要分为四类:DDL、DML、DQL、DCL,具体说明如下表所示

简写 全称 说明
DDL Data Definition Language 数据定义语言,定义数据库、数据表、数据字段
DML Data Manipulation Language 数据操作语言,对数据库表中的数据进行增删改
DQL Data Query Language 数据查询语言,查询数据库中表的记录
DCL Data Control Language 数据控制语言,创建数据库用户、控制数据库的访问权限

这篇文章先介绍数据库定义语言(DDL)

3. 数据库定义语言(DDL)

首先我们要知道数据是以数据表的形式存储在数据库中。而数据表需要挂存储在数据库中,如下图所示

上图1中可以清晰的看到mysql数据服下存在test数据库,test数据库下存在student数据表,学生数据就存放在数据表student中。

图2中student数据表共有四个字段,id、name、sex、age,分别存储学号、名字、性别、年龄。

那么创建数据库、数据表、数据字段就需要用到数据库定义语言(DDL)。

4. 数据库操作

4.1创建数据库

语法:

sql 复制代码
create database [ if not exists ] 数据库名 [character set 字符集 ] [ collate 排序
规则 ] ;

说明:

1.[]中的内容是非必须的,可以省略

2.if not exists 表示当要创建的数据库不存在时,才进行创建,否则跳过

3.character set 用来设置数据库的字符集。

字符集规定了字符在数据库中的存储格式,比如占多少空间,支持哪些字符等等,例如如果字符集设置的不恰当就会造成中文字符乱码等问题,mysql中支持的字符集有很多,可以通过sql查询

sql 复制代码
SHOW CHARSET;

4.collate 用来指定排序规则

案例:

创建一个数据库,名为schooldb,设置字符集为utf8mb4,且如果数据库已经存在则跳过

1.打开Navicat,点击新建查询

在编辑器中输入sql语句,点击运行

sql 复制代码
CREATE DATABASE IF NOT EXISTS `schooldb` CHARACTER SET 'utf8mb4';

这样数据库就创建成功了

4.2 删除数据库

语法:

sql 复制代码
drop database [ if exists ] 数据库名 ;

案例:

删除上面创建的schooldb

sql 复制代码
drop database if exists schooldb;

5.数据表操作

5.1 创建数据表

语法:

sql 复制代码
CREATE TABLE 表名(
字段1 字段1类型 [ COMMENT 字段1注释 ],
字段2 字段2类型 [COMMENT 字段2注释 ],
字段3 字段3类型 [COMMENT 字段3注释 ],
......
字段n 字段n类型 [COMMENT 字段n注释 ]
) [ COMMENT 表注释 ] ;

说明:

\] 内为可选参数,最后一个字段后面没有逗号 **案例** 创建students表,包含学号,学生姓名,性别,年龄字段 ```sql CREATE TABLE `students` ( `id` int COMMENT '学号', `name` varchar(255) COMMENT '姓名', `sex` varchar(2) COMMENT '性别', `age` int COMMENT '年龄' )COMMENT '学生表'; ``` 在Navicat中执行sql语句,即可创建成功数据表students。 ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/1dabf49e1bb048cb852a76fbad4dd011.png) ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/9b62e75401254349b9e5432088b8e507.png) ### 5.2 修改数据表 在实际应用中经常会遇到给已经创建好的数据表中,修改、新增、删除字段,又或者修改某个字段的类型、长度等。 1.添加字段 ```sql ALTER TABLE 表名 ADD 字段名 类型 (长度) [ COMMENT 注释 ] [ 约束 ]; ``` **案例:** 给students表中添加班级字段 ```sql ALTER TABLE `students` ADD COLUMN `class` varchar(100) COMMENT '班级'; ``` 2.修改数据类型 ```sql ALTER TABLE 表名 MODIFY 字段名 新数据类型 (长度); ``` 3.修改字段名称和字段类型 ```sql ALTER TABLE 表名 CHANGE 旧字段名 新字段名 类型 (长度) [ COMMENT 注释 ] [ 约束 ]; ``` **案例:** 将stutents表中的班级字段修改为学分字段,类型为int ```sql ALTER TABLE `students` CHANGE COLUMN `class` `credit` int COMMENT '学分' ; ``` 4.删除字段 ```sql ALTER TABLE 表名 DROP 字段名; ``` **案例:** 删除学分字段 ```sql ALTER TABLE `students` DROP `credit`; ``` 5.修改表名 ```sql ALTER TABLE 表名 RENAME TO 新表名; ``` ### 5.3 删除数据表 语法: ```sql DROP TABLE [ IF EXISTS ] 表名; ``` **案例:** 删除students表格 ```sql DROP TABLE IF EXISTS students; ``` ## 6 扩展 在熟悉sql语句操作数据库或数据表后,在实际应用中可以使用Navicat中使用可是化界面完成数据库的操作。 1.新建数据库 ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/5a95adf38dad42d1b354aacf49384b91.png) ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/a7e6df65062e4d4185ddf03670e1602a.png) 2.删除数据库 ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/d51c05f3e16b40b2874b1e589c6fb482.png) 3.新建数据表 ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/42cf9479305e43f2addf65575e5b9b65.png) ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/fbdce32c8d96408cbd7e3aa26991bd8e.png) 4.修改数据表 ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/73c85982a64b4b9db6c962af4b3437f9.png) ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/14fa2ec4aa4e4c88b92f9c4d4c089c62.png) 5.删除数据表 ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/44b091f6a2ff49c5939f1c8438c79176.png)

相关推荐
nbsaas-boot5 小时前
Java 正则表达式白皮书:语法详解、工程实践与常用表达式库
开发语言·python·mysql
sun0077007 小时前
mysql索引底层原理
数据库·mysql
程序员秘密基地7 小时前
基于html,css,vue,vscode,idea,,java,springboot,mysql数据库,在线旅游,景点管理系统
java·spring boot·mysql·spring·web3
叁沐10 小时前
MySQL 11 怎么给字符串字段加索引?
mysql
淮北49415 小时前
最简单的实验室资产管理系统,使用Flask,mysql,html(四、知识补充)
mysql·flask·html
神仙别闹16 小时前
基于Java+MySQL实现(Web)可扩展的程序在线评测系统
java·前端·mysql
果子⌂18 小时前
Docker-构建镜像并实现LNMP架构
mysql·nginx·docker·容器·架构·php
Trust yourself24319 小时前
使用阿里云/腾讯云安装完成mysql使用不了
mysql·阿里云·腾讯云
亲爱的非洲野猪21 小时前
Oracle与MySQL详细对比
数据库·mysql·oracle
Matrix7021 小时前
Navicat实现MySQL数据传输与同步完整指南
数据库·mysql