学习目标:学习基本的SQL操作,实现数据库的基本管理
目标:了解SQL的基本语法规则
概念
SQL语法规则:SQL是一种结构化编程语言
;
、\g、\G
示例
1、结构创建
create 结构类型 结构名 结构描述;
2、显示结构
#显示结构
show 结构类型(复数);
#显示结构创建详情
show create 结构类型 结构名;
3、数据操作(数据表)
#新增数据
insert into 表名 values
#查看数据
select from 表名
#更新数据
update 表名 set
#删除数据
delete from 表名
小结
1、SQL是一种类似于自然语言的编程语言
2、根据数据库的对象层级,可以将基础SQL操作分为三类
目标:掌握数据库相关SQL指令
概念
创建数据库:根据项目需求创建一个存储数据的仓库
create database 数据库名字 [数据库选项];
示例
1、创建一个指定名字的数据库
create database db_1;
2、创建一个指定字符集的数据库
create database db_2 charset utf8MB4;
3、创建一个指定校对集的数据库
create database db_3 charset utf8MB4 collate utf8mb4_general_ci;
小结
1、数据库的创建是存储数据的基础,数据库的创建通常是一次性的
2、创建数据库的语法包含几个部分
3、创建好的数据库可以在数据存储指定地点(安装时指定)看到
概念
显示数据库:通过客户端指令来查看已有数据库
示例
1、显示所有数据库
show databases;
2、显示数据库创建指令
show create database db_1;
小结
1、查看数据库分为两种方式
2、查看数据库的目的和应用
概念
使用数据库:指在进行具体SQL指令之前,让系统知道操作针对的是哪个数据库
示例
use db_1;
小结
1、使用数据库的指令是:use 数据库名字;
2、使用数据库的目标
概念
修改数据库:修改数据库的相关库选项
alter database 数据库名字 库选项
示例
1、修改数据库字符集
alter database db_2 charset gbk;
2、修改数据库校对集(如果字符集修改必须同时改变字符集)
alter database db_3 charset gbk collate gbk_chinese_ci;
小结
1、数据库的修改只能修改库选项,不能修改名字
2、字符集的修改指令使用alter,其他跟创建指令一致
3、数据库修改通常有两部分
4、一般我们都不会使用数据库修改(一般要改也是删除后新增)
概念
删除数据库:将当前已有数据库删除
drop database 数据库名字;
示例
drop database db_1;
小结
1、删除数据库使用指令:drop database 数据库名字
2、数据库的删除不可逆
1、数据库的操作通常是一次性的,即在进行业务代码开展之前将数据库维护好
2、数据库的删除需要非常慎重,尤其是生产环境,数据库的删除是不可逆(会将数据库中的所有数据全部删除)
目标:掌握数据库和字段的相关操作指令,熟练运用这些指令完成数据表的增删改查
目标:了解数据表创建的语法,掌握创建规则
概念
创建数据表:根据业务需求,确定数据表的字段信息,然后创建表结构
数据库.表名
use 数据库名字
,
分隔create table [数据库名.]表名(
字段名 字段类型,
...
字段名 字段类型
)表选项;
示例
1、创建简单数据表(指定数据库创建数据表)
create table db_2.t_1(
name varchar(50)
);
2、创建数据表——多字段
# 使用数据库(进入数据库环境)
use db_2;
create table t_2(
name varchar(50),
age int,
gender varchar(10)
);
3、创建数据表——表选项
create table t_3(
name varchar(50)
)engine Innodb charset utf8MB4;
小结
1、创建数据库表是为了存储具体数据
2、数据表的创建与字段是同时存在的
3、数据表的创建需要指定数据库
4、一张数据表用来存一组相关数据
5、扩展:存储引擎是指数据存储和管理的方式,MySQL中提供了多种存储引擎,一般使用默认存储引擎
6、扩展:如果想创建一个与已有表一样的数据表,MySQL提供了一种便捷的复制模式
目的:了解如何查看数据表结构
概念
显示数据表:客户端通过指令显示已有的数据表
示例
1、显示所有数据表——当前数据库下
show tables;
2、显示所有数据表——指定数据库
show tables from db_3;
3、显示部分关联数据表——匹配
show tables like '%like'; # _表示匹配一个字符(固定位置),%表示匹配N个字符
4、显示数据表的创建指令
show create table t_1; # 看到的结果未必一定是真实创建的指令(系统会加工)
小结
1、显示数据表有两种形式
2、显示数据表通常是为了验证数据表是否存在或者验证数据表的创建指令是否正确
3、在显示数据的时候可以使用不同的语句结束符
目标:了解查看数据表的概念和掌握数据表查看的语法
概念
查看数据表:指查看数据表中的具体结构
desc 表名;
describe 表名;
show columns from 表名;
示例
desc t_1;
小结
1、数据表的查看是为了查看表中具体字段的信息
2、查看数据表的指令有多个,效果都一样
3、查看表结构的原因通常是在开发过程中为了更清晰的了解数据的存储形式和要求
目标:了解数据表的修改内容以及修改语法
概念
更改数据表:修改表名字和表选项
rename table 表名 to 新表名
alter table 表名
示例
1、修改表名
rename table t_1 to t1;
注意:如果有时候想要跨库修改的话,需要使用数据库名.表名
2、修改表选项
alter table t1 charset utf8;
小结
1、更改数据表分为两个部分
2、通常我们较少使用更改数据表,数据表应该在创建时就定义好
目标:了解字段更改的类型和基本语法的使用
概念
更改字段:指针对表创建好后,里面字段的增删改
目标:了解字段新增的语法
概念
新增字段:在表创建好后往里面增加其他字段
字段的新增必须同时存在字段类型
新增语法
alter table 表名 add [column] 字段名 字段类型 [字段属性] [字段位置]
示例
1、给已经存在的t_3表增加一个字段age
alter table t_3 add age int;
2、给已经存在的t_3表增加一个字段nickname
alter table t_3 add column nickname varchar(10);
小结
1、新增字段就是给已有表追加一个字段(较少)
2、字段新增必须指定字段类型
3、字段新增语法为:alter table 表名 add [column] 字段名 字段类型;
4、字段的追加默认是在所有字段之后
目标:了解字段位置的概念,掌握字段位置的使用
概念
字段位置:指字段放到某个指定字段之后
alter table 表名 字段操作 字段位置;
示例
1、为t_3表增加一个id字段,放到最前面
alter table t_3 add id int first;
2、在t_3表name字段后增加一个身份证字段card
alter table t_3 add card varchar(18) after name;
小结
1、字段位置是配合字段操作的(新增、修改)
2、字段位置分两种
目标:了解更改字段名的基本语法
概念
更改字段名:指对已经存在的字段名进行修改
alter table 表名 change 原字段名 新字段名 字段类型 [字段属性] [位置]
示例
修改字段名card为sfz
alter table t_3 change card sfz varchar(18);
小结
1、字段名更改通常只是修改字段名字,但是也必须跟随类型
2、字段名修改语法:alter table 表名 change 原字段名 新字段名 字段类型
3、字段名修改change其实也可以修改字段类型、属性和位置,但是通常不使用(专人专事)
目标:了解字段修改的概念和基本语法,掌握字段修改的实现
概念
修改字段:指修改字段的相关信息
alter table 表名 modify 字段名 字段类型 [字段属性] [位置];
示例
修改身份证的类型为char(18)并且位置放到id后面
alter table t_3 modify sfz char(18) after id;
小结
1、修改字段包含多个操作
2、修改字段语法:alter table 表名 modify 字段名 字段类型 [字段属性] [位置];
目标:了解字段删除语法
概念
删除字段:即将某个不要的字段从表中剔除
alter table 表名 drop 字段名;
示例
删除年龄字段
alter table t_3 drop age;
小结
1、字段删除在删除字段名的同时会删除字段对应的数据,而且不可逆
2、字段删除语法:alter table 表名 drop 字段名
1、数据表结构的操作是数据操作的基础
2、一般情况下新手都不会接触数据表的设计,但是作为一名新手一定要在使用数据表之前查看数据表的结构信息
3、不要轻易的修改或者删除数据表结构(数据会一并被处理掉)
4、数据表结构的维护通常是一次性的,在业务开展前尽可能好的设计好数据表,而不要后期再进行其他维护
目标:掌握mysql中数据的增删改查的基本操作
目标:了解数据的新增指令和逻辑,实现数据的入库操作
概念
新增数据:将数据插入到数据表永久存储
insert into 表名 values(字段列表顺序对应的所有值);
insert into 表名 (字段列表) values(字段列表对应的值顺序列表);
示例
1、给t_3表插入一条完整数据
insert into t_3 values(1,'440111200011111101','Jim','Green');
2、根据字段插入数据
insert into t_3 (id,sfz,name) values(2,'441000200011111211','Tom');
小结
1、数据插入是利用insert指令将数据永久存储到数据表中
2、数据存储以行为单位,字段为最小实际存储单位
3、数据插入分为两种方式插入数据
目标:了解数据查看的指令,掌握数据查看实际操作
概念
查看数据:将表中已经存在的数据按照指定的要求显示出来
*
代替所有字段select *|字段列表 from 表名;
示例
1、查看t_3表中所有数据
select * from t_3;
2、查看t_3表中的name和身份证信息
select name,sfz from t_3;
3、查看t_3表中id值为1的信息
select * from t_3 where id = 1;
小结
1、数据查看是数据库中最常用的操作(99%)
2、数据查看分两种情况
3、实际使用时通常会带where条件进行数据筛选
目标:了解更新数据的语法,掌握数据更新操作
概念
更新数据:即更新某个已有字段的值
update 表名 set 字段 = 新值[,字段 = 新值] [where条件筛选];
示例
1、更新所有记录的身份证信息
update t_3 set sfz = '440100200010100001';
2、更新某个记录的多个字段数据
update t_3 set name = 'Lily',sfz = '440100200010100002' where id = 1;
小结
1、更新数据的针对记录的字段数据进行更新
2、更新通常是限定条件更新(一般不会更新全部)
目标:了解删除语法,掌握删除操作实现
概念
删除数据:将数据从已有数据表中清除(针对的是记录record)
delete from 表名 [where条件];
示例
删除t_3表中id为2的数据
delete from t_3 where id = 2;
小结
1、数据删除是不可逆的操作
2、数据删除通常都匹配条件部分删除
1、数据操作不论是初级开发者还是高级开发者都频繁接触的操作
2、数据操作中读操作,往往占据了整个操作的99%以上
3、基本的增删改查是作为进阶的必要知识,必须熟练掌握和频繁练习(尽可能使用原码,集成工具后期开发时使用)
一、实验目的
1.掌握在SQL Server中使用对象资源管理器和SQL命令创建数据库与修改数据库的方法。
2.掌握在SQL Server中使用对象资源管理器或者SQL命令创建数据表和修改数据表的方法(以SQL命令为重点)。
二、实验内容
给定如表3.6、表3.7和表3.8所示的学生信息。
表3.6 学生表
学号 姓名 性别 专业班级 出生日期 联系电话
0433 张艳 女 生物04 1986-9-13
0496 李越 男 电子04 1984-2-23 1381290××××
0529 赵欣 男 会计05 1984-1-27 1350222××××
0531 张志国 男 生物05 1986-9-10 1331256××××
0538 于兰兰 女 生物05 1984-2-20 1331200××××
0591 王丽丽 女 电子05 1984-3-20 1332080××××
0592 王海强 男 电子05 1986-11-1
表3.7 课程表
课程号 课程名 学分数 学时数 任课教师
K001 计算机图形学 2.5 40 胡晶晶
K002 计算机应用基础 3 48 任泉
K006 数据结构 4 64 马跃先
M001 政治经济学 4 64 孔繁新
S001 高等数学 3 48 赵晓尘
表3.8 学生作业表
课程号 学号 作业1成绩 作业2成绩 作业3成绩
K001 0433 60 75 75
K001 0529 70 70 60
K001 0531 70 80 80
K001 0591 80 90 90
K002 0496 80 80 90
K002 0529 70 70 85
K002 0531 80 80 80
K002 0538 65 75 85
K002 0592 75 85 85
K006 0531 80 80 90
K006 0591 80 80 80
M001 0496 70 70 80
M001 0591 65 75 75
S001 0531 80 80 80
S001 0538 60 80
1.在SQL Server中使用对象资源管理器和SQL命令创建学生作业管理数据库,数据库的名称自定。
(1)使用对象资源管理器创建数据库,请给出重要步骤的截图。
(2)删除第(1)步创建的数据库,再次使用SQL命令创建数据库,请给出SQL代码。
(3)创建数据库之后,如果有需要,可以修改数据库。
2.对表3.6,表3.7和表3.8,分别以下表的方式给出各字段的属性定义和说明。
字段名 数据类型 长度或者精度 默认值 完整性约束
…… …… …… ……
…… …… …… ……
代码
create database myDatabase;
drop database mydatabase;
create database myDataBase;
alter database mydatabase char set gbk;
use mydatabase;
create table 学生表 (
number varchar(10),
name varchar(50),
gender varchar(10),
major varchar(20),
bir varchar(20),
tel varchar(20)
);
show tables;
create table 学生表 (
number varchar(10),
name varchar(50),
gender varchar(10),
major varchar(20),
bir varchar(20),
tel varchar(20)
);
create table 课程表 (
tablenumber varchar(10),
timetable varchar(50),
score varchar(10),
tabletime varchar(20),
teacher varchar(20)
);
create table 学生作业表 (
tablenumber varchar(10),
studentnumber varchar(10),
text1 varchar(10),
text1score int,
text2 varchar(10),
text2score int,
text3 varchar(10),
text3score int
);
insert into 学生表 value( '0433','张艳','女','生物', '04','1986-9-13');
delete from 学生表 where number = '0433';
SET SQL_SAFE_UPDATES = 0;
delete from 学生表 where number = '0433';
insert into 学生表 value('0496','李越', '男','电子04','1984-2-23', '1381290××××');
insert into 学生表 value( '0529','赵欣', '男', '会计05', '1984-1-27', '1350222××××');
insert into 学生表 value('0531' ,'张志国', '男', '生物05' ,'1986-9-10', '1331256××××');
insert into 学生表 value( '0538', '于兰兰', '女' ,'生物05', '1984-2-20', '1331200××××');
insert into 学生表 value('0591' ,'王丽丽', '女' ,'电子05' ,'1984-3-20', '1332080××××');
insert into 学生表 value('0592' ,'王海强', '男' ,'电子05' ,'1986-11-1',"" );
insert into 学生表 value('0496','李越','男','电子04','1984-2-23', '1381290××××');
insert into 学生表 value( '0529','赵欣', '男', '会计05', '1984-1-27', '1350222××××');
insert into 学生表 value('0531','张志国', '男', '生物05' ,'1986-9-10', '1331256××××');
insert into 学生表 value( '0538', '于兰兰', '女' ,'生物05', '1984-2-20', '1331200××××');
insert into 学生表 value('0591' ,'王丽丽', '女' ,'电子05' ,'1984-3-20', '1332080××××');
insert into 学生表 value('0592' ,'王海强', '男' ,'电子05' ,'1986-11-1',"" );
delete from 学生表 where number = '0592';
insert into 学生表 value('0592' ,'王海强', '男' ,'电子05' ,'1986-11-1',"" );