mysql:基础语法

这篇博客介绍了MySQL的基础知识,包括数据库概念、安装与使用,以及SQL语句的分类和应用,如DDL(数据定义语言)用于创建和修改数据库及表结构,DML(数据操纵语言)涉及数据的增删改操作,帮助读者掌握数据库管理和SQL操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、数据库介绍

1.1 什么是数据库

按照特殊格式存储数据的仓库,方便我们的存取使用

1.2 关系型数据库管理系统

应用软件–mysql:操作仓库、表、记录(信息)

在这里插入图片描述

1.3 实体和表关系

一个实体对应一张表,一个对象对应一条记录

在这里插入图片描述

1.4常见数据库
  • MYSQL:开源免费的数据库,小型的数据库.已经被Oracle收购了.MySQL6.x版本也开始收费。
  • Oracle:收费的大型数据库,Oracle公司的产品。Oracle收购SUN公司,收购MYSQL。
  • DB2 :IBM公司的数据库产品,收费的。常应用在银行系统中.

2、数据库安装和使用

2.1 mysql安装

安装时不要安装到有中文路径的地方

2.2 使用

1)、window服务开启

2)、dos窗口:

需要使用超级管理员身份登录

关闭:net stop mysql

启动:net start mysql

2.3 连接数据库

直接连接数据库:

-- 格式
mysql -u用户名 -p密码

-- 例如
mysql -uroot -proot

指定ip连接数据库

-- 格式
mysql -h主机地址 -u用户名 -p密码

-- 例如
mysql -hlocalhost -uroot -proot

指定ip全名连接数据库

-- 格式
mysql --host=主机地址 --user=用户名 --password=密码

-- 例如
mysql --host=127.0.0.1 --user=root --password=root

使用图形化工具

3、SQL语句

3.1 什么是SQL

Structured Query Language 结构化查询语言

通过SQL,对数据库进行操作,可以实现对记录增删改查

【CURD】:create 创建、update 修改、retrieve 检索(read)、delete 删除

3.2 方言

sql是一套标准,所有的数据库厂商都支持,但是各自厂商在此基础上增加了特有的语句,这部分我们称为方言;例如:MySQL 注释

3.3 语法
  1. sql语句可以单行或多行书写,以分号结尾
  2. sql语句忽略大小写,建议关键字大写
  3. 注释

单行:-- 注释内容 # 注释内容(MySQL方言)

多行:/* 注释内容 */

3.4 分类
分类操作对象主要关键字
DDL:数据定义语言 Data Definition Language数据库 表create drop alter
DML:数据操作语言 Data Manipulation Language记录insert update delete
DQL:数据查询语言【非官方】Data Query Language记录select
TCL:事务控制语言 Transaction Control Language事务commit rollback
DCL:数据控制语言 Data Control Language用户 权限grant revoke
3.5 DDL

进入企业开发,一般一个项目对应一个仓库,一个实体对应一张表,仓库和表创建完毕后基本不再修改

a)、操作数据库

创建数据库

直接创建数据库

-- 格式
create database 数据库名;

-- 例如
create database db_day01;

先判断数据库是否存在,若不存在创建

-- 格式
create database if not exists 数据库名;

-- 例如
create database if not exists db_day01;

创建数据库并指定字符集 GBK

-- 格式
create database 数据库名 character set 字符集;

-- 例如
create database db_day01_1 character set gbk;

查看数据库

查看所有数据库

-- 格式
show databases;

查看建库语句

-- 格式
show create database 数据库名;

-- 例如
show create database db_day01_1;

修改数据库

修改数据库字符集 utf8

-- 格式
alter database 数据库名 character set 字符集;

-- 例如
alter database db_DAY01_1 character set utf8;

删除数据库

直接删除数据库

-- 格式
drop database 数据库名;

-- 例如
drop database db_DAY01_1;

先判断数据库是否存在,若存在进行删除

-- 格式
drop database if exists 数据库名;

-- 例如
drop database if exists db_day01_1;

使用数据库

查看当前的库

-- 格式  函数==方法
select database();

使用、切换数据库

-- 格式
use 数据库名;

-- 例如
use db_day01;

b)、操作表(前提:显示用某个数据库

创建表

-- 格式
create table 表名(
    字段名 字段类型,
    字段名 字段类型,
    ...
);

-- 例如
create table student(
    id int,
    name varchar(32),
    birthday date
);

常用类型

int 整型
double 浮点型
varchar(指定长度) 字符串
date 日期型 格式:yyyy-MM-dd,只有年月日,没有时分秒

查看表

查看所有表

-- 格式
show tables;

查看表结构

-- 格式
desc 表名;

-- 例如
desc student;

查看建表语句

-- 格式
show create table 表名;

-- 例如
show create table student;

快速创建表结构

-- 格式
create table 新表名 like 旧表;

-- 例如
create table teacher like student;

修改表

添加字段

-- 格式
alter table 表名 add 字段名 字段类型;

-- 例如
alter table teacher add remark varchar(50);

修改字段类型

-- 格式
alter table 表名 modify 字段名 新类型;

-- 例如
alter table teacher modify remark varchar(666);

修改字段名

-- 格式
alter table 表名 change 旧字段名 新字段名 字段类型;

-- 例如
alter table teacher change remark intro varchar(111);

删除字段

-- 格式
alter table 表名 drop 字段名;

-- 例如
alter table teacher drop intro;

修改表名

-- 格式
rename table 旧表名 to 新表名;

-- 例如
rename table teacher to tch;

修改表字符集 GBK

-- 格式
alter table 表名 character set 字符集;

-- 例如
alter table tch character set gbk;

删除表

直接删除

-- 格式
drop table 表名;

-- 例如
drop table tch;

先判断表是否存在,若存在删除

-- 格式
drop table if exists 表名;

-- 例如
drop table if exists tch;
3.6 DML

对记录的增删改

a)添加记录

插入全部字段

-- 格式
insert into 表名 values(1,值2,值3...);

-- 例如
insert into student values(1,'tom','1999-12-12');
insert into student values(3,'jack',NULL);

要求

字符串可以插入所有的数据类型,底层会动转换,推荐使用单引号

指定字段名插入

-- 格式
insert into 表名(字段1,字段2...)values(1,值2...);

-- 例如
insert into student(name,id) values('jerry',2);-- 某个字段不写默认为null

蠕虫复制

把已有表的记录快速插入到另一张表,压力测试

要求:二张表的结构一致

-- 快速创建表结构
create table stu like student;
-- 压力测试
insert into stu select * from student;

中文乱码

使用dos窗口 GBK;数据库 UTF8!

查看数据库字符集

-- 格式
show variables like '%character%';

临时修改字符集

-- 格式
set names gbk;

在这里插入图片描述

b)修改记录

[] 里面的关键字可写可不写

-- 格式
update 表名 set 字段名=字段值,字段名=字段值 [where 条件];

-- 例如
update stu set birthday='1998-1-1';-- 将会使表中的所有记录的这个字段进行修改,所以一般不用
update stu set birthday='1996-1-1' where id =4;-- 推荐使用

c)删除记录

-- 格式
delete from 表名 [where 条件];

-- 例如
delete from stu;-- 收拾行李跑路吧
delete from student where id = 1;-- 推荐使用

truncate

收拾行李的时间都没了,赶紧订机票把

摧毁表,重建表,与原来表结构相同

-- 格式
truncate table 表名;

-- 例如
truncate table student;
3.7 DQL

单表简单查询

准备数据

-- 创建表
create table student1(
	id int,
	name varchar(20),
	chinese double,
	english double,
	math double
);
-- 插入记录
insert into student1(id,name,chinese,english,math) values(1,'tom',89,78,90);
insert into student1(id,name,chinese,english,math) values(2,'jack',67,98,56);
insert into student1(id,name,chinese,english,math) values(3,'jerry',87,78,77);
insert into student1(id,name,chinese,english,math) values(4,'lucy',88,NULL,90);
insert into student1(id,name,chinese,english,math) values(5,'james',82,84,77);
insert into student1(id,name,chinese,english,math) values(6,'jack',55,85,45);
insert into student1(id,name,chinese,english,math) values(7,'tom',89,65,30);

练习

-- 查询表中所有学生的信息
select * from student1;
-- 查询表中所有学生的姓名和对应的语文成绩
select name,chinese from student1;
-- 查询表中学生姓名(去重)
select distinct name from student1;
select distinct name,chinese from student1;
-- 在所有学生数学分数上加10分特长分
select name,math+10 from student1;
-- 统计每个学生的总分
select name,math+ifnull(english,0)+chinese from student1;
-- 使用别名表示学生总分
select name,(math+ifnull(english,0)+chinese) as total from student1;
select stu1.name,tch1.name from student1 [as] stu1;

distinct

对查询结果,完全相同的内容进行去重显示

-- 格式
select distinct 字段名1,字段名2 from 表名;

ifnull()函数

-- 格式
ifnull(字段名,定义值) -- 如果该字段有值就直接返回,如果该字段没有值返回我们定义的值

完整格式

select [distinct] * | ifnull(字段名,定义值) [as] 别名 from 表名 [as] 表别名

复习

  • 能够理解数据库的概念

    按照特殊格式进行存储数据

  • 能够安装MySQL数据库

  • 能够启动,关闭及登录MySQL

    window窗口的服务中进行开关

    DOS窗口:

    开启:net start mysql
    关闭:net stop mysql
    
  • 能够使用SQL语句操作数据库

    create database 数据库名;-- 创建数据库
    create database if not exists 数据库名;-- 先判断是否存在该数据库,不存在就创建
    create database 数据库名 character set 字符集;-- 创建指定字符集的数据库
    show database;-- 查看所有的数据库
    show create database 数据库名;-- 查看创建该数据库的语句
    alter database 数据库名 craacter set 字符集;-- 修改该数据库的字符集
    drop database数据库名;-- 删除该数据库
    drop if exists 数据库名;-- 先判断数据库是否存在,存在就进行删除
    select database();-- 查看当前使用的数据库
    use 数据库名;-- 使用,或切换数据库
    
  • 能够使用SQL语句操作表结构

    =- 7对表进行操作前必须先使用数据库
    create table 表名(字段名 字段类型...);-- 创建表,并创建表中字段
    show tables;-- 查看该数据库下的所有表
    desc 表名;-- 查看该表的结构
    show create table 表名;-- 查看建表语句
    create table 表名1 like 表名2;-- 快速建表,表名1的结构与表名2的结构相同
    alter table 表名 add 字段名 字段类型;-- 为表中添加一个字段
    alter table 表名 modify 字段名 新类型;-- 修改该字段的类型
    alter table 表名 change 旧字段名 新字段名 字段类型;-- 修改字段名,且可以修改新字段的字段类型
    alter table 表名 drop 字段名;-- 删除指定字段
    rename table 旧表名 to 新表名;-- 修改表名
    alter table 表名 character set 字符集;-- 修改表的字符集
    drop table 表名;-- 删除表
    drop table if not exists 表名;-- 先判断表是否存在,存在就删除
    
  • 能够使用SQL语句进行数据的添加修改和删除的操作

    insert into 表名(字段名1,字段名2...)values(1,值2...);-- 为指定字段插入内容,不插入内容默认为null
    insert into 表名 values(1,值2...);-- 为表中全部字段插入内容,插入内容顺序要与字段相对应
    insert table 新表名 select * from 旧表名;-- 将旧表中的记录快速插入到新表中
    show variables like '%character%';-- 参看数据库下的字符集
    set names 字符集;-- 临时修改字符集
    update 表名 set 字段名=字段值,字段名=字段值 where 条件;-- 通过条件修改对应记录的值
    delete from 表名 where 条件;-- 根据条件删除记录
    
  • 能够使用SQL语句添加约束

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值