mysql学习笔记3

插入记录 INSERT

INSERT [INTO] tbl_name [(col_name,...)] {VALUES|VALUE} ({expr|DEFAULT},...),(...),... 

插入记录-范例

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(DEFAULT,"Tom","123",25,1); 
//写入多条记录 
INSERT users VALUES(DEFAULT,"JOHN","123",25,1),(NULL,"Rose",md5("123"),DEFAULT,0); 

如果想要id遵守默认的编号 只需要设置该列为NULL或者DEFAULT即可.如果有字段设置过DEFAULT 那么该列可以添加DEFAULT;

插入记录,使用子查询

INSERT [INTO] tbl_name SET col_name={expr|DEFAULT},... 

只能一次性插入一条记录

范例

INSERT users SET username="Ben",password="456"; 

单表更新记录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; 

让users表中age加5.

范例2-更新多列

UPDATE users SET age=age-id,sex=0; 

指定记录更新

UPDATE users SET age=age+10 WHERE id%2=0; 

单表删除记录DELETE

DELETE FROM tbl_name [WHERE where_condition] 

范例

DELETE FROM users WHERE id = 5; 

删除后再插入一条记录 即使ID号不连续,那么新插入的id是已有的最大id+1

表达式解析

查找记录 SELECT

查找前两列

SELECT id,username FROM users; 

别名

SELECT id AS userID,username AS uname FROM users; 

group by 语句对查询结果分组

GROUP BY {col_name|position} [ASC|DESC],...] 

对分组的结果进行分组

按照性别分组

SELECT sex FROM users GROUP BY sex; 

having语句设置分组条件

SELECT sex,age FROM users GROUP BY sex HAVING count(id); 

order by 语句对查询结果进行排序

[ORDER BY {col_name|expr|position} [ASC|DESC],...] 

范例

SELECT * FROM users ORDER BY id DESC; 

SELECT * FROM users ORDER BY age ASC,id DESC; 

如果age遇到了相同的 那么再进行id排序

LIMIT

范例

SELECT * FROM users LIMIT 2 

返回两条记录

SELECT * FROM users LIMIT 3,2 //id 4,5 

从3开始向后截取两条记录3非id,指的是结果集中的第三条语句.数据库从0开始算,所以3会返回至id为4,5

插入记录

CREATE TABLE test1( 
       id TINYINT UNSIGNED PRIMARY KEY AUTO_INCREMENT, 
       username VARCHAR(20) 
   ); 

跨表写入数据

INSERT test1(username) SELECT username FROM users WHERE age>=10;