MySQL数据库,表格 增查改删总结

    技术2024-10-13  48

    MySQL数据库,表格 增查改删总结

    SQL 语句分类

    Data Definition Language (DDL 数据定义语言) 如:建库,建表

    Data Manipulation Language(DML 数据操纵语言),如:对表中的记录操作增删改

    Data Query Language(DQL 数据查询语言),如:对表中的查询操作

    Data Control Language(DCL 数据控制语言),如:对用户权限的设置

    我对上面的方法进行了一次整理


    增 Create

    ----->数据库

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

    ----->表格 创建表的格式 CREATE TABLE 表 名 ( 字段名 1 字段类型 1, 字段名 2 字段类型 2 );

    create table student ( id int, -- 整 数 name varchar(20), -- 字符串 birthday date -- 生日,最后没有逗号 );

    创建 s1 表,s1 表结构和 student 表结构相同

    -- 创建一个 s1 的表与 student 结构相同 create table s1 like student; desc s1;

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

    --所有的字段名都写出来 INSERT INTO 表名 (字段名 1, 字段名 2, 字段名 3) VALUES (1,2,3); insert into student (id,name,age,sex) values (1, '孙悟空', 20, '男'); --不写字段名 INSERT INTO 表名 VALUES (1,2,3); insert into student values (3, '孙悟饭', 18, '男', '龟仙人洞中'); --插入部分数据 INSERT INTO 表名 (字段名 1, 字段名 2, ...) VALUES (1,2, ...); insert into student values (3, '孙悟饭', 18, '男');

    注: 没有添加数据的字段会默认为 NULL , 但是 timestamp 类型 是特殊的(不添加内容默认计算机当前时间)

    表格复制

    将表名 2 中的所有的列复制到表名 1 中

    INSERT INTO 表 名 1 SELECT * FROM 表 名 2; --将 student 表中的数据添加到 student2 中 insert into student2 select * from student; --如果只想复制 student 表中 name,age 字段数据到 student2 中, 两张表都写出相应的列名 insert into student2 (name,age) select name,age from student;

    查 Reterive

    ----->数据库

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

    ----->表格

    --查看某个数据库中的所有表 SHOW TABLES; --查看表结构 DESC 表名; --查看 day21 数据库中的所有表 use day21; show tables; --查看某个表 SHOW CREATE TABLE 表名; show create table student; --查看 student 表的结构 desc student;

    ----->查看表中的数据DQL 1)查询表所有行和列的数据

    SELECT * FROM 表名; --查询学生表中所有内容: select * from student;

    2)查询指定列

    SELECT 字段名 1, 字段名 2, 字段名 3, ... FROM 表名; --查询 student 表中的 name 和 age 列 select name,age from student;

    3)指定列的别名进行查询

    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

    4)查询结果参与运算

    --某列数据和固定值运算 SELECT 列名 1 + 固定值 FROM 表名; --某列数据和其他列数据参与运算 SELECT 列名 1 + 列名 2 FROM 表名; -- 给所有的数学加 5 分 select math+5 from student; -- 查询 math + english 的和 select *,(math+english) as 总成绩 from student; -- as 可以省略

    注: 查询时的加减操作不会影响表格中的数据

    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=5; --查询 english 成绩大于等于 75,且小于等于 90 的学生 select * from student3 where english between 75 and 90;

    in 关键字

    SELECT 字段名 FROM 表名 WHERE 字段 in (数据 1, 数据 2...); -- 查询 id 是 1 或 3 或 5 的学生 select * from student3 where id in(1,3,5); -- 查询 id 不是 1 或 3 或 5 的学生 select * from student3 where id not in(1,3,5);

    like 关键字

    SELECT * FROM 表名 WHERE 字段名 LIKE '通配符字符串'; 例: -- 查询姓马的学生 select * from student3 where name like '马%'; -- 查询姓马,且姓名中有两个字的学生 select * from student3 where name like '马_';

    改 Update

    ----->数据库 将 db3 数据库的字符集改成 utf8

    alter database db3 character set utf8;

    ----->表格

    1)修改表名

    RENAME TABLE 表名 TO 新表名; --将学生表 student 改名成 student2 rename table student to student2;

    2)修改字符集 character set

    ALTER TABLE 表名 character set 字符集; --将 student2 表的编码修改成 gbk alter table student2 character set gbk;

    3)添加表列 ADD

    ALTER TABLE 表名 ADD 列名 类型; --为学生表添加一个新的字段 remark,类型为 varchar(20) alter table student add remark varchar(20);

    4)修改列类型 MODIFY

    ALTER TABLE 表名 MODIFY 列名 新的类型; --将 student 表中的 remark 字段的改成 varchar(100) 类型 alter table student modify remark varchar(100);

    5)修改列名 CHANGE

    ALTER TABLE 表名 CHANGE 旧列名 新列名 类型; --将 student 表中的 remark 字段名改成 intro,类型 varchar(30) alter table student change remark intro varchar(30);

    ----->修改表中的数据DML

    1)不带条件修改数据

    UPDATE 表名 SET 字段名=; -- 修改所有的行 -- 不带条件修改数据,将所有的性别改成女 update student set sex = '女';

    2)带条件修改数据

    UPDATE 表名 SET 字段名=WHERE 字段名=; -- 带条件修改数据,将 id 号为 2 的学生性别改成男 update student set sex='男' where id=2; -- 一次修改多个列,把 id 为 3 的学生,年龄改成 26 岁,address 改成北京 update student set age=26, address='北京' where id=3;

    删 delete

    ----->数据库 删除 db2 数据库

    drop database db2;

    ----->表格

    直接删除表 s1 表

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

    删除列 DROP

    ALTER TABLE 表名 DROP 列名; --删除 student 表中的字段 intro alter table student drop intro;

    ----->删除表中的数据DML

    1)不带条件删除数据

    DELETE FROM 表名; DELETE FROM 表名 [WHERE 条件表达式] delete from student;

    如果没有指定 WHERE 子句,MySQL 表中的所有记录将被删除。 你可以在 WHERE 子句中指定任何条件

    2)带条件删除数据

    DELETE FROM 表名 WHERE 字段名=; -- 带条件删除数据,删除 id 为 1 的记录 delete from student where id=1;

    3)使用 truncate 删除表中所有记录

    TRUNCATE TABLE 表名; -- 不带条件删除数据,删除表中的所有数据 truncate table student;

    truncate 和 delete 的区别: truncate 相当于删除表的结构,再创建一张表。

    Processed: 0.013, SQL: 9