数据库常用查询

本文介绍了数据库的基础操作,包括创建、查看和删除数据库,以及表的管理。此外,详细讲解了SQL约束,如主键、联合主键、自动递增、唯一约束、非空约束、默认值和外键约束,对外键的操作行动如restrict、set null和cascade进行了说明。

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

-- 【数据库】
show DATABASES;

CREATE DATABASE if not EXISTS demo;

-- 修改数据库的字符集:utf8mb4  和排序规则:utf8mb4_0900_ai_ci   ai:声调/重音不敏感  ci:大小写不敏感
alter database demo CHARACTER set utf8mb4 COLLATE utf8mb4_0900_ai_ci;

use demo;

-- 查看已使用的数据库
select DATABASE();

drop DATABASE if EXISTS demo;

-- 【表】
show tables;

-- 创建数据表
create table if not EXISTS student(
id int UNSIGNED,
name VARCHAR(20),
age TINYINT UNSIGNED,
gendeer enum('男','女','保密'),
createdAt TIMESTAMP
);

-- 查看表结构
desc student;

use student;

-- 新增字段
alter TABLE student add updatedAt TIMESTAMP;

-- 删除字段
alter TABLE student drop updatedAt;

-- 修改字段的数据类型
alter TABLE student MODIFY createdAt datetime;

-- 修改字段的名称和数据类型
alter table student change createdAt createAt TIMESTAMP;

-- 修改表名
ALTER TABLE student RENAME to stu;

drop TABLE if EXISTS student;

-- 【SQL约束】
-- primary key:主键约束 --区分记录的唯一性,值不能重复,为不能为空
SELECT DATABASE();
-- 主键
create table if not EXISTS stu_1(
id int UNSIGNED PRIMARY KEY,
name VARCHAR(20)
);

insert INTO stu_1(id,name)VALUES('1','test');
drop TABLE if EXISTS stu_1;

create table if not EXISTS stu_1(
id int UNSIGNED,
name VARCHAR(20),
PRIMARY KEY(id)
);

-- primary key:联合主键 --同时将多个字段作为一个主键来使用,多个字段联合起来的值不能重复
create table if not EXISTS stu_2(
id int UNSIGNED,
name VARCHAR(20),
PRIMARY KEY(id,name)
);
insert INTO stu_2(id,name)VALUES('1','test');
insert INTO stu_2(id,name)VALUES('1','test1');
insert INTO stu_2(id,name)VALUES('1','test1');
drop TABLE if EXISTS stu_2;

-- auto_increment:自动递增
create table if not EXISTS stu_3(
id int UNSIGNED PRIMARY key auto_increment,
name VARCHAR(20)
);
insert INTO stu_3(name)VALUES('test');

-- unique:唯一约束 --保证某个字段的值永远不重复,允许多个null存在。一张表只能一个主键,但能有多个unique
create table if not EXISTS demo.stu_4(
id int UNSIGNED PRIMARY key auto_increment,
name VARCHAR(20) UNIQUE
);
insert INTO demo.stu_4(name)VALUES(NULL);


-- not null:非空约束
create table if not EXISTS demo.stu_5(
id int UNSIGNED PRIMARY key auto_increment,
name VARCHAR(20) not NULL
);
insert INTO demo.stu_5(name)VALUES('yong');
insert INTO demo.stu_5(name)VALUES(NULL);


-- default:默认值
create table if not EXISTS demo.stu_6(
id int UNSIGNED PRIMARY key auto_increment,
name VARCHAR(20) not NULL,
gender enum('男','女','保密') DEFAULT '保密',
createdAt TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updatedAt TIMESTAMP DEFAULT CURRENT_TIMESTAMP on UPDATE CURRENT_TIMESTAMP # 自动更新
);
insert INTO demo.stu_6(name)VALUES('yong');
update demo.stu_6 set name ='yong1' WHERE id =2;

-- foreign key:外键约束
-- 如果一张表中的一个字段指向了另一张表中的主键,就将该字段叫做外键
-- 外键的数据类型必须和指向的主键一致
-- 定义外键的表称之为从表,为外键引用的表称之为主表

-- 主表
create TABLE if not EXISTS demo.user(
id int UNSIGNED PRIMARY key auto_increment,
username VARCHAR(20) not null
);
desc demo.user;
INSERT INTO demo.user(username) VALUES('william');

create TABLE if not EXISTS demo.dynamic(
id int UNSIGNED PRIMARY key auto_increment,
content VARCHAR(20) not null,
user_id int UNSIGNED 
);
DESC demo.dynamic;
DROP TABLE if EXISTS demo.dynamic;

-- 从表
create TABLE if not EXISTS demo.dynamic_1(
id int UNSIGNED PRIMARY key auto_increment,
content VARCHAR(20) not null,
user_id int UNSIGNED,
FOREIGN KEY(user_id) REFERENCES demo.user(id)
);


-- 外键操作 action
-- 严格操作: restrict
-- 主表中不存在对应的数据,从表不允许添加
-- 从表引用着数据,主表对应的数据不允许删除
-- 从表引用着数据,主表对应的主键不允许修改

-- 置空操作:set null
-- 修改或删除主表id时,所有跟它关联的从表字段都会被设置为nul1

-- 级联操作:cascade
-- 修改或删除主表id时,所有跟它关联的从表字段都会做同样的操作
-- 一般情况下,主表删除时,从表置空,主表更新时,从表级联

-- 从表
create TABLE if not EXISTS demo.dynamic_2(
id int UNSIGNED PRIMARY key auto_increment,
content VARCHAR(20) not null,
user_id int UNSIGNED,
FOREIGN KEY(user_id) REFERENCES demo.user(id) on UPDATE CASCADE on DELETE set null
);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值