1.复习
关系型数据库
Server -> Database -> Table -> Row -> Column
-
MySQL
服务端 开启服务 (mysqld.exe服务端的服务)
客户端 连接服务器(mysql.exe客户端工具)
1.1 交互模式
mysql.exe -hloaclhost -P3306 -uroot -p
mysql -uroot
1.2 脚本模式
mysql -uroot<文件的完整路径 -
常用的管理命令
2.1 show databases;
2.2 use jd;
2.3 show tables;
2.4 desc student;
2.5 quit; -
SQL 命令
3.1 丢弃数据库
DROP DATABASE IF EXISTS jd;
3.2 创建
CRAETE DATABASE jd;
3.3 进入数据库
USE jd;
3.4 创建表
CREATE TABLE student(sid INT,…);
3.5 插入数据
INSERT INTO student VALUES(…);
3.6 查询
SELECT * FROM student;
2.常用的 SQL 命令
- 更改数据
UPDATE user SET upwd=“8888”, phone=“19912131516” WHERE uid=“1”; - 删除数据
DELETE FROM user WHERE uid=“2”;
3.标准 SQL 语句的分类
-
DDL 语句
DDL: Data Define Language 定义数据结构
1.1 CREATE
1.2 DROP
1.3 ALTER -
DML 语句
DML: Data Manipulate Language 操作数据
2.1 INSERT
2.2 UPDATE
2.3 DELETE -
DQL 语句
DQL: Data Query language 查询数据
3.1 SELECT -
DCL 语句
DCL: Data Control Lauguage 控制用户权限
4.1 GRANT(授权)/REVOKE(收权)
4.计算机存储字符
- 如何存储英文字符
ASCII: 总共有 128 个, 对所有的英文字母和符号编码。
Latin-1: 总共有 256 个, 兼容 ASCII 码, 同时对欧洲符号进行编码。
MySQl默认使用的时 Latin-1 的编码
A: 65
B: 66
C: 67
-
计算机时如何存储中文字符
GB2312: 常用的 6000 多汉字进行了编码, 兼容 ASCII 码。
GBK: 对 20000 多的汉字进行的编码, 兼容 GB2312。
Unicode: 将世界主流国家的常用语言进行了编码, 兼容 ASCII 码, 不兼容 GB2312、GBK。具体 utf-8 | utf-16 | utf-32 存储方案s -
解决 MySQL 中文存储乱码问题
3.1 SQL 脚本另存为的编码
3.2 客户端连接服务端的编码(SET NAMES UTF8)
3.3 服务器端创建数据库使用的编码(CHARSET=UTF8)
3.4 如果还是乱码就可以向此网站查询
https://www.zhihu.com/tardis/sogou/art/30022176
5.练习
编写脚本文件 01_sin.sql, 先丢弃再创建数据库 sina, 设置存储的编码为 utf8, 进入该数据库, 创建保存数据的表 news, 包括 nid, 标题 title, 发表时间 ctime, 内容 content, 作者 author, 来源 origin, 插入三条数据, 修改其中一条, 删除其中一条,最后查询结果
6.MySQL 中的列类型
在创建数据表的时候指定的列可以存储的数据类型
CREATE TABLE t1(nid 列类型 );
-
数值型 (引号可加可不加)
1.1 整型
1.1.1 TINYINT(微整型)
占 1 个字节 范围 -128 ~ 1271.1.2 SMALLINT(小整型)
占 2 个字节 范围 -32768 ~ 327671.1.3 INT(整型)
占 4 个字节 范围 -2147483648 ~ 21474836471.1.4 BIGINT(大整型)
占 8 个字节 范围很大
1.2 布尔型
1.2.1 **BOOL** 布尔型, 只有两个值 TRUE、FALSE,
真正存储的时候, 列类型会变成 TININT,
TRUE 和 FALSE 变成了 1 和 0,
使用的时候也可以直接插入 1 和 0
> TRUE 和 FALSE 不能加引号, 常用于只有两个值得数据 例如:性别、是否在线等等
1.3 浮点型
3.2.1 FLOAT (单精度浮点型)
占 4 个字节, 最多 3.4E38, 可能产生计算误差
3.2.2 DOUBLE(双精度浮点型)
占 8 个字节, 范围比 BIGINT 要打的多, 可能产生计算误差
3.2.3 **DECIMAL**(定点小数据)
不会产生计算误差, 常用
99999.99 DECIMAL(7, 2); 存储时不包含小数点本身, 所含有的 数字数, 第二个数 2 是表示小数点后可存的位数
- DECIMALL(M, D) M 表示总的有效位数(不包含小数点), D 代表小数点后的有效数位
- 日期时间型(必须加引号)
3.1 DATE(日期型)
‘2021-06-11’
3.2 TIME(日期型)
'19:04:23'
3.3 DATETIME(日期时间型)
'2021-06-11 19:04:25'
- 字符串类型
4.1 VARCHAR(M) 变长字符串,
操作速度相对于 CHAR(M) 较慢 M 值最大值 65535;
4.2 CHAR(M) 定长字符串,
操做速度比较快, M 值最大是 255; 用于存储固定长度的数据, 例如身份证号、手机号
4.3 TEXT(M) 大型变长字符串, M 最多 2G
· 字符串两种不同的存储方式
CHAR(5) | VARCHAR(5) | |
---|---|---|
a | a\0\0\0\0 | a\0 |
ab | ab\0\0\0 | ab\0 |
一 | 一\0\0\0\0 | 一\0 |
一二 | 一二\0\0\0\0 | 一二\0 |
7.计算机的存储单位
1TB = 1024GB
1GB = 1024MB
1MB = 1024KB
1KB = 1024Byte(字节)
1Byte = 8Bit(比特 | 位)
中文字符或英文字符最终都会存储为二进制
h 104 -> 转为 二进制存储
128 64 32 16 8 4 2 1
0 1 1 0 1 0 0 0
8.练习
-
编写脚本文件 02.sql, 先丢弃再创建 xz, 设置 编码为 utf8
创建保存 笔记本 数据的表 laptop, 包含有编号 lid, 标题 title, 价格 price, 库存量 stockCount, 上架时间 shelfTime, 是否显示在首页, 插入若干条数据 -
编写脚本文件 03_tedu.sql, 创建 tedu, 进入数据库,
创建保存部门数据的表 dept, 包含编号 did, 名称 dname,
员工数量 empCount, 插入以下数据10 研发部 3
20 运营部 2
30 市场部 2创建保存员工数据的表emp, 包含eid, 姓名 ename, 姓名 sex,
生日 birthday, 工资 salary, 所属部门编号 deptId插入若干条数据
9.列约束
MySQL在插入数据时,进行特定的验证; 只有满足条件才允许插入, 否则被认为时非法插入
例如:一个人的性别只能是男或女, 一个人的成绩 0~100
CREATE TABLE t1(eid 列类型 列约束 );
- 主键约束(PRIMARY KEY)
· 声明了主键约束的列上值不能出现重复
· 一个表内只能有一个主键, 通常加在编号列
· 表中查询的记录会按照编号从大到小顺序, 加快查找速度。
> 注意事项: 声明主键的列就不能插入 NULL 值。
| Null 表示空, 在插入数据时无法确定要保存的数据 |
| 例如: 无法确定员工的生日, 工资都可以使用 NULL |
课后任务
-
复习以上内容
-
课后练习:
编写脚本文件 zx.sql, 创建数据库 xz 进入数据库,
创建保存笔记本分类的表 laptop_family
包含 fid, fname 名称, laptopCount 数量
插入数据:
10 联想 2
20 戴尔 3
30 小米 2
创建保存笔记本数据的表 laptop,
包括 lid, title 标题, price价格, spec 规格, detail 详情, shelTIme 上架时间, isOnsale 是否在售, fmilyId 所属分类编号;
插入若干条数据
预习 MySQL 中的类型