Mysql--DDL语句

(本节的mysql的DDL语句都是在mysql的命令行中演示的!)

一.概念

数据库:即存储数据的仓库

二.操作

1.启动/停止mysql

方法一:win+r ,输入services.msc

方法二:命令行输入指令

启动是net start mysql80 停止是net stop mysql80

点击++以管理员身份运行++!

然后输入指令:

2. Mysql的客户端连接

方法一:打开mysql命令行客户端

输入密码后:

由上图的第4行可知这个已安装的mysql是 社区版本的8.0.44

方法二.

输入命令 mysql [-h 127.0.0.1] [-p 3306] -u root -p

两个括号里分别是所连接的 ip和端口 ,并且这2参数都是可以省略的,默认连接的是本机的3306

-u指定用户,以root用户进行连接

-p指定密码

那么这种方式,要想在任意目录下执行mysql指令,就首先需要配置PATH变量

如何配置PATH变量?

此电脑右键-属性-高级系统设置-环境变量-path-编辑-新建

我们需要在这里再安装一个mysql的环境变量

上图需要复制粘贴 刚才所安装的mysql的位置(bin目录下)

只要看到上图的-GPL 这一行,就代表mysql已经连接成功了!!!

3.SQL的通用语法

(1)SQL语句可以单行写/多行写,以分号结尾

(2)SQL语句不区分大小写,但建议关键字使用大写

(3)单行注释:使用 -- 或者 # ,多行注释:使用 /* */

4.SQL语句的分类

(1)DDL

是用来定义数据库 ,以及数据库中的 ,以及表中的字段的(即用来操作数据库,表,字段)

(2)DML

对表中数据进行增删改

(3)DQL

对数据库表中数据进行查询

(4)DCL

创建用户,控制数据库访问权限

三.通过DDL语句如何来操作数据库?

1.查询

(1)查询所有数据库

SHOW DATABASES;

(2)查询当前数据库

SELECT DATABASE();

2.创建

CREATE DATABASE 数据库名;

++上手实操:++

上图:首先开启mysql80,然后连接客户端,然后查询所有数据库,上图显示的有4个数据库(这4个数据库是安装时就自带的),然后创建数据库,起名为itcast,下行回复了Query OK,则说明当前数据可以创建成功!

创建成功后,可以再查询所有数据库:

那如果再重复创建已存在的itcast,则会报错error

那么我们可以给个条件:

上图这条语句的意思是如果不存在,则创建,如果存在,则不创建

接下来再次执行:查询当前所在的所有数据库

依然是这5个,并没有改变

注意:这里还有一个快捷方式:我们可以通过电脑键盘上的上下键,来查询到我们之前执行过的sql语句

那我现在再创建一个不存在的数据库,命名为test01 创建后再查看

3.删除

DROP DATABASE 数据库名;

++上手实操:++

根据上图内容可知:

首先删除itcast数据库,然后展示

然后尝试删除不存在的数据库test02,发现会在下一行进行报错

所以就是用drop database if exists test02;这句话的意思是 如果存在test02,则删除,如果不存在,则不删除。这时就不会报错。然后再次展示,可见未删除,因为不存在

4.使用

USE 数据库名;

++上手实操:++

比如说我这时候想要使用test01这个数据库,输入指令后显示Database changed 代表此时已经切换到了test01这个数据库。

如果已忘记当前所处于哪一个数据库?就使用到:

如果想要切换到其他的数据库,就还是,使用use 数据库名

四.通过DDL如何来操作数据库中所存储的表结构?

1、查询当前数据库中所有表

show tables;

++实操:++

显示empty,说明当前数据库中没有表

那么我现在切换到另一个数据库中,再展示该数据库中的表,结果如下:

2.创建

注意上图,是通过comment来加上注释的!

eg. id int comment '代表编号',

注意上图的中括号,不是在编写语句时加入,而是代表中括号之内的语句是可写可不写的!

注意:在sql中,字符串的类型是varchar,如果写varchar(50),就代表该字符串大小是50

那么接下来如何使用sql语句将下面表创建出来?

++实操:++

然后再去查询该数据库下的所有的表,如下图所示,test01这个数据库中现在只有一个表tb_user

那么现在如果还想知道这张表里的所有字段,就通过下面的方法(即3.查询表结构中的所有字段)

3、查询表结构中的所有字段

desc 表名;

++接上面实操:++

4.查询指定表中的详细信息

show create table 表名;

5.mysql当中支持的数据类型

(1)数值类型

上图的最后一行的精度和标度,举例说明

129.47 它的精度就是5,标度就是2

如果写某班级学生的成绩score,假设最多保留1位小数,最大数字是100,则score double (4,1);

这里的精度是4,标度是1,代表成绩最长有4位,小数点后面保留1位。
举例说明:假如说 age,如果写age int ; 则代表需要给 age 4个字节的大小的空间,那么就显得有些浪费了,所以只需要 age tinyint; 即只给age1个字节大小的空间,写年龄大小即可。又因为写年龄大小不可能是负数,所以写成 age tinyint unsigned;

(2)字符串类型

  • char的性能好,但是它是"定长字符串",如果是char(10),即使你存储一个字符,他也会占用10个字符的空间,未占用空间会使用空格进行补位。
  • varchar性能较差,但是它是"变长字符串",如果是varchar(10),如果你存储一个字符,那么就会占用1个字符的空间;如果是2个字符,那么就会占用2个字符的空间。
  • 假设现在需要注册一个用户名username,那么这时候使用varchar会更好一些,因为对于用户名,这个用户有可能输入的是1位,有可能10位,有可能40位。即 username varchar(50)
  • 假如存储性别gender,那么使用char会更好一些,因为就只会存储一个汉字,不会是个变长字符串,而且char的性能还好。即 gender char(1)

(3)日期类型

注意:倒数2个都是描述年月日时分秒,但是区别在于最后一个是一个时间戳,并且范围是到2030-01-19

所以一般比较常用的就是 date time datetime

由上图可知:date是年月日 time是时分秒 datetime是年月日时分秒

假如存储生日birthday,那么一般就使用date

++实操:++

那如果想要将上图的表格中的某些内容做出修改/删除,该怎么操作?

6.表操作的 -- 修改、删除操作

(1)添加字段

实操:

假如添加一个新的字段"昵称"为nickname,类型为varchar(20)

(2)修改旧字段的数据类型(即:只修改字段的类型)

(3)修改旧字段为新字段,旧类型为新类型(即:字段和类型都要修改!)

实操:

将emp表的nickname字段修改为username,类型为varchar(30)

那是否修改成功?来验证一下(通过desc 表名):

(4)删除字段

++实操:++

将list2表中的字段username删除

(5)修改表名

++实操:++

将list02这个表名修改成list99

(6)删除表

++注意:中括号内数据是可写 / 可不写的数据!++

(7)删除指定的表同时会重新创建该表

这个方法一般不使用!!一般使用第(6)个这种删除,这种删除在删除表的同时,数据也会被删除

相关推荐
2301_781392523 小时前
MySQL格式化数据展示——分页查询
java·数据库·mysql·性能优化
va学弟3 小时前
SQL 进阶知识——多表关联与约束
数据库·sql
一 乐3 小时前
学生宿舍管理|基于springboot + vue学生宿舍管理系统(源码+数据库+文档)
java·数据库·vue.js·spring boot·后端·助农电商系统
heze093 小时前
sqli-labs-Less-23
数据库·mysql·网络安全
米汤爱学习3 小时前
Redis-漏洞
数据库·redis·缓存
wWYy.3 小时前
详解redis(7):数据结构List
数据库·redis·缓存
砚边数影4 小时前
时序数据库国产化替代,破局迁移“三不”困局
数据库·时序数据库·kingbase·kingbasees·金仓数据库
专注于大数据技术栈4 小时前
Redis 中 USED 和 RSS
数据库·redis·缓存