小熊奶糖(BearCandy)
小熊奶糖(BearCandy)
发布于 2024-04-28 / 29 阅读
0
0

MySQL期中复习

MySQL期中复习

1.创建数据库my_db

create database my_db;

2.指定数据库my_db

use my_db;

3.创建数据表student并指定字符集

字段名 类型 约束
id int 主键,自增长
name vatchar(30) 非空,唯一
gender varchar(30) 非空
score float 默认值为0,非空
create table student (id int primary key auto_increment,name varchar(30) not null unique,gender varchar(30) not null,score float not null default 0) character set utf8mb4; 

4.插入三条数据

如果未指定字符集可能报错

使用

alter table student convert to character set utf8mb4;
insert into student (name,gender,score) values ('小明','男','55'),('小红','女','99'),('李四','男','60');

5.name字段改为sname

show index from student; //查看唯一约束索引
alter table student drop index name; //删除index的唯一约束
alter table student change name sname varchar(30) not null unique;

6.查看所有学生信息

select * from student;

7.查看名字带有“三”的值

select * from student where name like "%三%";

8.删除数据表

drop table student;

补充:

修改数据表

alter table mytb rename as mytb1; //修改数据表名字

修改数据库名

1.创建需要改成新名的数据库。
2.mysqldum 导出要改名的数据库
3.删除原来的旧库(确定是否真的需要)
当然这种方法虽然安全,但是如果数据量大,会比较耗时。

#创建数据库
CREATE DATABASE IF NOT EXISTS 库名 default charset utf8mb4 COLLATE utf8mb4_unicode_ci;#将db1库备份到db1.sql文件mysqldump -u root -p db1 > /tmp/db1.sql;
#Enter password:
#[root@xxx ~]#导入备份文件到新库db2mysql -u root -p db2 < /tmp/db1.sql;#Enter password:
#[root@xxx ~]#删除旧库(如果真的需要)DROP DATABASE db1;
alter table student rename column score to score1; //mysql8.0可以使用

复制表

CREATE TABLE new_table_name LIKE original_table_name;

INSERT INTO new_table_name SELECT * FROM original_table_name;

删除数据库

drop database 数据库名;

insert语句还有一种语法格式,使用set子句为表中的字段或者全部字段添加数据其格式如下:

insert into 数据表名 set 字段名 = 值1[ set 字段名 = 值2...];

更新数据

update 数据表名 set 字段名 = 值 [set 字段名 = 值2 ... ] where 表达式; //不加where全部更新,为危险操作

删除数据

方法一:使用 delete

delete from 数据表名[where 表达式];//不加where删除表中全部数据

方法二:使用truncate

truncate [table]数据表名;

truncate和delete的区别参见:https://blog.csdn.net/weixin_48720080/article/details/129362367

查询去重数据

select distinct 字段名 from 数据库名;

分组查询

select 字段名 from 数据表名 group by 字段名 order by 字段名 [desc降序|asc升序] 

实例(使用having进行条件筛选):

select deptno avg(sal) from emp group by depyno having avg(sal)<3000 order by 字段名 desc;
注意:having可以理解为where

限量查询limit

查询员工表中工资最高的5名员工

select * from emp order by sal desc limit 5;

使用order by对对多个字段排序

基本语法

SELECT column1, column2, ...
FROM table_name
ORDER BY column1 [ASC|DESC], column2 [ASC|DESC], ...

示例

假设有一个 students表,包含字段 sName(学生姓名), sAge(年龄), 和 sGrade(成绩)。

按年龄升序,成绩降序排序:

SELECT * FROM students
ORDER BY sAge ASC, sGrade DESC;

评论