当前位置: 首页 > news >正文

Myaql

DDL语法操作

基础cmd窗口命令学习 :

1,数据库登录 mysql -u用户名 -p密码
2,展示数据库 show databases;
3,使用数据库 use 数据库名;
4,查看数据库中的表 show tables;

5, create database 数据库名 创建数据库
6, create table 表名 创建数据表
7, alter database 修改数据库
8, alter TABLE 修改表
9, drop database 删除数据库
10,drop table 删除表格

创建数据库


if not exists表示如果不存在就创建,可以省略
CREATE DATABASE if not exists study use charset utf8mb4;

-- 创建表格,创建表的结构 ,指定表格的列名和列的类型
-- 常见的列的数据类型:
-- 整数 int bigint
-- 小数 decimal
-- 字符串 varchar char
-- 日期 date datetime
-- 文本 text

示例:
create TABLE [if not exists] 表名(
列名 数据类型(长度) 约束,
列名 数据类型(长度) 约束,
列名 数据类型(长度) 约束
) 存储引擎 字符集

一张表其实就是一个物体(对象) ,比如使用表格来存放学生的信息
那么这个学生表中,可以有哪些列名? 学号、姓名、性别、年龄、专业、班级、生日...
描述一个商品,可以有哪些列? 商品名称、价格、生产日期、保质期、商品描述


1字节 8位 :位 (bit):计算机最小存储单位,只有 0/1 两种状态
字节 (Byte):基础存储单位,规定 1 Byte = 8 bit

4字节 32位

2^31-1:C 语言 int 类型,int 占 4 字节(合计 32 个二进制位),它能存储的最大正数是 2的31次方减1。

另:32 位有符号 int 完整取值规则:
32 位里最高 1 位是符号位:0 代表正数、1 代表负数;
剩余 31 位存数值;
正数最大值:2³¹ - 1(十进制 2147483647);
负数最小值:-2³¹(十进制 -2147483648)。

-- varchar可变长度的字符串类型,根据实际的值占用空间
-- char固定长度的字符串类型

-- 练习:创建一个用户表 user

显示表信息


desc student; ——DESC 是 DESCRIBE 的简写,是 MySQL 专用查询表结构的命令;
desc student = 查看 student 表的完整字段结构。

-- 使用alter修改表结构
alter table 表名 add column 字段(列)名 数据类型; -- 添加字段
alter table 表名 drop column 字段名 ; -- 删除字段
alter table 表名 modify 字段名 新数据类型 ;-- 修改字段类型

-- 删除表
drop table 表名;


-- DML语法
-- 实现数据库表数据的增insert、删delete 、改 update

-- 增加语法
/*
语法1: 列名和值一一对应,没有的列值就为null
insert into 表名(列1,列2,列3...)values(值1,值2,值3...)

语法2:表中有几个字段就写几个值
insert into 表名 values (值1,值2,值3,值4);

批量插入多行数据
insert into 表名 values (值1,值2,值3,值4),
(值1,值2,值3,值4),
(值1,值2,值3,值4);

*/

insert into student(sid,sname,sage,sgender,sphone,sbirthday)
values(10001,'张三',20,'男','13355557777','2006-10-10');
insert into student(sid,sname,sage) values(10002,'李四',20);
insert into student values(10003,'王五',20,'男','13355557788','2006-10-10');
insert into student values(10004,'王六',21,'男'); -- 报错
-- 修改数据update
-- 修改指定数据行的列的值
/*
update 表名 set 列1 = 值, 列2 = 值,列3 = 值 where 字段 = 值;
*/
update student set sgender = '男',sphone = '14455556666' where sname = '李四';

-- 删除数据 delete
-- 删除符合条件的数据行数据,不加条件表示删除所有表数据
-- delete from 表名 where 字段 = 值;

delete from student where sid = 10003;


-- 练习:往user表中添加数据,然后执行修改和删除

# 注释
-- 注释
/*

多行注释
*/

-- 表格的约束
/*
约束一般在创建表格的时候,添加字段的后面,用来给这个字段设置
对应的约束条件
如果有些表格已经创建好了,也可以通过alter命令完成约束的添加

常见的约束
主键 primary key 表示字段非空且唯一,一张表只有一个主键
一般用在表中的唯一的id后面,比如学号,用户id
非空 not null 表示字段值不能为空
唯一 unique 表示字段的值不能重复
默认值 default 表示不指定字段值,就使用默认值
选择 check 从指定的值中选择某个值使用

外键约束 foreign key 用来约束两张表之间的关系,把两张表
作为主表和副表,主表数据必须存在,才能添加副表数据
*/

-- 创建表格的时候,使用约束
drop table student;

create table student (
sid int primary key,
sname varchar(50) not null,
sage int not null,
sgender char(2) check (sgender in ('男','女')),
sphone char(11) unique not null,
sbirthday date default '2000-10-10'
-- primary key(sid)
-- 主键的另一种用法
) ;

-- 测试约束的使用
insert into student(sid,sname,sage,sgender,sphone,sbirthday)
values(10001,'张三',20,'男','13355557777','2006-10-10');

insert into student(sid,sname,sage,sgender,sphone,sbirthday)
values(10002,'张三',20,'男','13355557788','2006-10-10');

insert into student(sid,sname,sage,sgender,sphone)
values(10003,'李四',20,'男','13355557799');


-- 测试外键约束

-- 创建一个订单表,订单表中需要一个用户id,
-- 订单表中的用户id就是外键指向user表中的 uid
drop table `order`;
create table `order`(
oid int ,
uid int ,
pname varchar(100) ,
foreign key (uid) references `user`(uid) on delete cascade
);


-- 测试外键的添加用法 ,必须要保证主表有数据,才能往副表中加数据

-- 先往order表中添加数据,无法添加
insert into `user` values(101,'jack','123123','1999-1-1','扬州');
insert into `order` values(201,101,'手机');


-- 删除数据的时候,需要先删副表数据,再删主表数据
-- 除非加上级联删除on delete cascade,
-- 可以删除主表的时候,同时会把副表数据删除
delete from `order` where uid = 101;
delete from `user` where uid = 101;

http://www.jsqmd.com/news/1152368/

相关文章:

  • PyTorch Tensor 内存操作 3 大陷阱:GPU/CPU 拷贝、原地修改与 CUDA 错误规避
  • NAND Flash 硬件电路设计 3 大实战:全志H3、ZYNQ、HI3798 平台对比
  • ChatGPT vs DeepSeek:中文语义理解差距高达41.6%?NLP实验室级对比测试(含BERTScore、BLEU-4、人工盲评三重验证)
  • 普尚云课堂 | 天线参数测试之噪声温度
  • BERT vs GPT-2:3 种 Transformer 架构(Encoder/Decoder/Encoder-Decoder)核心差异对比
  • Linux下RTL8821CU无线网卡驱动编译与Secure Boot签名实战
  • 阿里 x82y 234 全类型验证码,纯算生成纯协议通过,包含最新算法 234、bx_et、bx-pp、_rand
  • TCP 通信协议
  • 打开网络ADB调试(设置端口为5555)
  • 第一次用TMGM 官方版 MT5 系统,界面怎么调才不抓瞎?
  • 为什么92%的Claude生成Commit被CI/CD拒绝?揭秘GitHub Actions兼容性断点与4层校验加固方案
  • 革命性跨平台融合:APK安装器让Windows原生运行安卓应用
  • 二进制安全工程实践:Windows消息防撤回的逆向工程方案
  • HiveWE:魔兽争霸III地图编辑的现代化终极解决方案
  • 自演化数据库架构:从静态Schema到AI驱动的自适应表结构设计
  • 【数字电源/MATLAB+PLECS】如何进行 Buck 数字电源仿真(二)PLECS 搭建开环 Buck 功率级
  • OpenEQA 基准实战:GPT-4V 与 Claude 3 在 7 类 1600+ 问题上的表现对比
  • 【国产大模型突围关键战】:DeepSeek为何能在医疗问诊、法律文书、信创适配三大高壁垒场景碾压ChatGPT?内部技术白皮书首度解密
  • 2026年4款热门远程软件真实测评,远程必备,效率翻倍,建议收藏
  • Krita Vision Tools:3款AI智能选区工具让你的创意效率提升300%
  • Qwerty Learner终极指南:如何免费提升英语打字速度与单词记忆效率
  • ChatGPT vs Claude:从Token计费陷阱到隐私合规红线,企业采购前必须验证的5个隐藏成本(含成本计算器模板)
  • 大模型选型生死线:Kimi K2和DeepSeek V3在金融/医疗/政务三大场景落地差异,错过这篇可能多花37%算力预算
  • 银河麒麟系统如何安装nodejs
  • C语言中的inline关键字,你真的懂了吗?
  • 3款常见气体传感器对比:MQ-4、MQ-9、MQ-135 在灵敏度与温湿度影响下的实测
  • 为什么头部AI团队正在悄悄弃用Kimi K2转向DeepSeek V3?——基于3个月线上A/B测试与Token级日志分析的独家洞察
  • 【面试直击:化零为整的推土机,OceanBase 里的并行执行 (PQ) 折叠时空之术】
  • 【大数据毕业设计】基于大数据技术的零食消费行为分析系统的设计与实现 基于 Hadoop 分布式架构的零食订单数据分析系统(源码+文档+远程调试,全bao定制等)
  • 0402/0603/0805贴片电阻:5种封装功率曲线与PCB布局散热实测