MySQL基础(之DDL、DML)

DB和DBMS的区别

DBS(数据库系统)包含:DB(数据库)、DBMS(数据库管理系统)。

1、DB,即存储在磁带、磁盘、光盘等外存介质上,按一定结构组织在一起的相关数据集合。

2、DBMS,是一组能够描述、管理、维护数据库的程序系统。它按照一种公有和可控制的方法完成插入新数据、修改和检索原有数据的操作。

SQL语言的分类,分别有什么作用,及其关键字有什么

1、DDL(数据定义语言):用来操作数据库和表

关键字:cteate drop alter

2、DML(数据操作语言):用来对数据库中表的数据进行增删改

关键字:insert delete update

3、DQL(数据查询语言):用来对数据库中表的数据进行查询

关键字:select from where

4、TCL(事务控制语言):用来控制数据库的事务操作

关键字:commit rollback

5、DQL(数据控制语言):用来定义数据库的访问权限和安全级别,及创建用户。

关键字:grant revoke

DDL

创建数据库

sql 复制代码
# 创建数据库
CREATE DATABASE mydb1;
# 创建数据库,并采用指定的字符集
CREATE DATABASE mydb2 CHARACTER SET UTF8;

查看数据库

sql 复制代码
# 查看当前数据库服务器中的所有的数据库
SHOW DATABASES;
# 查看创建数据库mydb1定义的信息
SHOW CREATE DATABASE mydb1;

修改数据库

sql 复制代码
# 将数据库mydb1的字符集修改为GBK
ALTER DATABASE mydb1 CHARACTER SET GBK;

删除数据库

sql 复制代码
DROP DATABASE mydb1;

其他操作

sql 复制代码
# 切换当前使用的数据库
USE mydb1;
# 查询当前使用的数据库
SELECT DATABASE();

表与表之间的关系

  1. 一对一

在实际开发中应用不多。因为一对一的关系,完全可以放到一个表中

  1. 一对多

一对多建表原则:在多的一方,创建一个字段,作为外键作为指向另外一的那一方的主键。

  1. 多对多

多对多的建表原则:需要创建第三张表,在中间表中至少需要有两个字段。这两个字段分别作为外键指向各自一方的主键。

数据类型

int:整型

double:浮点型,例如double(5,2):表示最多有5位,其中必须有两位是小数,即最大值是 999.99

char:固定长度的字符串,例如char(5) : 'aa' 占5位

varchar:可变长度的字符串,例如varchar(5):'aa' 占2位

text:字符串类型

blob:字节类型

date:日期类型,格式是:yyyy-MM-dd

time:时间类型,格式为:hh:mm:ss

timestamp:时间戳类型,yyyy-MM-dd hh:mm:ss,会自动赋值

datetime:时间类型,yyyy-MM-dd hh:mm:ss

DDL使用(表)

sql 复制代码
# DDL操作(表)
# 创建表格
CREATE TABLE t_users(name varchar(50), age INT, gender VARCHAR(10), height INT, weight INT);
# 删除表格
DROP TABLE t_users;
# 查看当前数据库中所有的表
SHOW TABLES;
# 查看创建一个表的信息
SHOW CREATE TABLE t_users;
# 查看一张表的字段信息
DESC t_users;
# 给一张表添加一个字段
ALTER TABLE t_users ADD score DOUBLE(5,2);
# 修改一张表的字段类型
ALTER TABLE t_users MODIFY score INT;
# 修改一张表的字段名
ALTER TABLE t_users CHANGE name uname VARCHAR(50);
# 修改一张表的字符集
ALTER TABLE t_users CHARACTER SET GBK;
# 删除一张表中的字段
ALTER TABLE t_users DROP score;

DML操作

DML指的是对数据库中的数据进行增、删、改的操作。不要和DDL搞混了。
在SQL中,字符串类型和日期类型需要用单引号括起来

空值:null / NULL

sql 复制代码
# 增:INSERT INTO
# 向表t_users插入一条数据,并且给每一个字段进行赋值,小括号中的是字段对应的值。要保证顺序。
INSERT INTO t_users VALUES('lily', 21, 'female', 172, 60);
INSERT INTO t_users VALUES('lucy', 21, 'female', 171, 60);

# 向表t_users插入一条数据,并且对部分字段进行赋值
INSERT INTO t_users (uname, age, gender) VALUES('JimGreen', 22, 'male');
# 向表t_users插入一条数据,并且对部分字段进行赋值,字段的顺序可以随意,但是要保证values后面的值要和前面的字段匹配
INSERT INTO t_users (age, gender, uname) VALUES(10, 'male', 'polly');

插入数据

sql 复制代码
INSERT INTO `t_name` VALUES(值1, 值2, ...)
INSERT INTO `t_name` (字段1, 字段2, ...) VALUES (值1, 值2, ...)

删除数据

sql 复制代码
# 删除数据
DELETE FROM t_student;
# 按照条件进行删除 WHERE
DELETE FROM t_student WHERE sname = '韦一笑';
# 删除掉表中所有的数据
TRUNCATE TABLE t_student;

修改数据

sql 复制代码
# 将所有的数据中的年龄都修改为60
UPDATE t_student SET sage = 60;
# 将姓名为'张三丰'的数据年龄改成60
UPDATE t_student SET sage = 60 WHERE sname='张三丰';
# 将姓名为'谢逊'的数据年龄改成50, java成绩修改成60
UPDATE t_student SET sage = 50, score_java = 60 WHERE sname = '谢逊';
# 将姓名为'灭绝师太'的数据mysql成绩在现有基础上加10
UPDATE t_student SET score_mysql = score_mysql / 10 where sname = '灭绝师太';
相关推荐
高兴就好(石1 小时前
DB-GPT部署和试用
数据库·gpt
这孩子叫逆2 小时前
6. 什么是MySQL的事务?如何在Java中使用Connection接口管理事务?
数据库·mysql
Karoku0662 小时前
【网站架构部署与优化】web服务与http协议
linux·运维·服务器·数据库·http·架构
码农郁郁久居人下2 小时前
Redis的配置与优化
数据库·redis·缓存
MuseLss3 小时前
Mycat搭建分库分表
数据库·mycat
Hsu_kk4 小时前
Redis 主从复制配置教程
数据库·redis·缓存
DieSnowK4 小时前
[Redis][环境配置]详细讲解
数据库·redis·分布式·缓存·环境配置·新手向·详细讲解
程序猿小D4 小时前
第二百三十五节 JPA教程 - JPA Lob列示例
java·数据库·windows·oracle·jdk·jpa
Flerken1014 小时前
数据库语言、SQL语言、数据库系统提供的两种语言
数据库·sql·oracle
掘根4 小时前
【网络】高级IO——poll版本TCP服务器
网络·数据库·sql·网络协议·tcp/ip·mysql·网络安全