MySQL 记录操作 INSERT UPDATE DELETE SELECT 单表

增删改 查
写操作 读操作

创建
CREATE DATABASE test;
CREATE TABLE users1(...);

打开数据库
USE sql_name;

查看SELECT
SELECT DATABASE; //查看当前数据库
SELECT LENGTH(md5('123')); //查看md5加密后的位数

查看SHOW
SHOW TABLES;
SHOW TABLES FROM mysql;
SHOW COLUMNS FROM user1;
SHOW INDEXES FROM provinces\G; //显示数据表的索引 查看唯一约束
SHOW CREATE TABLE tbl_name; //查看数据表的创建命令


插入
INSERT tbl VALUES('Tom', 25, 7863.25);
INSERT tbl(username,salary) VALUES('John',4500.69);

查找
SELECT * FROM tbl; //查找全部列字段

添加删除列
ALTER TABLE users1 DROP password, DROP age, ADD truename VARCHAR(20) NOT NULL FIRST;// 操作用逗号分开

例:
CREATE TABLE users(
->id SMALLINT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
->username VARCHAR(20) NOT NULL,
->password VARCHAR(20) NOT NULL,
->age TINYINT UNSIGNED NOT NULL DEFAULT 10,
->sex BOOLEAN
->);

【插入INSERT】


【插入记录1 INSERT 】INSERT [INTO] tbl_name [(col_name,...)] {VALUES | VALUE} ({expr | DEFAULT}), (), ...

省略列名,所有列必须都有赋值,为自动编号的字段id赋值时,可填写NULL or DEFAULT
INSERT users VALUES(NULL, 'Tom', '123', 25, 1); //id=1
INSERT users VALUES(DEFAULT, 'Tom', '123', 25, 1);// id=2

书写表达式
INSERT users VALUES(DEFAULT, 'Tom', '123', 3*7-5, 1);

有默认值的列可赋值DEFAULT
INSERT users VALUES(NULL, 'Tom', '123', DEFAULT, 1);

一次性写入多条记录
INSERT users VALUES(NULL, 'Tom', '123', 25, 1), (NULL, 'Rose', md5('123'), DEFAULT,0); //md5哈希值32位,注意password要位数设置够

SELECT LENGTH(md5('123')); // 32位
ALTER TABLE users MODIFY password VARCHAR(40) NOT NULL;


【插入记录2 INSERT SET=】INSERT [INTO] tbl_name SET col_name={expr|DEFAULT},...

区别:可以使用子查询(SubQuery),一次性只能插入一条记录,可为空或者有默认值的列可不赋值。
INSERT users SET username='Ben', password = '123'; // age=10, sex=NULL

【插入记录3 INSERT SELECT】INSERT [INTO] tbl_name [(col_name,..)] SELECT ...

此方法将查询结果插入到指定数据表


【更新UPDATE】


【多表更新】略

【单表更新】UPDATE [LOW_PRIORITY] [IGNORE] table_reference SET col_name1={expr1|DEFAULT}[, col_name2 = {expr|DEFAULT}]...[WHERE where_condition]


省略条件则更新全部记录:
更新一列
UPDATE users SET age = age+5; //表中所有age记录+5
更新多列
UPDATE users SET age = age-id, sex = 0;

加入更新条件:
UPDATE users SET age = age + 10 WHERE id %2 = 0; // id为偶数则更新


【删除DELETE】


【多表删除】略

【单表删除】DELETE FROM tbl_name [WHERE where_condition];

DELETE FROM users WHERE id=6; //继续插入 id仍为已有的最大id号+1而不是刚删除的id号



【查找SELECT】

SELECT 3+5;
SELECT id, username FROM users; //字段顺序影响结果顺序
SELECT * FROM users; // *表示所有的列
SELECT users.id, users.username FROM users; //便于分析字段属于哪个数据表
SELECT id AS userId, username AS uname FROM users; // 字段别名影响结果别名

【WHERE】


【分组GROUP BY】

查询结果分组:[GROUP BY {col_name | position} [ASC | DESC], ... ]
ASC 升序
DESC降序
多个分组条件中间逗号分割

SELECT sex FROM users GROUP BY sex; // 指定列名按sex分组
SELECT sex FROM users GROUP BY 1; // 指定位置按sex分组,一般不用。(1表示select语句中出现的第一个字段名称)


【分组条件 HAVING】全部或某一部分记录分组

[HAVING where_condition] 分组条件要么为聚合函数(max, min, avg,count...只有一个返回值),要么出现当前select语句中,否则出错

SELECT sex FROM users GROUP BY 1 HAVING age > 35; // error age没出现在语句中
SELECT sex,age FROM users GROUP BY 1 HAVING age > 35; // empty
SELECT sex FROM users GROUP BY 1 HAVING count(id) >=2; //count计数函数


【分组结果排序 ORDER BY 字段/位置】

ASC 升序
DESC降序

SELECT * FROM users;
SELECT * FROM users ORDER BY id DESC; //按id降序排序
SELECT * FROM users ORDER BY age, id DESC;// 按age升序,相同则按id降序排序


【限制查询结果返回的数量LIMIT】

[LIMIT {[offset,] row_count | row_count OFFSET offset}] // LIMIT 位置1,返回条数

offset分页时偏移量: (当前页码-1)*每页显示记录数

SELECT * FROM users LIMIT 2; //只返回前两条记录
SELECT * FROM users LIMIT 3, 2; // 从结果集第四个位置开始返回两条,索引从0开始 [0,1,2,3,...]
SELECT * FROM users ORDER BY id DESC LIMIT 2, 2; //id降序的3、4条记录


CREATE TABLE test(
-> id SMALLINT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
-> username VARCHAR(40)
->);

【插入记录3 INSERT SELECT】将查询结果插入到指定数据表

INSERT test(username) SELECT username FROM users WHERE age >=30; //test的id自动计数
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值