SQL语句及其应用(上) (DDL语句以及DML语句)
SQL语句的定义:
概述:
全称叫 Structured Query Language, 结构化查询语言, 主要是实现 用户(程序员) 和 数据库软件(例如: MySQL, Oracle)之间交互用的.
分类:
DDL: 数据定义语言, 主要是操作 数据库, 数据表, 字段, 进行: 增删改查(CURD)
涉及到的关键字: create, drop, alter, show
DML: 数据操作语言, 主要是操作 表数据, 进行: 增删改(CDU) -> 统称为 更新语句.
涉及到的关键字: insert, delete, update
DQL: 数据查询语言, 主要是操作 表数据, 进行: 查询操作®
涉及到的关键字: select, from, where
DCL: 数据控制语言, 主要是 创建用户, 设置权限, 隔离级别等.
通用语法:
- SQL语句可以写一行, 也可以写多行, 最后用 分号 结尾.
- SQL语句不区分大小写, 为了阅读方便, 建议关键字大写, 其它都小写.
- 注释写法:
/* 多行注释的文本 */
# 单行注释
– 单行注释
二, 数据类型的定义
概述:
就是用来限定某列值的范围的, 必须是: 整数, 小数, 字符串, 日期等…
常用的数据类型:
- 整型: int
- 浮点型: float, double, decimal
- 日期型: datetime
- 字符串型: varchar(长度)
三, 约束的定义
概述:
在数据类型的基础上, 进一步对该列值做 限定.
(常用的)分类:
- 单表约束:
- primary key 主键约束, 特点: 非空, 唯一, 一般结合 auto_increment(自动增长, 自增)一起使用.`
- not null 非空约束, 即: 该列值不能为null, 但是可以 重复.
- unique 唯一约束, 即: 该列值必须不重复, 但是可以 为空.
- default 默认约束, 等价于Python的 缺省参数.
- 多表约束:
- foreign key 外键约束
四, DDL语句(数据定义语言)
DDL语句的定义
DDL: 数据定义语言, 主要是操作 数据库, 数据表, 字段, 进行: 增删改查(CURD)
涉及到的关键字: create, drop, alter, show
案例
案例(1) DDL语句, 操作数据库
案例需求
DDL语句, 操作数据库
实现思路
- 查看当前所有的数据库.
- 删除数据库.
- 创建数据库.
- 方式1: 数据库存在时, 报错.
- 方式2: 数据库存在时, 什么都不做.
- 方式3: 创建数据库, 指定码表.
- 查看两个数据库的详细信息(码表信息).
- 修改数据库的码表.
- 切换数据库.
- 查看当前使用的是哪个数据库.
# 1. 查看当前所有的数据库.
show databases ;
# 2. 删除数据库.
drop database day10;
# 3. 创建数据库.
# 4. 方式1: 数据库存在时, 报错.
create database day01 charset 'utf8';
# 5. 方式2: 数据存在时, 什么都不做.
create database if not exists day01 charset 'utf8';
# 6. 方式3: 创建数据库, 指定码表.
create database if not exists day02 charset 'gbk';
# 7. 查看两个数据库的详细信息(码表信息)
show create database if not exists day01; # utf8
show create database if not exists day02; # gbk
# 8. 修改数据库的码表.
alter database day02 charset 'utf8';
# 9. 切换数据库.
use day01;
# 10. 查看当前使用的是哪个数据库.
select database(); # day01
案例(2)DDL语句, 操作数据表
扩展:创建数据表的格式:
# 格式:
create table [if not exists] 数据表名(
字段名 数据类型 [约束],
字段名 数据类型 [约束],
......
字段名 数据结构 [约束]
);
# 细节:
# 上述的中括号中的部分, 可表示选项, 写不写都行.
案例需求
DDL语句, 操作数据表
实现思路
- 务必先切库, 即: 之后的表, 都是在这个库中玩儿的.
- 查看(当前数据库中)所有的数据表.
- 核心: 查看某张表的结构信息(字段名, 结构类型, 约束等…)
- 创建数据表.
- 需求: 创建用户表users, 字段为: id, username, password
- 修改表名.
- 格式1: alter table 旧表名 rename 新表名;
- 格式2: rename table 旧表名 to 新表名;
- 删除数据表.
# 0. 务必线切库, 即: 之后的表, 都是在这个库中玩的.
use day01;
# 1. 查看(当前数据库中)所有的数据表.
show tables;
# 3. 核心: 查看某张表的结构信息(字段表, 数据类型, 约束等...)
desc users;
# 4. 创建数据表.
# 5. 需求: 创建用户表user, 字段为: id, userbname, password
create table if not exists users(
id int, # id列, 整型.
username varchar(20), # 账号, 字符串类型
passward varchar(20), # 密码, 字符串类型
);
# 6. 修改表名.
# 7. 格式1: alter table 旧表名 rename 新表名;
alter table users rename user_tmp;
# 8. 格式2: rename table 旧表名 to 新表名;
rename table user_tmp to users;
# 9. 删除数据表.
drop table users;
案例(3)DDL语句, 操作字段
案例需求
DDL语句 操作字段
实现思路
- 查看某表的结构信息(字段信息)
- 给表新增字段: address, int, 非空(约束)
- 格式: alter table 表名 add 字段名 数据类型 [约束];
- 修改表的字段信息.
- 场景1: 只修改 数据类型 和 约束, 例如: address, int, 非空 -> address, varchar(10), 非空
- 格式: alter table 表名 modify 字段名 新的数据结构 [新的约束];
- 场景2: 修改列名, 数据类型, 约束. address, varcher(10), 非空 -> addr,vaerchar(20), 非空
- 格式: alter table 表名 change 旧字段名 新字段名 新的数据类型 [新的约束];
- 删除addr字段. 需求: 删除addr字段.
- 格式: alter table 表名 drop 旧字段名;
# 1. 查看某表的结构信息(字段信息)
desc user;
# 2. 给表新增字段: address, int, 非空(约束)
# 3. 格式: alter table 表名 add 字段名 数据类型 [约束];
alter table users add address int not null;
# 4. 修改表的字段信息.
# 5. 场景1: 只修改 数据类型 和 约束, 例如: address, int, 非空 -> address, varchar(10), 非空
# 6. 格式: alter table 表名 modify 字段名 新的数据结构 [新的约束];
alter table users modify address vaerchar(10); # 如果没加约束, 则之前的非空约束就没了.
alter table users modify address vaerchar(10) not null; # 这个才是符合题设的SQL语句.
# 7. 场景2: 修改列名, 数据类型, 约束. address, varcher(10), 非空 -> addr,vaerchar(20), 非空
# 8. 格式: alter table 表名 change 旧字段名 新字段名 新的数据类型 [新的约束];
# 9. 删除addr字段. 需求: 删除addr字段.
# 10. 格式: alter table 表名 drop 旧字段名;
alter table users drop addr;
DML(数据操作语言)
DML语句的定义
DML语句: 主要操作的是: 表数据. 对表数据进行增, 删, 改的操作.
SQL中, 给表添加数据的格式:
# 格式1: 普通写法.
insert into 表名(列名1, 列名2...) values(值1, 值2...); # 列的个数和类型 要和后续 值的个数和类型完全一致.
# 格式2: 省略列名.
insert into 表名 values(值1, 值2...); # 如果不写列名, 则默认表示: 全列名.
# 格式3: 如果有了主键约束, 则添加表数据的动作可以简写为:
insert into 表名 values(null, 值1, 值2...);
# 格式4: 如果要同时添加多条数据, 写法如下:
insert into 表名 values(值1, 值2, 值3), (值4, 值5, 值6).......;
案例: DML语句操作 表数据 -> 增
案例需求
DML语句操作表数据 -> 增
实现思路
- 切库.
- 查表.
- 查看表数据, 目前先了解, 稍后讲.
- 往 用户表中添加数据.
- 格式1:普通写法.
- 格式2: 省略列名, 默认 = 全列名.
- 格式3: 同时添加多个用户信息.
# 1. 切库.
use day01;
# 2. 查表.
show tables;
# 3. 查看表数据.
select * from users;
# 4. 往 用户表中添加数据.
# 格式1: 普通写法.
insert into users(id, username, passward) values(1, 'admin01', 'pwd111');
insert into users(username) values('admin01');
# 格式2: 省略列名,默认 = 全列名
insert into users values(1, 'admin01', 'pwd111');
# 格式3: 同时添加多个用户信息.
insert into users values(2,'admin01', 'pwd222'), (3, 'admin03', 'pwd333');
五, 总结
-
Q1: SQL语句的定义?
- 全称叫Structured Query Language,结构化查询语言,主要是实现用户(程序员)和数据库软件(例如:MySQL,Oracle)之间交互用的
-
Q2: SQL语句的分类?
- DDL: 数据定义语言, 主要是操作 数据库, 数据表, 字段, 进行: 增删改查(CURD)
涉及到的关键字: create, drop, alter, show - DML: 数据操作语言, 主要是操作 表数据, 进行: 增删改(CDU) -> 统称为 更新语句.
涉及到的关键字: insert, delete, update - DQL: 数据查询语言, 主要是操作 表数据, 进行: 查询操作®
涉及到的关键字: select, from, where - DCL: 数据控制语言, 主要是 创建用户, 设置权限, 隔离级别等.
- DDL: 数据定义语言, 主要是操作 数据库, 数据表, 字段, 进行: 增删改查(CURD)
-
Q3: SQL语句中常用的数据类型?
- 整型: int
- 浮点型: float, double, decimal
- 日期型: datetime
- 字符串型: varchar(长度)
-
Q4: DDL语句(数据定义 语言)的常用操作?
- DDL语句, 操作数据库
- DDL语句, 操作数据表
- DDL语句, 操作字段
-
Q5: DML语句(数据操作语言)的常用操作?
- DML语句操作 表数据 -> 增