《MySQL数据操作与查询》-T3 DDL和DML一、SQL介绍1、SQL简介2、使用Navicat编写SQL语句2.1 新增查询2.2 保存查询2.3 运行查询3、SQL注释二、使用DDL定义和维护数据库1、DDL定义数据库1.1 创建数据库1.2 删除数据库1.3 查询所有数据库2、DDL维护数据库2.1 修改数据库字符集编码及排序规则三、使用DDL定义和维护数据表1、DDL定义数据表1.1 创建数据表结构1.2 删除数据表1.3 重命名数据表2、DDL维护表结构2.1 新增字段2.2 变更字段2.3 更新字段2.4 删除字段2.5 删除唯一约束3、外键约束3.1 添加外键约束3.2 删除外键约束四、使用DML新增、修改、删除数据1、新增数据1.1 新增单条数据1.2 新增多条数据2、修改数据3、删除数据3.1 删除没有被关联的表记录【掌握】
3.2 删除被被关联(有外键)的表记录【了解】
五、数据表的导入与导出1、导出数据表2、导入数据表3、导入、导出编写的查询内容
SQL(Structured Query Language)是结构化查询语言,是一种数据库查询和程序设计的语言。.sql
是数据库脚本语言的扩展名。
SQL的重点内容:DDL(数据定义语言)和DML(数据操作语言)。
DDL(Data Definition Language):
定义和维护数据库
定义和维护数据表结构
DML(Data Manipulation Language):实现对数据库的数据表里面的数据的操作(增删改查)。
检索:查询(
select
)更新(新增(
insert
)、删除(delete
)、修改(update
))
全局查询(操作MySQL服务器)
局部查询(操作单个数据库)
按Ctrl + S
保存查询,并命名
快速注释:
Ctrl + /
推荐使用:--
或 #
其他注释:/* */
语法:
create
database
数据库名;
可视化操作 | SQL语句操作 |
---|---|
![]() | ![]() |
在创建数据时,需要设置字符集编码及排序规则,所以完成创建语法为:
语法:
create
database
数据库名character
set 字符集编码collate
排序规则;
可视化操作 | SQL语句操作 |
---|---|
![]() | ![]() |
语法:
drop
database
数据库名;
可视化操作 | SQL语句操作 |
---|---|
![]() | ![]() |
语法:
show databases
;
可视化操作 | SQL语句操作 |
---|---|
![]() | ![]() |
语法:
alter
database
具体操作;
可视化操作 | SQL语句操作 |
---|---|
![]() | ![]() |
语法:
create
table
表名(字段名1 字段1数据类型 字段1的约束,
字段名2 字段2数据类型 字段2的约束,
......
字段名n 字段n数据类型 字段n的约束
);
常用约束:
(1)主键约束:
primary key
(2)主键自动增长:
auto_increment
(3)唯一约束:unique
(4)非空约束:
not null
(5)默认值约束:default
【实例】
使用SQL语句创建客户表结构:
【解答】
create table customers(
customerID int primary key auto_increment,
loginID varchar(20) not null unique,
pwd varchar(10) not null default '123456',
cName varchar(20) not null,
address varchar(50),
phone varchar(20)
);
注意点:
(1)在创建数据表时,需要选择在哪个数据库中创建,使用
use 数据库
名实现:xxxxxxxxxx
use test;
(2)在实际开发中,创建数据表时,一般主键约束和唯一约束放在后面:
xxxxxxxxxx
create table customers(
customerID int auto_increment,
loginID varchar(20) not null,
pwd varchar(10) not null default '123456',
cName varchar(20) not null,
address varchar(50),
phone varchar(20),
primary key(customerID), #主键约束
constraint unique_loginID unique(loginID) #唯一约束
)
语法:
drop
table
表名;
【实例】
删除客户表customers
【解答】
xxxxxxxxxx
drop table customers;
语法:
rename
table
原表名 to 新表名;
【实例】
将客户表(customers)的重命名为customer:
【解答】
xxxxxxxxxx
rename table customers to customer;
语法:
alter
table
表名
add
字段名 字段数据类型 字段约束;
【实例】
使用SQL语句在客户表(customers)中新增一个字段:
【语法】
xxxxxxxxxx
alter table customers
add customerType varchar(20) not null;
语法:
alter
table
表名
change
原字段名 新字段名 新字段名的数据类型 新字段名的约束;
【实例】
将客户表(customers)中的“客户类型”字段变更为“客户业务”字段:
【语法】
xxxxxxxxxx
alter table customers
change customerType customerBusiness varchar(50);
语法:
alter
table
表名
modify
字段名 新的字段数据类型 新的字段约束;
【实例】
将客户表(customers)中的“客户业务”字段进行内容更新,长度更新为100,约束为“非空”:
【语法】
xxxxxxxxxx
alter table customers
modify customerBusiness varchar(100) not null;
alter
table
表名
drop
column
字段名;
【实例】
将客户表(customers)中的“客户业务”字段删除
【语法】
xxxxxxxxxx
alter table customers drop column customerBusiness;
语法:
alter
table
表名drop
index
唯一约束名;
【实例】
将客户表(customers)中的唯一约束(unique_loginID)删除
【语法】
xxxxxxxxxx
alter table customers drop index unique_loginID;
语法:
alter
table
表名
add
constraint 外键约束名 foreign key(添加外键约束的字段名) references 被引用的表名(被引用表的主键);
【实例】
在学生表(student)中设置外键来引用专业表(major)中的主键
【解答】
xxxxxxxxxx
alter table student
add constraint fk_major_name
foreign key(major_name) references major(major_name);
语法:
alter
table
表名
drop
foreign key 外键约束名
【实例】
将学生表(student)中设置的外键( fk_major_name)删除
【解答】
xxxxxxxxxx
alter table student drop foreign key fk_major_name;
语法:
insert
into 表名(字段列表) values(值列表)
【实例】
在客户表(customers)中插入一条记录:
【解答】
xxxxxxxxxx
insert into customers(customerID,loginID,pwd,cName,address,phone)
values(1001,'customer1001','c101','华为','广东省深圳市','1001****');
注意点:
(1)into可以省略,但
建议不省略
;(2)如果插入一条完整的记录(包括所有字段),字段列表可以省略不写
xxxxxxxxxx
insert into customers
values(1001,'customer1001','c101','华为','广东省深圳市','1001****');
方法一
将新增单条数据的语句编写多条
方法二
语法:
insert
into 表名(字段列表) values(值列表1),(值列表2),(...),(值列表n);
【实例】
在客户表(customers)中插入多条记录:
【解答】
xxxxxxxxxx
insert into customers
values(1002,'customer1002','c1002','京东','北京市','1002****'),
(1003,'customer1003','c1003','阿里巴巴','浙江省杭州市','1003****'),
(1004,'customer1004','c1004','腾讯','广东省深圳市','1004****');
语法:
update
表名 set 字段1=值1,...,字段n=值n where 条件表达式
【实例】
将客户表(customers)中编号为1001的客户名称修改为华为技术有限公司
【解答】
xxxxxxxxxx
update customers set cName='华为技术有限公司' where customerID=1001;
【掌握】
语法:
delete
from 表名 where 条件表达式
【实例】
将客户表(customers)中客户姓名为“腾讯”的记录删除
【解答】
xxxxxxxxxx
delete from customers where cName='腾讯'
【了解】
【实例】
将专业表(major)中名称为“电子商务”的记录删除
【解答1】
设置”删除时”的状态为“restrict”(限制):
有引用关系的数据不能被删除:
【解答2】
设置”删除时”的状态为“set null”:
学生表中与“电子商务”相关联的数据被置为null:
【解答3】
设置”删除时”的状态为“cascade”:
学生表中与“电子商务”相关联的被删除(级联删除):(谨慎使用)
直接使用
Ctrl + C
和Ctrl + V
实现