MySQL 5.操作表中的数据
创建数据库并使用,创建数据表
1 # 创建数据库并使用数据库 2 CREATE DATABASE gzcsql; 3 USE gzcsql; 4 # 创建数据表 5 CREATE TABLE table1( 6 id SMALLINT UNSIGNED PRIMARY KEY AUTO_INCREMENT, 7 name VARCHAR(20) NOT NULL, 8 password VARCHAR(32) NOT NULL, 9 age TINYINT UNSIGNED NOT NULL DEFAULT 10, 10 sex BOOLEAN 11 );
增
插入表记录(1):
Demo:此种方法在写值时支持算数
1 # 若未标明要插入哪几列的话则需全部插入,主键可使用DEFAULT或NULL让其使用默认自增的值,标记了默认值的也可使用DEFAULT表示使用默认值 2 INSERT table1 VALUES(NULL,'Tom','123',DEFAULT,1);
一次性插入多条记录,多条记录间用逗号隔开:
1 INSERT table1 VALUES(DEFAULT,'XiaoMing','456',DEFAULT,1),(NULL,'XiaoGuo','666',21,1);
插入表记录(2):
Demo:此种方法与第一种方法的区别是此方法可以使用子查询,且只能一次插入一条记录
1 INSERT table1 SET name='XiaoHong',password='999',age=21,sex=1;
插入表记录(3):
Demo:此种方法可以将查询结果插入到指定数据表
1 INSERT table1(username) SELECT table2.name FROM table2;
改
更新列记录(单表更新)、(省略WHERE条件):
1 UPDATE table1 SET age = age+5, sex=0;
带条件更新自己想要的那一条记录(WHERE条件):
1 UPDATE table1 SET name = gzc WHERE id=3;
删
删除记录(单表删除):
1 DELETE FROM table1 WHERE id=2;
查
查询表达式
- 每一个表达式表示想要的一列,必须有至少一个
- 多个列之间以英文逗号分隔
1 SELECT id,name,password FROM table1;
- 查询表达式的顺序可以跟数据表中字段的顺序不一致。
1 SELECT password,name FROM table1;
- 表名.列名,如下例子,此种方式可以避免多表关联的情况下只查找某一数据表的数据
1 SELECT table1.name,table1.password FROM table1;
- 查询表达式可以使用 AS alias(别名)方式为某一列赋予别名,别名可用于 GROUP BY ,ORDER BY或者HAVING字句中,其查询结果显示的是别名而非原数据表中的列名
1 SELECT id AS userId ,name AS uname FROM table1;
PS:SELECT 语句字段出现的顺序将影响结果集出现的顺序,字段的别名将影响结果集中字段的别名(PHP中在别的编程语言中不清楚)
WHERE条件:
条件表达式:
- 对记录的过滤,如果没有指定WHERE条件,则显示所有记录
- 在WHERE表达式中,可以使用MySQL支持的函数或运算符
GROUP BY分组:
查询结果分组:
1 SELECT table1.name , table1.password, table1.sex FROM table1 GROUP BY sex;
HAVING设置分组的条件:
HAVING后面要是聚合函数(如求和、求最大值、最小值平均值等等 )或者该字段出现在当前的SELECT 语句当中
1 SELECT table1.name, table1.password ,table1.sexFROM table1 GROUP BY sex HAVING sex>10;
ORDER BY排序:
对查询结果的某一个字段进行排序
默认的升序:
1 SELECT table1.name ,table1.password, table1.age FROM table1 ORDER BY age;
DESC降序:
1 SELECT table1.name, table1.password,table1.age FROM table1 ORDER BY id DESC;
LIMIT
限制查询结果返回的数量
默认从第一条(索引从0开始)开始,返回2条:
1 SELECT * FROM table1 LIMIT 2;
默认从第3条(第一条的索引为0)开始,返回3条:
1 SELECT * FROM table1 LIMIT 2,3;
INSERT 和 SELECT 配合使用:
将查找的结果存储到指定的数据表
1 # 创建一个新表 2 CREATE TABLE test( 3 id TINYINT UNSIGNED PRIMARY KEY AUTO_INCREMENT, 4 username VARCHAR(20) NOT NULL 5 ); 6 # 将一张数据表中的数据查询结果存储到创建的新表中 7 INSERT test(username) SELECT talbe1.name FROM table1;