数据库基本操作:

1.数据库的操作

  1. 查看所有的数据库

show databases;

  1. 创建数据库

create database if not exists 库名;

  1. 删除数据库

drop database if exists 库名;

  1. 选中库 切换当前数据库

use 库名;

  1. 查看创建数据库语句

show create database 库名;

2 .数据表的操作

  1. 查看所有表

show tables;

  1. 创建表

create table if not exists 表名(

列名 类型 【约束】,

列名 类型 【约束】,

....

);

  1. 删除表

drop table if exists 表名;

  1. 查看表结构

desc 表名;

  1. 查看创建表语句

show create table 表名;

练习:

1、创建分类表

分类表名称:category

分类表中有:分类ID和分类名称两个字段

分类ID:cid,为整型,

分类名称:cname,为字符串类型,最大允许填写100长度的字符串

CREATE TABLE IF NOT EXISTS category(

cid INT,

cname VARCHAR(100)

)

2、创建测试表

测试表名称:test1

测试表中有:测试ID和测试时间两个字段

测试ID:tid,为整型

测试时间:tdate,为年月日的日期类型

CREATE TABLE test1(

tid INT,

tdate DATE

)

3、创建学生表

学生表名称:student

学生表中有:学号, 姓名, 年龄, 性别, 邮箱五个字段

学号:sid为整型且最大长度为6

姓名:sname为字符串类型,最大允许填写30长度的字符串

年龄: sage为整型且最大长度为3

性别: ssex为字符串类型,最大允许填写2长度的字符串

邮箱: semail为字符串类型,最大允许填写50长度的字符串

CREATE TABLE student(

sid INT(6),

sname VARCHAR(30),

sage INT(3),

ssex VARCHAR(2),

semail VARCHAR(50)

)

查询表结构

DESC student;

查询创建表语句

SHOW CREATE TABLE student;

删除表

DROP TABLE IF EXISTS test1;

3 修改表操作(了解)

一般修改表结构,最多进行字段的添加操作;

alter table 表名 add 列名 类型(长度) 约束;

作用:修改表添加列.

例如:

#1,为分类表添加一个新的字段为 分类描述 cdesc varchar(20)

ALTER TABLE category ADD cdesc VARCHAR(20);

alter table 表名 modify 列名 类型(长度) 约束;

作用:修改表修改列的类型长度及约束.

例如:

#2, 为分类表的描述字段进行修改,类型varchar(50)

ALTER TABLE category MODIFY cdesc VARCHAR(50);

alter table 表名 change 旧列名 新列名 类型(长度) 约束;

作用:修改表修改列名.

例如:

#3, 为分类表的分类名称字段进行更换 更换为 description varchar(30)

ALTER TABLE category CHANGE cdesc description VARCHAR(30);

alter table 表名 drop 列名;

作用:修改表删除列.

例如:

#4, 删除分类表中description这列

ALTER TABLE category DROP description;

rename table 表名 to 新表名;

作用:修改表名

例如:

#5, 为分类表category 改名成 category2

RENAME TABLE category TO category2;

alter table 表名 character set 字符集(了解);

作用:修改表的字符集

例如:

#6, 为分类表 category 的编码表进行修改,修改成 gbk

ALTER TABLE category CHARACTER SET gbk;3.

3.DML数据操作语言(重点)

DML(Data Manipulation Language)数据操作语言,主要是针对数据表做增、删、改操作。

主要涉及的关键字有:

insert 添加

update 修改

delete 删除

下面以学生表为例给大家讲解这三种操作

1 .添加操作

  • 给指定列添加数据
复制代码
INSERT INTO 表名(列名1,列名2,…) VALUES(值1,值2,…);
  • 给全部列添加数据
复制代码
INSERT INTO 表名 VALUES(值1,值2,…);
此方法不推荐使用,因为无法确保列与值的个数一一对应,容易出错。
注意:
    1. 插入值时要与值的个数, 顺序和字段类型, 以及约束保持一致.
    2. 插入值的长度要小于或等于设置的字段长度.
  • 批量添加数据
复制代码
INSERT INTO 表名(列名1,列名2,…) VALUES(值1,值2,…),(值1,值2,…),(值1,值2,…)…;
INSERT INTO 表名 VALUES(值1,值2,…),(值1,值2,…),(值1,值2,…)…;
复制代码
#向学生表student中添加一条记录
INSERT INTO student(sid, sname, sage, ssex, semail) VALUES(1, '柳岩', 18, '女', 'liuyan@163.com');
#字段名是否可以省略不写  ==> 可以省略(不建议省略)
INSERT INTO student VALUES(2, '王冰冰', 20, '男', 'bingbing@126.com');
INSERT INTO student VALUES(3, '宝强绿', 50, '人妖王', 'baoqiang@126.com');
​
#批量添加数据
#向学生表中添加多行记录
INSERT INTO student VALUES(4, '黄渤', 18, '男', 'huangbo@163.com'),
(5, '刘涛', 18, '女', 'liutao@163.com'),
(6, '张艺兴', 30, '男', 'xiaomianyang@163.com')

2 .修改操作

  • 修改表数据
复制代码
UPDATE 表名 SET 列名1=值1, 列名2=值2, … [WHERE 条件] ;

注意:

  1. 修改语句中如果不加条件,则将所有数据都修改!

  2. 像上面的语句中的中括号,表示在写sql语句中可以省略这部分

复制代码
#需求: 修改学生表中性别(不添加条件的修改慎用)
UPDATE student SET ssex='男';
​
#需求: 根据sid=1修改这个学生的性别;
UPDATE student SET ssex='女' WHERE sid=1;
/*
思考: 修改时是否可以根据姓名去修改性别, 
如果出现同名的情况, 会出现问题, 修改时不建议根据姓名修改;
要通过sid来修改, 因为sid是唯一的
*/
#同时修改多个字段
UPDATE student SET sage=38, ssex='女' WHERE sid=6;

3 .删除操作

  • 删除数据
复制代码
第一种方式:
    DELETE FROM 表名 [WHERE 条件] ;
第二种方式:
    TRUNCATE table 表名; #将表中的数据清空
复制代码
#需求: 将sid=4删除这个学生信息
DELETE FROM student WHERE sid = 4;
​
#需求:将表中的数据全部删除
DELETE FROM student;
​
#需求:将表中的数据全部清空
TRUNCATE TABLE student;
/*
区别:(面试题)
   delete删除是一行一行删除, 后边可以跟条件, 而truncate删除后不能跟条件
   delete删除是一行一行删除, 删除效率较慢, 而truncate删除是将表中结构删除又重新创建了一张一模一样的表结构, truncate删除效率要高于delete删除
*/
相关推荐
笃行3502 分钟前
国产化落地避坑 · 干货向|Oracle 迁金仓 KES,我把外连接消除排在隐性陷阱第一位
数据库
老纪的技术唠嗑局22 分钟前
花一年时间整理出的:AI 数据库混合搜索入门实践
数据库
川石课堂软件测试1 小时前
安全测试|常见SQL注入攻击方式、实例及预防
服务器·数据库·sql·功能测试·测试工具·安全·单元测试
笃行3501 小时前
国产化落地避坑 · 干货向|迁移后那条「测试能过、一上生产就查空」的 SQL,多半栽在 WHERE 函数顺序上
数据库
蓝田~2 小时前
MySQL慢查询怎么优化?B+Tree索引原理+MVCC读不阻塞写+EXPLAIN执行计划,从5秒到0.05秒
数据库·mysql
sunxunyong2 小时前
doris用户资源组配置
数据库
Cloud云卷云舒3 小时前
云卷云舒:HaishanDB的AI原生能力主要应用场景
数据库·人工智能·ai-native·haishandb·移动云长期记忆
时间的拾荒人3 小时前
MySQL 视图详解
android·数据库·mysql
qq_366086223 小时前
sql 查询中关于 null 值判断的问题
数据库·sql
测试修炼手册3 小时前
[测试技术] JUnit 6 入门与实战:断言、参数化与 Mockito
数据库·junit·sqlserver