day1:数据类型、数据库的操作

1 数据库的连接与配置

(1) 连接MySQL

在DOS窗口下,键入mysql -uroot -p回车,然后输入root用户密码

mysql -uroot –p密码 -h (服务器ip,如果是本机,则是localhost或127.0.0.1)
-u 用户
-p 密码(注意后面不要有空格)
-h 服务器(本地是localhost或127.0.0.1)

退出界面
exit 或者 quit
在这里插入图片描述
在这里插入图片描述

(2) 打开或关闭MySQL服务

当mysql是关闭状态,则连接不成功
如何查看是关闭还是开启?
在桌面右击“计算机”——管理——服务和应用程序——服务——双击“服务”
在服务中找到MySQL
在这里插入图片描述
如果连接mysql是显示下面的信息,说明是没有开启MySQL服务
在这里插入图片描述
也可以通过以下命令来开启或关闭
开启:net sart mysql
关闭:net stop mysql
在这里插入图片描述

(3) 配置mysql

连接mysql后,键入 \s,查看当前状态
在这里插入图片描述
将Server characterset:和Db characterset:两项编码方式改成utf8,防止出现乱码。
如何改?打开配置文件
在这里插入图片描述
把[client],[mysql],[mysqld]设置成如下

[client] 
loose-default-character-set = utf8
default-character-set=utf8

[mysqld]
character-set-server=utf8

[mysql]
default-character-set=utf8

客户端 [mysql],服务器端 [mysqld]
修改之后重启MySQL服务,再重新连接查看编码方式,可以发现编码方式发生改变
在这里插入图片描述
若修改了配置文件后无法重启,那么需要检查检查my.ini配置文件,是否有语法错误还是参数错误

(3)MySQL常用命令

显示当前版本
在这里插入图片描述
SELECT NOW();显示当前日期时间
在这里插入图片描述
SELECT USER();显示当前用户
在这里插入图片描述
命令后面加 \c,使该命令不被执行
在这里插入图片描述
SELECT VERSION()没有被执行

开启输出日志 \T 文件路径
在这里插入图片描述
输入的命令和显示结果将是被写入相应的文件
在这里插入图片描述

(4)MySQL语句的规范

(1)关键字与函数名称全部大写
(2)数据库名称、表名称、字段名称等全部小写
(3)SQL语句支持折行操作,只要不把单词、标记或引号字符串分割为两部分,可以在下一行继续写
(4)数据库名称、表名称、字段名称等尽量不要使用MySQL的保留字,如果需要使用的时候需要使用反引号(``)将名称括起来

2 数据库操作

(1)查看当前服务器下的数据库列表

SHOW {DATABASES|SCHEMAS};

显示存在的数据库的时候,有三个比较特殊,不能对这三个库进行操作,因为报错了系统信息,包括用户信息,权限信息等等
在这里插入图片描述

(2)创建数据库

CREATE {DATABASE | SCHEMA} [IF NOT EXISTS] db_name [[DEFAULT] CHARACTER SET [=] charset_name];

创建一个数据库相当于在磁盘中创建了一个目录
在这里插入图片描述
在mysql目录下,会有一个data文件夹,里面就会出现一个刚刚新建的数据库
在这里插入图片描述
也可以在这个目录下手动建立一个数据库,即通过鼠标右击,然后新建文件夹,例如新建一个名为“test_1”的文件夹(数据库)
在这里插入图片描述
通过SHOW DATABASE 可以显示出来
在这里插入图片描述
如果新建的数据库与已有数据库重名,则会报错,如果不知道有没有,可以这么写:

CREATE DATABASE IF NOT EXISTS maizi1;

如果不存在则创建,如果存在,则返回一个警告,但不会报错,即SQL语句没有问题,而是把错误当成了警告
在这里插入图片描述
查看上一步操作产生的警告

SHOW WARNINGS;

也可以在创建额时候指定编码方式

CREATE DATABASE test2 CHARACTER SET gbk;

在这里插入图片描述

(3)查看数据库定义

主要是查看编码方式

SHOW CREATE {DATABASE|SCHEMA} db_name;

在这里插入图片描述

(4)修改编码方式

ALTER {DATABASE|SCHEMA} db_name [DEFAULT] CHARACTER SET [=] charset_name;

在这里插入图片描述

(5)打开指定数据库

USE db_name;

(6)查看当前打开的数据库

SELECT {DATABASE()|SCHEMA()};

在这里插入图片描述

(7)删除数据库

DROP {DATABASE()|SCHEMA()} db_name;

在这里插入图片描述
删除test_1和test2两个数据库
在这里插入图片描述

3 MySQL中支持的数据类型

在这里插入图片描述

(1)整型

在这里插入图片描述
只需要记住两种整型 TINYINT和INT即可,如果超过了最大值 那就以最大值为准。
另外,经常使用 TINYINT(1)来表示布尔型,0为false,其余为true,只占一个字节。

(2)小数型

在这里插入图片描述
单精度浮点型: float,非精确数,通常不设定长度
双精度浮点:double,非精确数,通常不设定长度
定点型:decimal,精确数,通常需要设定长度,形式为:decimal(总长, 小数位数)

浮点型之所以是非精确数,是因为浮点数在不同平台精度不一样,而且经常涉及四舍五入,3.14可能在内存中是3.139999999,但定点数却一样,因为定点数内部是以字符串的形式存储,不涉及四舍五入

(3)字符串型

在这里插入图片描述

char(长度非字节) 定长 不够用空格补 多了截掉
varchar 可变长度根据字符长度自动的调整
char(10)和verchar(10)都是最多只能存10位,两者的区别,前者输入的数据不足10时,自动填充空格,后者则按原来的位数。
char占用的空间大,但效率高,verchar根据实际位数占用空间,但效率低。
定长用char变长用varchar,存取文章用text,数据检索的效率CHAR>VARCHAR>TEXT
性别可以用枚举
集合和枚举的区别,集合可以保存多个值,而枚举只能一个
只要记住char varcha text set enum五种,另外三种不需要记。

(4)时间日期型

在这里插入图片描述
只要YEAR,即年份,时间戳用int来处理。

(5)查看帮助手册

在这里插入图片描述
以下三条命令等效

help INT
\h INT
? INT

4 数据表

数据表由行(row)和列(column)构成的二维网络,数据是先放入数据表中,而表在数据库中,一个数据库中包含了多张表。
数据表一定先有表结构,再有数据,也可以没有数据,即空表,数据表至少有一列,可以没有行或者多行。

(1)关于存储引擎

存储引擎就是指表的类型。数据库的存储类型决定了表在计算机中的存储方式。用户可以根据不同的存储方式、是否进行事务处理等来选择合适的存储引擎。
关于存储引擎的介绍,可以看这篇文章:
https://blog.csdn.net/qq_29168493/article/details/79066399

查看MySQL支持的存储引擎:

SHOW ENGINES\G;

\G的作用是以恰当的显示

在这里插入图片描述
MySQL中的存储引擎
在这里插入图片描述
Comment表示注释,Transactions表示是否支持事务处理,XA表示是否支持分布式事物处理XA规范,Savepoints表示是否支持保存点

查看(当前数据库)默认的存储引擎:

SHOW VARIABLES LIKE 'storage_engine';

(2)新建表

CREATE TABLE [IF NOT EXISTS] tbl_name(
字段名称 字段类型 [完整性约束条件]
...
)ENGINE=引擎名称 CHARSET='编码方式';

完整性约束条件:
在这里插入图片描述
可以在Notepad++中新建一个文件,语言选择SQL,在Notepad上写命令,然后复制到DOS窗口中,这样比直接在DOS窗口中输入更加方便。

在maizi数据库下面新建一张表

# 创建maizi数据库
CREATE DATABASE IF NOT EXISTS `maizi` DEFAULT CHARACTER SET 'UTF8';
-- 用反引号括起来,反引号用 shift+数字1左边的键敲出
-- 是为了防止数据库、表、字段和MySQL的关键字冲突引起错误

USE `maizi`;

-- 创建学员表(user)
-- 编号 id
-- 用户名 username
-- 年龄 age
-- 性别 sex
-- 邮箱 email
-- 地址 addr
-- 生日 birth
-- 薪水 salary
-- 电话 tel
-- 是否结婚 married
-- 当插入中文的时候,只要四个编码方式统一,就不会出现乱码
-- SET NAMES GBK;可以改变客户端和连接端的编码方式
-- 临时转换编码方式,只对当前连接有效
-- 字段注释 通过COMMENT '注释内容' 给字段添加注释
-- COMMENT必须在逗号前面,相当于该字段的备注信息
CREATE TABLE IF NOT EXISTS `user`(
id SMALLINT, 	-- 字段名称 字段类型,字段之间用逗号隔开,
username VARCHAR(20),
age TINYINT,
sex ENUM('男','女','保密'), -- 枚举类型
email VARCHAR(50),
addr VARCHAR(200),
birth YEAR COMMENT '只记录年份',
salary FLOAT(8,2),
tel INT,
married TINYINT(1) COMMENT '0代表未结婚,非0代表已婚'
)ENGINE=INNODB CHARSET=UTF8; -- 指定存储引擎和编码方式
-- 若未指定存储引擎和编码方式,则使用默认

SQL中,注释有两种方式,# 或者 –

(3)数据表的其他相关操作

查看当前数据库有哪些表

SHOW TABLES;

查看指定表的表结构,以下三条命令等效

DESC tbl_name
DESCRIBE cms_news;
SHOW COLUMNS FROM cms_news;

删除数据表

DROP TABLE [IF EXISTS] tbl_name[,tbl_name...]

(4)插入数据

INSERT INTO 表名(列名1,列名2,列名3...VALUES (列值1,列值2.....)

列和值是一一对应的,注意,into后面没有“table”
可以简写

INSERT 表名 VALUES (列值1,列值2.....)

也可以一次性插入多条记录

INSERT INTO tablename (field1, field2,……fieldn)
VALUES
(record1_value1, record1_value2,……record1_valuesn),
(record2_value1, record2_value2,……record2_valuesn),
...
(recordn_value1, recordn_value2,……recordn_valuesn);

5 字段测试

(1)整型字段测试

a 关于数据溢出

在这里插入图片描述
第二次插入数据时,发生溢出

但也实现了成功插入,若溢出则自动取边界
在这里插入图片描述

b 关于显示长度

在这里插入图片描述

括号里的数字是显示长度,但必须配合零填充才有意义
在这里插入图片描述
在这里插入图片描述
有符号与无符号,如果没有加 UNSIGNED,则为有符号,即可以为负的

(2)小数的测试

在这里插入图片描述
指定了小数保留两位,那么就会四舍五入。

(3)字符串的测试

a 太长自动截断

在这里插入图片描述

b 插入空字符串

在这里插入图片描述

c 关于末尾空格

CHAR自动去掉末尾的空格,VARCHAR则会保留
在这里插入图片描述

d 枚举类型测试

在这里插入图片描述
末尾的空格自动去掉

也能插入数字
在这里插入图片描述
序号是从1开始,从枚举类型的第一个字符开始计数

也能插入空NULL或null
在这里插入图片描述
因为默认是可以为空的

e 集合类型

在这里插入图片描述

也可以插入数字,A对应的是1,B对应的是2,C对应的是4,D对应的是8,每次乘2

-- 前两个,第一个是1,第二个是2,加起来是3
INSERT test8 VALUES(3);

-- 1+2+4+8=15,插入A,B,C,D
INSERT test8 VALUES(15);

最后在表格中显示的顺序,按照创建表格时设定的顺序。

f 插入中文

中文在utf8的编码规则下,是一个字符,但占三个长度
在这里插入图片描述

(4)时间日期测试

这里只测试YEAR

CREATE TABLE IF NOT EXISTS test9(
birth YEAR
);

YEAR一般写四个数字,或者长度为4的字符串,如“2015”,但也支持两位插入
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值