与MYSQL的零距离接触(笔记四) 慕课网

操作数据表中的记录


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

net start mysql
mysql -uroot -p123456

use test;
CREATE TABLE users(
id SMALLINT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
username VARCHAR(20) NOT NULL,
password VARCHAR(32) NOT NULL,
age TINYINT UNSIGNED NOT NULL DEFAULT 10,
sex BOOLEAN
);

第一种常见的插入方法:
INSERT users VALUES(NULL,'TOM','123',25,1);
INSERT users VALUES(NULL,'John','123',25,1);
SELECT * FROM users;
INSERT users VALUES(DEFAULT,'John','123456789',25,1);
INSERT users VALUES(NULL,'John','123',DEFAULT,1);
INSERT users VALUES(DEFAULT,'John','123456789',25*5/25-1,1);
INSERT users VALUES(DEFAULT,'Tom','12345',3*7-5,1),(NULL,'Rose',md5('123'),DEFAULT,0);

第二种:
    INSERT [INTO] tb1_name SET col_name={expr|DEFAULT},...
    说明:和第一张方式的区别在于,此方法可以使用子查询(SubQuery)
    INSERT users SET username='Ben',password='456';
    第一种方法可以插入多条记录。第二种一次只能插入一条记录

第三种:
INSERT [INTO] tb1_name [(col_name,...)] SELECT ...
    说明:此方法可以查询结果插入到指定数据表。
    CREATE TABLE test(
    id TINYINT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
    username VARCHAR(20)
    );
    INSERT test(username) SELECT username FROM users WHERE age>=30;
    
    
UPDATE
更新记录(单表更新)
    UPDATE[LOW_PRIORITY] [IGNORE] table_reference SET col_name1={expr1|DEFAULT}
    [,col_name2={expr2|DEFAULT}] ... [WHERE where_condition]
    
UPDATE users set age= age +5; 修改一条
UPDATE users set age = age - id,sex =0; 修改两条
UPDATE users set age = age +10 WHERE id % 2 = 0; 加入条件



DELETE
删除记录(单表删除)
    DELETE FROM tb1_name [WHERE where_condition]
    DELETE FROM users WHERE id = 6; 删除id为6 的记录
    
    INSERT users VALUES(NULL,'T111','123',33,1);
删除记录后 继续创建记录,将会以已有的最大id+1的形式创建id记录




SELECT
查找记录
SELECT select——expr [.select——expr ...]
[
FROM table_reference
[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}]
]

查询表达式    
    每个表达式表示想要的一列,必须有至少一个。
    每个列之间以英文逗号分隔。
    星号(*) 表示所有列。tb1_name.*可以表示命名表的所有列。
    查询表示式可以使用[AS] alias_name 为其赋予别名。
    别名可用于GROUP BY,ORDER BY 或HAVING子句。

SELECT id,username FROM users;
SELECT username,id FROM users;   查询表达式的顺序将影响结果的顺序

SELECT users.username,users.id FROM users;  确认指定的数据表查询

SELECT id  FROM users; 单列查询
SELECT id AS uesrid,username AS uname FROM users;  查询并用AS赋予别名


WHERE
条件表达式
    对记录进行过滤,如果没有指定WHERE子句,则显示所有记录。
    在WHERE表达式中,可以使用MYSQL支持的函数或运算符。

    
GROUP BY
    查询结果分组
    [GROUP BY {col_name|position}[ASC|DESC],...]
    SELECT sex FROM users GROUP BY sex;
    SELECT sex FROM users GROUP BY 1;
HAVING
    分组条件
    [HAVING where_coundition]
    SELECT sex,age FROM users GROUP BY 1 HAVING age > 30;
    SELECT sex FROM users GROUP BY 1 HAVING count(id) >= 3;
ORDER BY
    对查询结果进行排序
    [ORDER BY {col_name|expr|position}[ASC|DESC],...]
    SELECT * FROM users ORDER BY id DESC;       倒序排列
    SELECT * FROM users ORDER BY age,id DESC;
    
LIMIT
限制查询结果返回的数量
    [LIMIT {[offset,]row_count|row_count OFFSET offset}]
    SELECT * FROM users LIMIT 2;   返还前面两条数据
    SELECT * FROM users LIMIT 2,2;  返还从第三条开始 返还2条记录
    

    
    
   

posted @ 2019-01-03 20:46  Bambooboo  阅读(133)  评论(0编辑  收藏  举报