自学mysql增删改查

Musql 默认端口3306

0
111111111111111111111111111111111111111111111111111111111111111111关0键字与函数名名称大写
数据库名称,表名称、字段0名称小写
SQL语句以分号结尾
如 SELECT USER();
{}表示内容是必须的,|表示或者,[]表示内容可有可无

查看当前服务器下的数据库列表: SHOW DATABASES; SHOW CREATE DATABASE
创建数据库:
CREATE {DATABASE | SCHEMA} [IF NOT EXISTS] db_name [DEFAULT] CHARACTER SET
修改数据库编码方式
ALTER {DATABASE | SCHEMA} [db_name] [DAFAULT] CHATACTER SET [=] charaset_name;
删除数据库
DROP {DATABASE | SCHEMA} [IF EXISTS] db_name;
数据类型:选择最合适的,越精确则占内存越大
整型 浮点型:FLOAT[(M,D)] M是数字总位,D是小数点后位数,若省略,则精确到七位

**打开数据库:**USE db_name
查看数据列表:SHOW TABLES [FROM db_name] [LIKE ‘patten’ | WHERE expr]
查看数据表: SHOW COLUMNS FROM tal_name

插入记录到表中 INSERT tbl_name [(col_name,…)] VALUES(val,…)
col_name 列名称可省略,若省略则按照所有数据列的对应赋值,少写会报错
记录的查找:SELECT expr,… FROM tb1_name

空值和非空:NULL 字段可以为空;NOT NULL。字段不能为空
这里用户名是不允许为空的
自动编号(AUTO_INCREMENT,):必须与主键组合使用,默认初始值为1,每次增量为1
主键约束(PRIMARY KEY):每张数据表只能存在一个主键,保证记录的唯一性,为NOT NULL
id处表示此行为主键,并且是自动编号,因此不用赋值。

唯一约束(UNIQUE KEY):可以保证记录的唯一性,字段可以为空,保证的空值只有一个。
每张数据表可以存在多个唯一约束。
默认约束(DEFAULT):
约束:保证数据的完整性和一致性,分为表级约束和列级
外键约束(FOREIGN KEYp)
1. 子表和父表存储引擎相同,为InnoDB,禁止临时表
2. 外键列和参照列数据类型必须相同,数字的长度和符号必须相同,字符的长度可以不同
3. 外键列和参照列必须创建索引,参照列没有索引,将自动生成,外键列没有不会
可在my.int中编辑默认存储引擎
首先先创建一张父表


插入记录:
① (最常用)
INSERT [INTO] tbl_name [(col_name,…)] {values | value} ({expr|DEFAULT},…
如何希望对记录自动编号的字段复制的话,可以输入null到id位置上。
如果希望输入默认值得话,输入DEFAULT到对应位置即可。
② (只能插入一条记录)
INSERT [INTO] tbl_name SET col_name={expr | DEFAULT},
区别:此方法可以使用子查询(SubQuery)
③ (可以将查询结果插入到指定数据表)
INSERT [INTO] tbl_name [(col_name,…)] SELECT…
更新记录(单表更新,修改)UPDATE:
UPDATE [LOW_PRIORITY] [IGNORE] table_reference SET col_name1 = {expr1|DEAFULT} [,col_name2 = {expr2 | DEFAULT}] … [WHERE where_condition]

加条件:
删除记录(单表删除)DELETE
DELETE FROM tbl_name [WHERE where_condition]
删除后,再默认添加,id号会在最后加一,而不是补全之前删除的位置

查找:SELECT
SELECT select_expr[ , select_expr…]
[
FROM table_references
[WHERE where_condition]
[GROUP BY {col_name | position} [ASC | DESC],…]
[HAVING where_condition]
[ORDER BY {col_name | expr | position} [ASC | DESC],…]
[LIMIT {[offset,] row_count | row_count OFFSET offset}]
]
查询表达式
可以查询部分列,并且修改返回顺序,*表示所有列
可见返回的列顺序与原始顺序不同
 如果是多张表,则要在字段前加表名,因为不同表有相同的字段。
如。Users.id
 字段的别名。AS不要省略
条件表达式WHERE 用在GROUP BY 前面,在查询前去掉不符合的,不能包含聚合函数
查询结果分组 GROPE BY
[GROUP BY {col_name | position} [ASC(升)|DESC(降)],…]

组合使用HAVING条件时,在分组后筛选满足条件的组,条件必须符合前面的选择字段。除非使用聚合函数(sum,count)
此处使用了count(id)
对结果排序:ORDER BY
[ ORDER BY { col_name| expr |position} [ASC|DESC],…]

以多个字段排序: .依次满足条件排序。

限制返回数量LIMIT {[offset,],row_count |row_count OFFSEToffset}]
输入一个数x,默认从头返回x行,输入两个数x,y,返回从第x+1(因为是从0行开始)行数的y行。
表一数据插入到表二
条件:先知晓表二字段数量及名称,选择插入的内容字段要对应上表二的字段。
test有两个字段,而users则不止,插入位置要如图指定才行。

### MySQL 增删改查基本操作和语法示例 以下是关于 MySQL 数据库中增删改查的基本操作及相关语法的详细介绍: #### ### 1. 插入数据 (INSERT) 用于向数据库表中添加新记录。 - **插入单条记录** ```sql INSERT INTO 表名 (字段1, 字段2, ...) VALUES (值1, 值2, ...); ``` 例如,向 `users` 表中插入一条记录[^1]: ```sql INSERT INTO users (name, age) VALUES ('Alice', 25); ``` - **插入多条记录** 可以一次性插入多条记录以提高效率。 ```sql INSERT INTO 表名 (字段1, 字段2, ...) VALUES (值1_1, 值1_2, ...), (值2_1, 值2_2, ...); ``` 例如: ```sql INSERT INTO users (name, age) VALUES ('Bob', 30), ('Charlie', 35); ``` - **插入子查询结果** 可以从其他表中动态获取数据并插入到目标表中。 ```sql INSERT INTO 目标表 (字段1, 字段2, ...) SELECT 字段A, 字段B, ... FROM 源表; ``` 例如: ```sql INSERT INTO backup_users (name, age) SELECT name, age FROM users WHERE age > 30; ``` --- #### ### 2. 删除数据 (DELETE 和 TRUNCATE) - **删除指定记录** 通过 `WHERE` 条件限定需要删除的记录范围。 ```sql DELETE FROM 表名 WHERE 条件表达式; ``` 例如,删除年龄大于 40 的用户记录[^2]: ```sql DELETE FROM users WHERE age > 40; ``` - **删除所有记录** 如果不需要任何条件限制,可以直接清空整个表的内容。 ```sql DELETE FROM 表名; ``` 或者更高效的方式是使用 `TRUNCATE TABLE`,它会立即释放存储空间而不逐行删除。 ```sql TRUNCATE TABLE 表名; ``` --- #### ### 3. 修改数据 (UPDATE) - **更新指定记录** 同样依赖于 `WHERE` 子句来定位待更改的目标行。 ```sql UPDATE 表名 SET 字段1 = 新值1, 字段2 = 新值2, ... WHERE 条件表达式; ``` 比如将某个用户的姓名改为新的名字: ```sql UPDATE users SET name = 'David' WHERE id = 1; ``` - **不带 WHERE 子句的风险** 如果不加过滤条件执行此命令,则整张表格里的相应列都会受到影响,请谨慎对待这种做法[^2]! --- #### ### 4. 查询数据 (SELECT) 这是最常用的 SQL 功能之一,用来检索满足一定标准的信息集合。 - **基础查询** 仅选取部分感兴趣的属性展示出来即可。 ```sql SELECT 字段1, 字段2,... FROM 表名; ``` 举个例子来说就是查看所有学生的成绩情况[^5]: ```sql SELECT student_id, score FROM scores; ``` - **计算总分** 可以通过简单的算术运算符组合多个数值型字段得到最终的结果集。 ```sql SELECT id, name, chinese + math + english AS total_score FROM exam_results; ``` - **去除重复项** 利用 DISTINCT 关键字确保返回唯一不同的元组形式呈现给调用者知晓。 ```sql SELECT DISTINCT department FROM employees; ``` - **排序输出** 按照升序(默认)或降序排列所得出来的项目清单顺序安排好之后再交给前端界面显示上去供浏览查阅之便。 ```sql SELECT * FROM products ORDER BY price ASC; -- 升序 SELECT * FROM orders ORDER BY order_date DESC; -- 降序 ``` --- #### ### 5. 高级功能扩展 除了上述常规动作之外还有许多增强版特性可供开发者灵活运用起来进一步提升工作效率和服务质量水平线等等诸多方面均有所体现如下所示几个典型代表案例分析说明文档内容结构层次分明逻辑清晰易读性强便于理解掌握快速入门学习曲线平缓适合初学者自学练习模仿参考借鉴价值高值得推荐收藏备用随时查阅复习巩固记忆加深印象长久保持良好状态持续进步成长不断超越自我极限追求卓越成就非凡人生梦想成真指日可待未来无限光明灿烂辉煌前景广阔令人向往憧憬不已为之奋斗拼搏终生无悔遗憾留下美好回忆铭刻心底深处永不磨灭消逝随着时间推移愈发珍贵难得可贵珍惜拥有感恩回馈社会贡献自己的一份力量共同营造和谐美好的世界家园环境氛围让我们携手同行共创佳绩谱写新华章开启新征程迎接新时代的到来吧朋友们加油努力奋斗吧![^3] ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值