MyAQL学习(一)—— 基本操作
创始人
2024-06-03 05:12:52
0

1.1 简介

MySQL是一种关联数据库管理系统关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。

1.2 安装

在ubuntu下:

apt-get install mysql-server mysql-client libmysqlclient-dev

要记得密码,会用得着

1.3 mysql数据类型

(1)整形

在这里插入图片描述

(2)浮点型

在这里插入图片描述
设一个字段定义为float(5,3),如果插入一个数123.45678,实际数据库里存的是123.457,但总个数还以实际为准,即6位。

(3)定点数

浮点型在数据库中存放的是近似值,而定点类型在数据库中存放的是精确值
decimal(m,d) 参数m<65 是总个数,d<30且 d

(4)字符串

在这里插入图片描述

  • char和varchar:
    1.char(n) 若存入字符数小于n,则以空格补于其后,查询之时再将空格去掉。所以char类型存储的字符串末尾不能有空格,varchar不限于此。

    2.char(n) 固定长度,char(4)不管是存入几个字符,都将占用4个字节,varchar是存入的实际字符数+1个字节(n<=255)或2个字节(n>255),所以varchar(4),存入3个字符将占用4个字节。

    3.char类型的字符串检索速度要比varchar类型的快。

  • varchar和text:
    1.varchar可指定n,text不能指定,内部存储varchar是存入的实际字符数+1个字节(n<=255)或2个字节(n>255),text是实际字符数+2个字节

    2.text类型不能有默认值。

    3.varchar可直接创建索引,text创建索引要指定前多少个字符。varchar查询速度快于text,在都创建索引的情况下,text的索引似乎不起作用

(5)二进制数据

  • BLOB和text存储方式不同,TEXT以文本方式存储,英文存储区分大小写,而Blob是以二进制方式存储,不分大小写。
  • BLOB存储的数据只能整体读出。
  • TEXT可以指定字符集,BLOB不用指定字符集。

(6)日期时间类型

在这里插入图片描述
若定义一个字段为timestamp,这个字段里的时间数据会随其他字段修改的时候自动刷新,所以这个数据类型的字段可以存放这条记录最后被修改的时间。

(7)数据类型的属性

在这里插入图片描述

1.4 mysql的基本操作

(1)登录MySQL

mysql -u root -p

登录上去了:
在这里插入图片描述

(2)查看所有数据库

show databases;

结果如下(默认只有红线的这四个):
在这里插入图片描述

(3)使用数据库

use mysql

如果想要切换到 sys 数据库,直接use sys就行:
在这里插入图片描述

(4)查看所有表

show tables;

在 mysql 下查看所有的表:
在这里插入图片描述
在这里插入图片描述

(5)查看所有用户

select user from user;

从 user 这张表里查看用户(默认只有前四个):
在这里插入图片描述

(6)创建用户

create user "test01"@"localhost" identified by "123456";

创建一个用户名为 test01localhost表示只有本机用户才能使用, 密码是:123456

创建成功如下图所示:
在这里插入图片描述

(7)修改密码

set password for "test01"@"localhost" = PASSWORD("888888");

将 test01 这个用户的密码改为:888888

结果如下:
在这里插入图片描述

(8)授权操作

grant select on *.* to "test01"@"localhost"; 

对 test01 授予在所有数据库的所有表具有查询权限

结果如下:
在这里插入图片描述

(9)退出 mysql

exit

结果如下:
在这里插入图片描述

(10)再次登录自己创建的用户

mysql -u test01 -p

登录刚刚创建的用户 test01 , 输入密码,结果如下所示:
在这里插入图片描述
登录上之后,进入 mysql 数据库,可以 尝试 create 权限,发现不能创建,因为我们刚刚只赋予了该用户 select权限:
在这里插入图片描述
因此该用户啊具有 select的权限:
在这里插入图片描述

(11)给test01加上create权限

首先退出myql,利用 root 用户登录:
在这里插入图片描述
然后给 test01 用户授予 creater 的权限:
在这里插入图片描述
然后退出 mysql ,再用 test01 这个用户登录
在这里插入图片描述

利用命令:create database test01_database;,创建一个database:
在这里插入图片描述
可以看到,此时 test01 这个用户具有了 create 的权限了。

(12)创建数据库

create database test01_database;

(13)创建表

create table int_test (
tiny_int tinyint,
small_int smallint,
mudium_int mediumint,
common_int int,
big_int bigint
);

在这里插入图片描述

(14)显示表结构

describe int_test;

在这里插入图片描述

(15)插入数据

insert into int_test values(1,1,1,1,1);
insert into int_test values(200,1,1,1,1);  // 会超出范围,插入失败
insert into int_test values(1,1,1,'a',1); // 插入不正确的类型数据

在这里插入图片描述

(16)创建学生表

create table student (
name varchar(10) not null,
age tinyint unsigned not null,
sex char(6)
);

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

(17)修改表

把表的名字改为:stu

alter table student rename stu;

删除表中的字段,这里把 sex 这个字段给删了

alter table student drop sex;

在这里插入图片描述
增加一个字段,这里把刚刚删除的sex又增加回来了:

alter table student add sex char(6);

在这里插入图片描述
增加 id 这一选项,其中unsigned表示不能为负;not null 表示不能为空;primary key 表示不能重复;auto_increment 表示id是递增的;first 表示把 id 放在最前面

alter table student add id int unsigned not null primary key auto_increment first;

在这里插入图片描述
student这个表添加生日 birth 这个选项,date表示日期类型,after name 表示放在name的后面

alter table student add birth date after name;

在这里插入图片描述
给student添加 tel 这个选项,其中 default '-'表示默认 - 填充:

alter table student add tel char(11) default '-';

在这里插入图片描述

(18)插入数据

全部的项目都插入数据:

insert into student (id, name, birth, age, sex, tel) values (1000, "jack", "1998-4-24", 25, "man", "123456789");

在这里插入图片描述
只插入一部分数据,其中 id 由于设置了递增,所以会自动在前一个数据上加一

insert into student (name, birth, age, sex, tel) value("tom", "1990-9-9", 30, "man", "111111111");

在这里插入图片描述
也可以同时插入多条数据:

insert into student values(1002, "rose", "1997-1-15", 22, "female", "22222222222"), (1003, "frank", "2000-7-14", 15, "male", "33333333333");

在这里插入图片描述
由于 tel 设置了 default ‘-’ ,所以插入时不写这个,他会自动采用默认值:

insert into student (id, name, birth, age, sex) values(1004, "aa", "1996-10-21", 24, "male");

在这里插入图片描述
这里一开始是不支持中文的(可以看下面(20)修改字符集进行解决):

insert into student values(1005, "张三", "1992-11-11", 30, "male", "44444444444");

在这里插入图片描述

(19)查询数据

* 号查询表中所有数据:

select * from student;

在这里插入图片描述
只查名字:

select name from student;

在这里插入图片描述
只查询 id > 1002 的人的名字:

select name from student where id > 1002;

在这里插入图片描述
只查询 id 在1001 至 1004 之间的人的名字:

select name from student where id between 1001 and 1004;

在这里插入图片描述

(20)修改字符集(字符编码格式)

指定 utf8 的编码格式:

alter table student convert to character set utf8;

现在就可以用中文了
在这里插入图片描述

(21)修改数据

将 name 为 aa 这个人的电话改成 00000000000:

update student set tel = "00000000000" where name = "aa";

在这里插入图片描述

(22)删除记录

删除 id 为 1000 的这个人:

delete from student where id = 1000;

在这里插入图片描述

(23)删除表

drop table sutdent;

在这里插入图片描述

(24)删除数据库

drop database test01_database;

在这里插入图片描述

相关内容

热门资讯

监控摄像头接入GB28181平... 流程简介将监控摄像头的视频在网站和APP中直播,要解决的几个问题是:1&...
Windows10添加群晖磁盘... 在使用群晖NAS时,我们需要通过本地映射的方式把NAS映射成本地的一块磁盘使用。 通过...
protocol buffer... 目录 目录 什么是protocol buffer 1.protobuf 1.1安装  1.2使用...
Fluent中创建监测点 1 概述某些仿真问题,需要创建监测点,用于获取空间定点的数据࿰...
educoder数据结构与算法...                                                   ...
MySQL下载和安装(Wind... 前言:刚换了一台电脑,里面所有东西都需要重新配置,习惯了所...
MFC文件操作  MFC提供了一个文件操作的基类CFile,这个类提供了一个没有缓存的二进制格式的磁盘...
在Word、WPS中插入AxM... 引言 我最近需要写一些文章,在排版时发现AxMath插入的公式竟然会导致行间距异常&#...
有效的括号 一、题目 给定一个只包括 '(',')','{','}'...
【Ctfer训练计划】——(三... 作者名:Demo不是emo  主页面链接:主页传送门 创作初心ÿ...