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

MySQL数据库操作全指南(一)

一、创建数据库

CREATE DATABASE MySQL_name;

1、显示数据库

show DATABASES;

2、登录数据库

mysql -u root

3、退出数据

quit

表名,字段,主键

常用数据类型:varchar,int,double,datetime,bigint

二、创建表格(create)

create table 'user'( )

1、创建字段

`id` INT(10)NOT NULL, `mobile` VARCHAR(11) NOT NULL, `nickname` VARCHAR(40) NOT NULL, `gmt_created` datetime , `gmt_modified` datetime NOT NULL, primary key('id')

  • 自增

`id` INT UNSIGNED AUTO_INCREMENT

2、主键外键(primary/foregin key)

  • users 表是主表(父表),user_id 是主键。

  • orders 表是子表,user_id 是外键,引用 users 表。

-- 假设你已经创建了 users 表 CREATE TABLE orders ( order_id INT PRIMARY KEY, order_date DATE, user_id INT, FOREIGN KEY (user_id) REFERENCES users(user_id) ON DELETE RESTRICT ON UPDATE RESTRICT on delete cascade on update cascade on delete set null on update cascade );

  • RESTRICT 的作用是:如果主表中的记录正在被外键引用,那么你将无法删除或更新该记录。

  • ON DELETE CASCADE 更激进,它会直接删除所有相关的子表记录

  • ON DELETE SET NULL 更保守,它保留子表记录,但切断了它们与父表的关联。

3、设置储存引擎和编码方式

ENGINE=InnoDB DEFAULT CHARSET=utf8

三、删除表格(drop)

drop table table_name; drop table if exists table_name;

四、语法

1、插入语句(insert)

insert into table_name(field1,field2……) values (value1,value2……)

(1)插入批量数据

INSERT INTO table_name VALUES (value1,value2,...valueN), (value1,value2,...valueN);

2、查询语句(select)

select field1,field2 …… from table_name;

select * from table_name;//查询所有字段

( 2) Where

SELECT * FROM table_name WHERE condition;

( 3) limit

语法:

SELECT * FROM table_name LIMIT parameter;

查询行数

select * from table_name limit 5,6; //查询5-6行 5; //查询0-5行 4,2 //查询第5,6行

(4)where 与 limit 联用

select * from table_name where age >18 limit 5;

(5)like 查询

语法

select * from table_name where condition like condition;

select * from table_name where name like '_尚香'; select * from table_name where name like '%尚香'; //_尚香和%尚香的区别在于,假如有一个人叫公孙尚香,前者查询不到而后者可以。

( 6) AND&OR

SELECT*FROM timi_adc WHERE ( win_rate > 0.5 OR win_rate < 0.47 ) AND win_rate < 0.51;

( 7) IN/NOT IN

SELECT * FROM table_name WHERE column IN (condtionA,condtionB)

SELECT*FROM timi_adc WHERE fever IN ('T0', 'T3'); where fever not in ('T0'.'T3');

( 8) NULL /NOT NULL

SELECT field_name1,field_name2 FROM table_name WHERE field_name2 IS NOT NULL/IS NULL;

(9)LEFT/RIGHT/INNER JOIN 左右内连接

SELECT*FROM TableA LEFT JOIN TableB ON condition;

a、左连接

假设我们有两个表:

  • 员工表 (Employees):包含 员工ID姓名

  • 订单表 (Orders):包含 订单ID员工ID订单金额

SELECT E.姓名, O.订单ID, O.订单金额 FROM 员工表 AS E LEFT JOIN 订单表 AS O ON E.员工ID = O.员工ID;

b、右连接

SELECT E.姓名, O.订单ID, O.订单金额 FROM 员工表 AS E RIGHT JOIN 订单表 AS O ON E.员工ID = O.员工ID;

c、内连接(交集)

SELECT*FROM table_a INNER JOIN table_b ON table_a.id = table_b.student_id;

d、全连接(UNION 关键字)

把俩表合并成一个表

SELECT name, department FROM employees_a UNION //去掉重复的,也可以写成union distinct SELECT name, department FROM employees_b;

把重复的也记下来

SELECT name, department FROM employees_a UNION ALL //不去掉重复的,重复的也记下来 SELECT name, department FROM employees_b;

3、排序语句(order by/DESC ASC /limit )

语法

select * from table_name order by field_name;

(1)关键词

select * from table_name order by win_rate DESC ; //降序 win_rate ASC ; //升序 与limit连用 limit 3;

4、更新删除(updata/delete)

updata 语法

updata 表名称 set 列名称 = 新值 where 列名称 =某值

UPDATE timi_adc SET ban_rate = 0.01WHERE hero_name = '艾琳';

delete 语法

delete from table_name [where Clause] //由于删除语句是不可恢复的,所以我们务必要增加WHERE语句 //否则将会删除整张表格的数据

delete from user;//删除user表中的所有数据 delete from user where id=4;//删除user表中id为4的行: delete from `user` where id<20;//删除user表中所有id小于20的数据

alter

添加列 add column

语法:ALTER TABLE 表名 ADD COLUMN 列名 数据类型 [约束]; -- 向 customers 表添加一个 email 列,数据类型为 VARCHAR(100) ALTER TABLE customers ADD COLUMN email VARCHAR(100);

删除列 drop column

语法:ALTER TABLE 表名 DROP COLUMN 列名; -- 从 employees 表删除 salary 列 ALTER TABLE employees DROP COLUMN salary;

添加约束 add constraint

语法:ALTER TABLE 表名 ADD CONSTRAINT 约束名 约束类型 (列名); -- 为 users 表的 email 列添加一个名为 UQ_email 的唯一约束 ALTER TABLE users ADD CONSTRAINT UQ_email UNIQUE (email);

删除约束 drop constraint

语法:ALTER TABLE 表名 DROP CONSTRAINT 约束名; -- 删除 users 表中的 UQ_email 唯一约束 ALTER TABLE users DROP CONSTRAINT UQ_email;

5、约束管理

create table test02(id int,name varchar(20));//创建表

(1)主键约束

primary key :唯一,不能重复,不能为空

a 添加主键

法一:alter table test02 add primary key (id); 法二:alter table test01 add constraint pk_name primary key(name);

b 修改主键

alter table test02 drop primary key //删除主键 alter table test02 modify id int auto_increment primary key; //修改列添加主键

(2)外键约束

a 禁用/启用

set foreign_key_checks =0;//禁用外键 set foreign_key_checks =1;//启用外键

b 添加约束

法一:创建表的时候就关联 create table test02_fk( t_no int,t_name varchar(20), t_id int, foreign key(t_no) references test02(id) on update cascade on delete set null);

法二:使用alter table xxx add foreign key xxx references xxx alter table test02_fk add foreign key(t_no) references test02(id) on update cascade on delete set null;

法三:使用外键名添加 add constraint alter table test02_fk add constraint fk_test02_no foreign key(t_no) references test02(id) on delete set null on update cascade;

C 删除约束

show create table test02 fk; alter table test02_fk drop foreign key test02_no;

关联主键,可以随主键联动, ON delete RESTRICT//阻止删除父表中的行,直到所有子表中引用该行的记录都被手动删除或修改 ON update RESTRICT//阻止更新父表中的主键值 on delete cascade//当父表中的行被删除时,子表中所有引用该行的行也级联删除 on update cascade//当父表的主键值更新时,子表中对应的外键值也级联更新 on delete set null//当父表中的行被删除时,子表中对应的外键值会被设置为 NULL ============================================================================= RESTRICT 的作用是:如果主表中的记录正在被外键引用,那么你将无法删除或更新该记录。 ON DELETE CASCADE 更激进,它会直接删除所有相关的子表记录 ON DELETE SET NULL 更保守,它保留子表记录,但切断了它们与父表的关联。

check 约束//讲触发器的时候再讲

确保一列或一组列的值是唯一的,不允许重复。与主键不同的是,一个表可以有多个唯一约束,并且唯一约束的列可以包含 NULL 值

(3)唯一约束

我先创建一个表

create table test03(id int,name varchar(20),id_card varchar(18))

a 添加约束

法一:直接添加 alter table test03 add unique(id_card);

法二:通过唯一键添加 alter table test03 add constraint uq_id unique(id_card)

b 删除约束

show create table test03;//查看唯一键约束名 alter table test03 drop index uq_id;//uq_id是唯一键约束名

添加:ALTER TABLE dept ADD CONSTRAINT uq_dept_id UNIQUE (dept_id) ()。 添加复合唯一键:ALTER TABLE test0 ADD CONSTRAINT unq_dept_id_name UNIQUE (id, name) () 删除:ALTER TABLE test01 DROP INDEX unq_id。需要先使用 show create table 表名

(4)默认约束

在插入数据时,如果某个字段没有输入内容,它会自动使用预设的默认值

default 约束

alter table test02 add column create_at timestamp default current_timestamp; timestamp: 指定了 create_at 列的数据类型为 TIMESTAMP 通常用于存储日期和时间,并且可以设置为自动更新 DEFAULT current_timestamp: 这是默认约束。数据库会自动使用当前的系统时间作为它的值。

a 添加约束

alter table test03 add column salary decimal(10,2) default 0.00; alter table test03 add column salary decimal(10,2) alter table test03 alter salary set default 3000.00; alter table test03 modify salary decimal(10,2) default 3000.00;

b 删除约束

alter table test03 alter salary drop default;

查看表中的约束

show create table 表名;

http://www.dtcms.com/a/486858.html

相关文章:

  • 【项目】年会抽奖系统
  • 烟台建站程序如何用电脑主机做网站
  • Spring Boot 统一异常处理机制:设计原理与最佳实践
  • 【jenkins】构建安卓
  • Spring Boot 集成 SpringDoc OpenAPI(Swagger)实战:从配置到接口文档落地
  • 基于目标信息最大化的高分辨率雷达波形设计——论文阅读
  • 网站建设毕业答辩ppt模板顶尖网站建设
  • MCP传输模式选择指南:Stdio与HTTP的终极对比
  • 网站建设实习招聘wordpress 问卷调查
  • 效果图制作网站有哪些医院网站制作公司
  • MySQL 连接类型介绍
  • 网站开发编程入门学习网站设计要考虑的因素
  • sk09.【scikit-learn基础】--『无监督学习』之K均值聚类
  • 网站建设对于企业的意义wordpress上传网页
  • OFD转PDF技术方案:快速实现一键批量转换
  • 网站页面布局模板电商网站系统建设考试
  • 【完整源码+数据集+部署教程】 【运动的&足球】足球场景目标检测系统源码&数据集全套:改进yolo11-ASF-P2
  • 免费发布信息网站网址大全网站做cnzz流量统计
  • 手机群控软件实现多设备监控与测试的技术解析
  • 自定义Spring Boot Starter项目并且在其他项目中通过pom引入使用
  • 做网站后台系统的规范为什么会显示危险网站
  • [tile-lang] docs | 基准测试 | GEMM示例
  • 网站开发培训收费邯郸外贸网站建设
  • commons-imaging(图像处理库)
  • 打渔网站建设南冒网站建设制作推广公司
  • 可以充值的网站怎么建设wordpress英文文章格式
  • 惠州网站设计公司网站建设做什么会计分录
  • 基于自动驾驶仿真软件的交通事故档案建模与分析
  • Cursor 脚本如何进入Conda环境
  • Flink-Kafka 连接器的 Checkpoint 与 Offset 管理机制