文章目录
- 前言
- 一、数据库操作
- 二、数据类型
- 三、数据表
- 四、数据表操作
-
- 4.1创建数据表
- 4.2练习
- 4.3修改数据表
-
- 4.3.1添加字段(add)
- [4.3.2 删除字段(drop)](#4.3.2 删除字段(drop))
- 4.3.3修改数据类型(modify)
- [4.3.4 替换字段(change)](#4.3.4 替换字段(change))
- 4.4删除数据表
- 4.5练习
- 六、数据操作
- 七、总结
前言
本文主要描写了sql的一些基础指令
一、数据库操作

1.1查看数据库------查看当前有哪些库
- 查看数据库通过 SHOW DATABASES;语句实现,其语法是:SHOW DATABASES;
1.2新建数据库
- 创建数据库通过 CREATE DATABASE 语句实现,其语法是:
- CREATE DATABASE [ IF NOT EXISTS ] db_name
-
DEFAULT\] CHARACTER SET \[=\] charset_name;
- 如果数据库存在,且没有指定IF NOT EXISTS,则会出现错误。
- 数据库名要求
- 数字、字母、下划线,但不能使用纯数字
- 不要使用特殊字符和mysql关键字

1.3打开数据库
• 打开数据库是通过 USE 语句实现,其语法是:
• USE db_name;
1.4删除数据库
- 删除数据库通过 DROP DATABASE 语句实现,其语法是:
- DROP DATABASE [ IF EXISTS ] db_name;
- 说明:如果数据库不存在,且没有指定IF EXISTS时,则会出现错误

1.5练习
- 查看已有库
- 创建stu 数据库
- 打开stu 数据库
- 删除stu 数据库
sql
#查看已有库
show database;
#创建stu 数据库
create database stu;
#打开stu 数据库
use stu;
#删除stu 数据库
drop database if exists stu;
二、数据类型
数据类型可以分为:
- 数值型
- 字符型
- 日期时间
- 其他常用类型
2.1数值型数据
2.1.1INT/INTEGER
- INT/INTEGER [(M)] [UNSIGNED] [ZEROFILL] ,占4个字节
- 有符号范围:-2147683648 到2147683647 (约±21亿)
- 无符号范围:0到4294967295 (约43亿)
- M 表示最大显示宽度,当与扩展属性 ZEROFILL 组合时才有意义,此时左边自动补零。
2.1.2FLOAT
- FLOAT称为单精度浮点(single-precision),其表示方法如下:
- FLOAT [(M,D)] [UNSIGNED] [ZEROFILL]
- M表示数字的位数,D表示小数点后的数字位数,如果省略M和D,其
- 精度取决于硬件系统。FLOAT最多可以精确到小数点后的7位数字。
2.2字符型数据
2.2.1CHAR
- CHAR [(M)] 50 可修改
- 固定长度的字符串,其存储时右侧总是以空格填充。
- M代表字符数的最大长度。M的范围是0到255;如果省略M,则默认长度为1。
2.2.2VARCHAR
- VARCHAR (M)
- 变长字符串,其中M表示字符数的最大长度,M取值范围为0到65535
- VARCHAR的有效性长度受到字符集的影响;

2.3日期型
2.3.1DATE
- 日期类型,DATE的格式为YYYY-MM-DD
- 支持的范围为1000-01-01 ~ 9999-12-31。
2.3.2TIME
- 时间类型,TIME的格式为 HH:MM:SS。
- 支持的范围为-838:59:59.999999 ~ 838:59:59.999999;
2.3.3DATETIME
- 日期时间型,DATETIME的格式为 YYYY-MM-DD HH:MM:SS.ffffff
- DATETIME支持的范围为 1000-01-01 00:00:00 ~ 9999-12-31 23:59:59 ;
三、数据表
- 数据表(Table)是二维表格,由行(row)和列(column)组成,用于存储数据。一张数据表中至少包含一列,但是可以包含至少零行。

3.1数据表与数据库的关系
数据库是一个容器,它由数据表、存储过程、索引、触发器、用户等对象组成。
数据表是数据库的重要组成部分。每一个数据库都是由若干个数据表组成。数
据库与数据表的关系就像Excel工作簿与工作表的关系一样。
- 建表前基本思考过程:
- 确定存储内容
- 明确字段构成
- 确定字段数据类型
四、数据表操作

4.1创建数据表
-
创建数据表方法:
-

-
指定表结构:
-
创建数据表通过 CREATE TABLE 语句实现,其语法是:
CREATE TABLE [ IF NOT EXISTS ] table_name (
column_name data_type
, ...
);
-
导入文件
-

-
LOAD DATA报错处理:
-
若MySQL服务为Windows系统下安装,执行LOAD DATA命令可能会报错:
将文件放到C:\ProgramData\MySQL\MySQL Server 8.0\Uploads下再执行
-
若使用DBeaver连接数据库时报错Public Key Retrieval is not allowed
编辑数据库连接->编辑驱动设置->默认属性->右键添加新属性- >allowPublicKeyRetrieval,值写为true
4.2练习
• 创建classs数据表(字段为id、name、age、sex、score)
• 导入sales.csv 文件
sql
create table class1(
id int,
name1 char(10),
age int,
sex char(5),
score float
);
4.3修改数据表
4.3.1添加字段(add)
- alter table 表名 add 字段名 数据类型;
- alter table 表名 add 字段名 数据类型 first;
- alter table 表名 add 字段名 数据类型 after 字段名;
4.3.2 删除字段(drop)
- alter table 表名 drop 字段名;
4.3.3修改数据类型(modify)
- alter table 表名 modify 字段名 新数据类型;
4.3.4 替换字段(change)
- alter table 表名 change 旧字段名 新字段名 新数据类型;
4.4删除数据表
- 删除数据库通过 DROP TABLE 语句实现,其语法是:
- DROP TABLE [ IF EXISTS ] table_name;
- 说明:如果数据库不存在,且没有指定IF EXISTS时,则会出现错误
4.5练习
• 在class1 表最后插入city 列,类型为 int
• 在class1 表第一列插入country列 ,类型为 varchar(20)
• 在class1 表sex 后插入level_type 列 类型 int
• 把class1 表的level_type 列删除
• 把class1 表city列类型改为varchar(10)
• 把class1 表sex列名改为 gender
• 删除class1表
sql
create database stu;
use stu;
drop database if exists stu;
create table class1(
id int,
name1 char(10),
age int,
sex char(5),
score float
);
# 在class1 表最后插入city 列,类型为 int
alter table class1 add city int;
#• 在class1 表第一列插入country列 ,类型为 varchar(20)
alter table class1 add country varchar(20) first;
#• 在class1 表sex 后插入level_type 列 类型 int
alter table class1 add level_type int after sex;
#• 把class1 表的level_type 列删除
alter table class1 drop level_type;
#• 把class1 表city列类型改为varchar(10)
alter table class1 modify city varchar(10);
#• 把class1 表sex列名改为 gender
alter table class1 change sex gender varchar(5);
#• 删除class1表
drop table class1;
六、数据操作

6.1插入数据
- 插入记录通过INSERT语句实现,其语法如下:
- INSERT [INTO] table [(column_name,...)] VALUES
- ({expr|DEFAULT},...),(...),...
- 说明:
- INSERT语句用于插入记录,并且返回被插入的行数(记录数);
- 如果省略字段列表,那么必须为所有字段依次赋值;
- 字段值的数量、顺序、数据类型必须与字段的数量、顺序、数据类型完全匹配;空值用NULL表示
- 默认值用DEFAULT表示
6.2练习
- 向class表中插入3条记录
-- (1,"Lily",18,'f',89), -- (2,"Lucy",18,'f',76), -- (3,"Tom",17,'m',83) - 向class表中插入3条记录
-- ("Levi",18,'m',86), -- ("Sunny",17,'m',91), -- ("Eva",17,'f',71) - 通过load data指令向class表中添加记录
sql
#• 向class表中插入3条记录
#-- (1,"Lily",18,'f',89), -- (2,"Lucy",18,'f',76), -- (3,"Tom",17,'m',83)
insert into class1(id,name1, age,sex,score)
values(1,"Lily",18,'f',89),
(2,"Lucy",18,'f',76),
(3,"Tom",17,'m',83);
#• 向class表中插入3条记录
#-- ("Levi",18,'m',86), -- ("Sunny",17,'m',91), -- ("Eva",17,'f',71)
insert into class1(name1,age,sex,score)
values("Levi",18,'m',86),
("Sunny",17,'m',91),
("Eva",17,'f',71);
#• 通过load data指令向class表中添加记录
6.3综合练习
- 创建一个数据库 exercise
- 创建一个数据表 books 类型自己设计字段名如下,字段 : id(id) 书名(bname)
作者(author) 出版社(press) 价格(price) 备注(common) - 插入如下6条记录
(1,"边城", "沈从文", "机械工业出版社",36, "小城故事多"),
(2,"骆驼祥子", "老舍", "机械工业出版社",43, "你是祥子么?"),
(3,"茶馆","老舍","中国文学出版社",55,"老北京"),
(4,"呐喊","鲁迅","人民教育出版社",71,"最后的声音"),
(5,"朝花夕拾","鲁迅","中国文学出版社",53,"好时光"),
(6,"围城","钱钟书","中国文学出版社",44,"你心中的围城是什么") - 插入如下两条记录
(7,"林家铺子","茅盾","机械工业出版社",51),
(8,"子夜","茅盾","人民教育出版社",47)
sql
#• 创建一个数据库 exercise
create database exercise;
use exercise;
#• 创建一个数据表 books 类型自己设计字段名如下,字段 : id(id) 书名(bname)
#作者(author) 出版社(press) 价格(price) 备注(common)
create table books(
id int,
bname varchar(20),
author char(50),
press varchar(20),
price float,
common varchar(100)
);
#• 插入如下6条记录
#(1,"边城", "沈从文", "机械工业出版社",36, "小城故事多"),
#(2,"骆驼祥子", "老舍", "机械工业出版社",43, "你是祥子么?"),
#(3,"茶馆","老舍","中国文学出版社",55,"老北京"),
#(4,"呐喊","鲁迅","人民教育出版社",71,"最后的声音"),
#(5,"朝花夕拾","鲁迅","中国文学出版社",53,"好时光"),
#(6,"围城","钱钟书","中国文学出版社",44,"你心中的围城是什么")
insert into books
values(1,"边城", "沈从文", "机械工业出版社",36, "小城故事多"),
(2,"骆驼祥子", "老舍", "机械工业出版社",43, "你是祥子么?"),
(3,"茶馆","老舍","中国文学出版社",55,"老北京"),
(4,"呐喊","鲁迅","人民教育出版社",71,"最后的声音"),
(5,"朝花夕拾","鲁迅","中国文学出版社",53,"好时光"),
(6,"围城","钱钟书","中国文学出版社",44,"你心中的围城是什么");
#• 插入如下两条记录
#(7,"林家铺子","茅盾","机械工业出版社",51),
#(8,"子夜","茅盾","人民教育出版社",47)
insert books(id,bname,author,press,price)
values(7,"林家铺子","茅盾","机械工业出版社",51),
(8,"子夜","茅盾","人民教育出版社",47);
6.4修改数据
6.4.1修改案例

6.4.2语法
- 更新记录通过UPDATE语句实现,其(单表更新)语法为:
• UPDATE table SET column_name={expr|DEFAULT} [ ,... ]WHERE condition
• 说明:
- UPDATE语句更新记录,并且返回被更新的行数(记录数)
- SET子句指明被更新的列及其列值,列值可以是表达式或者默认值
(用DEFAULT表示) - 如果省略WHERE子句,则更新全部记录
6.5练习
- 把Lily改成19岁
- 每人分数加5分
- Sunny 性别为 f 分数为85
sql
use stu;
SET SQL_SAFE_UPDATES = 0;
# • 把Lily改成19岁
update class1 set age=19 where name1="Lily";
# • 每人分数加5分
update class1 set score=score+5;
# • Sunny 性别为 f 分数为85
update class1 set sex="f" ,score=85 where name1="Sunny";
- 补充综合训练:
• 在价格字段后新增出版时间字段p_time
• 修改所有老舍作品时间为2018-10-1
• 修改所有中国文学出版社但作者不是老舍的作品出版时间2020-1-1
• 修改所有出版时间为null的为2019-10-1
sql
use exercise;
SET SQL_SAFE_UPDATES = 0;
# • 在价格字段后新增出版时间字段p_time
alter table books add p_time date after price;
# • 修改所有老舍作品时间为2018-10-1
update books set p_time="2018-10-01" where author ="老舍";
# • 修改所有中国文学出版社但作者不是老舍的作品出版时间2020-1-1
update books set p_time="2020-10-01" where press="中国文学出版社" and author<>"老舍";
# • 修改所有出版时间为null的为2019-10-1
update books set p_time="2019-10-1" where p_time is null;
6.6删除数据

6.6.1语法
- 删除记录通过DELETE语句实现,其(单表删除)语法为:
• DELETE FROM table [ WHERE condition ]
• 说明:
- DELETE语句删除记录,并且返回被删除的行数(记录数);
- 如果省略WHERE条件,则删除全部记录
6.7练习
• 删除class里score大于90并sex为m
sql
use stu;
# • 删除class里score大于90并sex为m
delete from class1 where score>90 and sex="m";
6.8综合练习
• 练习 使用book表
• 1. 将呐喊的价格修改为45元
• 2. 增加一个字段出版时间 类型为 date 放在价格后面
• 3. 修改所有老舍的作品出版时间为 2018-10-1
• 4. 修改所有中国文学出版社出版的但是不是老舍的作品出版时间
为 2020-1-1
• 5. 修改所有出版时间为Null的图书 出版时间为 2019-10-1
• 6. 所有鲁迅的图书价格增加5元
• 7. 删除所有价格超过70元或者不到40元的图书
sql
#• 1. 将呐喊的价格修改为45元
update books set price = 45 where bname="呐喊";
#• 2. 增加一个字段出版时间 类型为 date 放在价格后面
# • 在价格字段后新增出版时间字段p_time
alter table books add p_time date after price;
# • 修改所有老舍作品时间为2018-10-1
update books set p_time="2018-10-01" where author ="老舍";
# • 修改所有中国文学出版社但作者不是老舍的作品出版时间2020-1-1
update books set p_time="2020-10-01" where press="中国文学出版社" and author<>"老舍";
# • 修改所有出版时间为null的为2019-10-1
update books set p_time="2019-10-1" where p_time is null;
#• 6. 所有鲁迅的图书价格增加5元
update books set price=price+5 where author="鲁迅";
#• 7. 删除所有价格超过70元或者不到40元的图书*/
delete from books where price>70 or price<40;
七、总结
- 数据库的创建、使用、删除、查看(DDL)
- 数据表的创建、修改、删除(DDL)
- 数据表操作插入记录、更新记录、删除记录(DML)