MySQL--基础回顾 (二) DDL、DML、DQL

语句分类详解:

一、DDL----操作数据库和表结构

1.1 DDL操作数据库

  1.1.1创建数据库

  创建数据库  CREATE DATABASE 数据库名;  判断数据库是否已经存在,不存在则创建数据库  CREATE DATABASE IF NOT EXISTS 数据库名;  创建数据库并指定字符集  CREATE DATABASE 数据库名 CHARACTER SET 字符集;

  具体实现:

-- 直接创建数据库 db1
create database db1;
-- 判断是否存在,如果不存在则创建数据库 db2
create database if not exists db2;
-- 创建数据库并指定字符集为 gbk
create database db3 default character set gbk;
  1.1.2查看数据库
-- 查看所有的数据库
show databases;

-- 查看某个数据库的定义信息
show create database db3;
show create database db1;

  注意:按 tab 键可以自动补全关键字

  1.1.3修改数据库

  修改数据库默认的字符集  ALTER DATABASE 数据库名 DEFAULT CHARACTER SET 字符集;  具体实现:

将 db3 数据库的字符集改成 utf8
alter database db3 character set utf8;
  1.1.4删除数据库

  删除数据库的语法  DROP DATABASE 数据库名;

  具体实现:

删除 db2 数据库
drop database db2;

  注意:每行 SQL 语句需要选中再执行,可以按 F9

  使用数据库

  查看正在使用的数据库  SELECT DATABASE(); 使用的一个 mysql 中的全局函数  使用/切换数据库  USE 数据库名;  具体实现:

-- 查看正在使用的数据库
select database();
-- 改变要使用的数据库
use db4;

1.2 DDL操作表结构

先使用数据库才能进行操作表

1.2.1 创建表

  创建表的格式

CREATE TABLE 表名 (
字段名 1 字段类型 1,
字段名 2 字段类型 2
);

  具体操作:

  • 创建 student 表包含 id,name,birthday 字段
  • create table student (
    id int, -- 整数
    name varchar(20), -- 字符串
    birthday date -- 生日,最后没有逗号
    );
    
1.2.2 查看表

  查看某个数据库中的所有表
  SHOW TABLES;
  查看表结构
  DESC 表名;
  查看创建表的 SQL 语句
  SHOW CREATE TABLE 表名;

  • 具体操作
--查看 day21 数据库中的所有表
use day21;
show tables;

--查看 student 表的结构
desc student;

--执行结果:

--查看 student 的创建表 SQL 语句
show create table student;

执行结果:
-- 存在的目的是为了避免关键字的冲突
CREATE TABLE `student` (
    `id` int(11) DEFAULT NULL,
    `name` varchar(20) DEFAULT NULL,
    `birthday` date DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8

快速创建一个表结构相同的表

创建 s1 表,s1 表结构和 student 表结构相同
-- 创建一个 s1 的表与 student 结构相同
create table s1 like student;
desc s1;
1.2.3 修改表

  添加表列 ADD

  ALTER TABLE 表名 ADD 列名 类型;

  修改列类型 MODIFY

  ALTER TABLE 表名 MODIFY 列名 新的类型;

  删除列 DROP

  ALTER TABLE 表名 DROP 列名;

  修改表名

  RENAME TABLE 表名 TO 新表名;

  修改字符集 character set

  ALTER TABLE 表名 character set 字符集;

1.2.4 删除表

  直接删除表

  DROP TABLE 表名;
  判断表是否存在,如果存在则删除表

  DROP TABLE IF EXISTS 表名;

  具体实现:

-- 直接删除表 s1 表
drop table s1;
-- 判断表是否存在并删除 s1 表
drop table if exists `create`;

与直接删除的区别
  如果表不存在,不删除,存在则删除

二、DML----操作表中数据

2.1 DML操作表中的数据

  2.1.1 插入记录

  INSERT [INTO] 表名 [字段名] VALUES (字段值)
  INSERT INTO 表名:表示往哪张表中添加数据
  (字段名 1, 字段名 2, …):要给哪些字段设置值
  VALUES (值 1, 值 2, …):设置具体的值

  插入全部字段两种方式:

  •  所有的字段名都写出来

  INSERT INTO 表名 (字段名 1, 字段名 2, 字段名 3…) VALUES (值 1, 值 2, 值 3);

  •  不写字段名

  INSERT INTO 表名 VALUES (值 1, 值 2, 值 3…);

  插入部分数据

  INSERT INTO 表名 (字段名 1, 字段名 2, ...) VALUES (值 1, 值 2, ...);

 

  2.1.2 更新表记录
  • UPDATE 表名 SET 列名=值 [WHERE 条件表达式]
  • UPDATE: 需要更新的表名
  • SET: 修改的列值
  • WHERE: 符合条件的记录才更新
  • 你可以同时更新一个或多个字段。
  • 你可以在 WHERE 子句中指定任何条件。

   不带条件修改数据
   UPDATE 表名 SET 字段名=值; -- 修改所有的行带条件修改数据
   UPDATE 表名 SET 字段名=值 WHERE 字段名=值;

  具体实现

-- 不带条件修改数据,将所有的性别改成女
update student set sex = '女';
-- 带条件修改数据,将 id 号为 2 的学生性别改成男
update student set sex='男' where id=2;
-- 一次修改多个列,把 id 为 3 的学生,年龄改成 26 岁,address 改成北京
update student set age=26, address='北京' where id=3;
  2.1.3 删除表记录
  • DELETE FROM 表名 [WHERE 条件表达式]
  • 如果没有指定 WHERE 子句,MySQL 表中的所有记录将被删除。
  • 你可以在 WHERE 子句中指定任何条件

  不带条件删除数据
  DELETE FROM 表名;带条件删除数据
  DELETE FROM 表名 WHERE 字段名=值;使用 truncate 删除表中所有记录
  TRUNCATE TABLE 表名;truncate 和 delete 的区别:
  truncate 相当于删除表的结构,再创建一张表。

  具体实现

-- 带条件删除数据,删除 id 为 1 的记录
delete from student where id=1;
-- 不带条件删除数据,删除表中的所有数据
delete from student;

三、DQL----查询表中的数据

3.1 简单查询

   查询表所有行和列的数据

    使用*表示所有列
    SELECT * FROM 表名;查询所有的学生:select * from student;查询指定列查询指定列的数据,多个列之间以逗号分隔
    SELECT 字段名 1, 字段名 2, 字段名 3, ... FROM 表名;查询 student 表中的 name 和 age 列select name,age from student;

3.2 指定列的别名进行查询

  使用关键字
  使用别名的好处: 显示的时候使用新的名字,并不修改表的结构。语法:
    对列指定别名
    SELECT 字段名 1 AS 别名, 字段名 2 AS 别名... FROM 表名;
    对列和表同时指定别名
    SELECT 字段名 1 AS 别名, 字段名 2 AS 别名... FROM 表名 AS 表别名;具体操作:

-- 使用别名
select name as 姓名,age as 年龄 from student;
-- 表使用别名
select st.name as 姓名,age as 年龄 from student as st

3.3 清除重复值

  查询指定列并且结果不出现重复数据
  SELECT DISTINCT 字段名 FROM 表名;具体操作:

查询学生来至于哪些地方
-- 查询学生来至于哪些地方
select address from student;
-- 去掉重复的记录
select distinct address from student;

3.4 查询结果参与运算

  某列数据和固定值运算
  SELECT 列名 1 + 固定值 FROM 表名;
  某列数据和其他列数据参与运算
  SELECT 列名 1 + 列名 2 FROM 表名;

 注意: 参与运算的必须是数值类型

3.5 条件查询

为什么要条件查询?
  如果没有查询条件,则每次查询所有的行。实际应用中,一般要指定查询的条件。对记录进行过滤。条件查询的语法
SELECT 字段名 FROM 表名 WHERE 条件;

流程:取出表中的每条数据,满足条件的记录就返回,不满足条件的记录不返回

具体实现:

准备数据
创建一个学生表,包含如下列:

 具体操作:

-- 查询 math 分数大于 80 分的学生
select * from student3 where math>80;

-- 查询 english 分数小于或等于 80 分的学生
select * from student3 where english <=80;

-- 查询 age 等于 20 岁的学生
select * from student3 where age = 20;

-- 查询 age 不等于 20 岁的学生,注:不等于有两种写法
select * from student3 where age <> 20;
select * from student3 where age != 20;

 具体操作:

-- 查询 age 大于 35 且性别为男的学生(两个条件同时满足)
select * from student3 where age>35 and sex='男';

-- 查询 age 大于 35 或性别为男的学生(两个条件其中一个满足)
select * from student3 where age>35 or sex='男';

-- 查询 id 是 1 或 3 或 5 的学生
select * from student3 where id=1 or id=3 or id=5;

-- 查询姓马的学生
select * from student3 where name like '马%';
select * from student3 where name like '马';

-- 查询姓名中包含'德'字的学生
select * from student3 where name like '%德%';

-- 查询姓马,且姓名有两个字的学生
select * from student3 where name like '马_';
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值