一.插入记录有两种基本语法
insert into 表 values(值1,值2,值n);
eg: insert into user values(2,'姓名李文凯','男')
ps: 向user表中插入值id为2,姓名为李文凯,性别男
insertinto 表(字段1,字段2,字段n)values(值1,值2,值n);
eg: insertinto user(id,username,sex)values(213,'小沈阳',1);
ps: 向user表中插入id为213,username为小沈阳,性别为1.
说明:两种语法的区别是: 基本语法1的插入语句,表中有多少个字段就必须插入多少个值,不能多也不能少,如果不想插入需要写上null.
语法2中,除非有必填字段必须要写入值外,如果有默认值的不想写可以不写,mysql会自动补全默认值. 语法2中,以user(id,username,sex)字段顺序为值的顺序.
按照基本语法二写上表中的插入语句:
INSERT INTO user(username,sex) values('oldboy',10);
基本语法变形:一次插入多条记录
INSERT INTO user(username,password,sex)
values('黄晓明', 'abcdef', 1),
( 'angelababy', 'bcdeef', 0),
( '陈赫', '123456', 1),
('王宝强', '987654', 1);
二 基础查询
1.创建表的语句如下:
create table if not exists money(
uid int(11)not null,
username varchar(30)not null,
age tinyint unsigned not null,
sex tinyint not null
)engine=innoDB default charset=utf8
基本语法: selectfrom 表;
eg: selectfrom money;
ps 查询money表中所有字段中的所有结果
是一种正则表达式的写法,表示匹配所有,上面的查询语句喝下面的是等价:
mysql>selectfrom money;
+----+-----------+---------+-----------+-----+-----+
| id | username | balance | province | age | sex |
+----+-----------+---------+-----------+-----+-----+
| 1 | 王宝强 | 120.02 | 湖北 | 29 | 1 |
| 2 | 范冰冰 | 260.23 | 山东 | 40 | 0 |
| 3 | 黄晓明 | 150.86 | 山东 | 40 | 1 |
| 4 | 井柏然 | 810 | 辽宁 | 27 | 1 |
| 5 | 李冰冰 | 20.15 | 黑龙江 | 43 | 0 |
| 6 | 成龙 | 313 | 山东 | 63 | 1 |
| 7 | 杨幂 | 123 | 北京 | 30 | 0 |
| 8 | 刘诗诗 | 456 | 北京 | 29 | 1 |
| 9 | 柳岩 | 23.4 | 湖南 | 36 | 0 |
| 10 | 赵本山 | 3456 | 辽宁 | 63 | 1 |
| 11 | 汪峰 | 34.32 | 北京 | 44 | 1 |
| 12 | 郭德纲 | 212 | 天津 | 43 | 1 |
+----+-----------+---------+-----------+-----+-----+
12 rows in set (0.00 sec)
三. 指定字段查询
语法: select 字段 from 表;
eg: select id,username,balance from money;
ps: 查询money表中id,username,balance字段中的所有结果
mysql> select id,username, balance from money;
+----+-----------+---------+
| id | username | balance |
+----+-----------+---------+
| 1 | 王宝强 | 120.02 |
| 2 | 范冰冰 | 260.23 |
| 3 | 黄晓明 | 150.86 |
| 4 | 井柏然 | 810 |
| 5 | 李冰冰 | 20.15 |
| 6 | 成龙 | 313 |
| 7 | 杨幂 | 123 |
| 8 | 刘诗诗 | 456 |
| 9 | 柳岩 | 23.4 |
| 10 | 赵本山 | 3456 |
| 11 | 汪峰 | 34.32 |
| 12 | 郭德纲 | 212 |
+----+-----------+---------+
12 rows in set (0.00 sec)
四. 查询单个字段不重复记录 distinct
语法: select distinct 字段 from 表;
eg: select distinct age deptno from money;
ps: 查询money表中年龄唯一的所有结果
mysql> select distinct age deptno from money;
+--------+
| deptno |
+--------+
| 29 |
| 40 |
| 27 |
| 43 |
| 63 |
| 30 |
| 36 |
| 44 |
+--------+
8 rows in set (0.00 sec)
五.条件查询 where
语法: select 字段 from 表 where where条件;
eg: select*from money where age=29;
ps: 查询money表中年龄为29的所有结果
mysql> select * from money where age = 29;
+----+-----------+---------+----------+-----+-----+
| id | username | balance | province | age | sex |
+----+-----------+---------+----------+-----+-----+
| 1 | 李文凯 | 120.02 | 湖北 | 29 | 1 |
| 8 | 刘诗诗 | 456 | 北京 | 29 | 1 |
+----+-----------+---------+----------+-----+-----+
2 rows in set (0.00 sec)
六 where后可接的条件
比较运算符结果集中将符合条件的记录列出来,上面的例子中,where后面条件是一个字段的'='.
除此之外,还可以使用> < >= <= !=等比较运算符
符号 说明
大于
< 小于
= 大于等于
= 小于等于
!= 不等于
= 等于
七 逻辑运算符
多个条件还可以使用or and 等逻辑运算符进行多条件联合查询 or或者and并且
eg: select * from money where id<10 and province='湖北'
ps: 查询所有字段 要求id小于10并且province='湖北'
mysql> select * from money where id <10 and province='湖北';
+----+-----------+---------+----------+-----+-----+
| id | username | balance | province | age | sex |
+----+-----------+---------+----------+-----+-----+
| 1 | 王宝强 | 120.02 | 湖北 | 29 | 1 |
+----+-----------+---------+----------+-----+-----+
1 row in set (0.00 sec)
八 结果集排序
语法 select 字段 from 表 order by 字段 排序关键词;
eg: select id,username,balance from money order by balance desc;
ps: 查询money表中的 id username balance 字段 按照余额进行降序排序用到的关键词: asc(升序排列,从小到大) desc(降序排列,从大到小) 在select出来之后的结果集中排序使用 order by,其中desc 和asc是排序顺序中的关键字,desc表示按照字段进行降序排列,asc表示升序排列,如果不写关键字默认升序排列.
mysql> select id,username, balance from money order by balance desc;
+----+-----------+---------+
| id | username | balance |
+----+-----------+---------+
| 10 | 赵本山 | 3456 |
| 4 | 井柏然 | 810 |
| 8 | 刘诗诗 | 456 |
| 6 | 成龙 | 313 |
| 2 | 范冰冰 | 260.23 |
| 12 | 郭德纲 | 212 |
| 3 | 黄晓明 | 150.86 |
| 7 | 杨幂 | 123 |
| 1 | 王宝强 | 120.02 |
| 11 | 汪峰 | 34.32 |
| 9 | 柳岩 | 23.4 |
| 5 | 李冰冰 | 20.15 |
+----+-----------+---------+
12 rows in set (0.00 sec)
九 结果集限制
对于查询或者排序后的结果集,如果希望只显示一部分而不是全部,使用limit 关键字结果集数量限制.
语法: select 字段 from 表 limit 数量;
eg select id,username,balance from monet limit 5;
ps 显示前五个用户
mysql> select * from money limit 5;
+----+-----------+---------+-----------+-----+-----+
| id | username | balance | province | age | sex |
+----+-----------+---------+-----------+-----+-----+
| 1 | 王宝强 | 120.02 | 湖北 | 29 | 1 |
| 2 | 范冰冰 | 260.23 | 山东 | 40 | 0 |
| 3 | 黄晓明 | 150.86 | 山东 | 40 | 1 |
| 4 | 井柏然 | 810 | 辽宁 | 27 | 1 |
| 5 | 李冰冰 | 20.15 | 黑龙江 | 43 | 0 |
+----+-----------+---------+-----------+-----+-----+
5 rows in set (0.00 sec)
十限制结果集并排序
语法: select 字段 from 表 order by 字段 关键词 limit 数量
eg: select id,username,balance from money order by balance desc limit 5;
ps: 按照钱来排序,显示前五个最有钱的用户
mysql> select id,username, balance from money order by balance desc limit 5;
+----+-----------+---------+
| id | username | balance |
+----+-----------+---------+
| 10 | 赵本山 | 3456 |
| 4 | 井柏然 | 810 |
| 8 | 刘诗诗 | 456 |
| 6 | 成龙 | 313 |
| 2 | 范冰冰 | 260.23 |
+----+-----------+---------+
5 rows in set (0.00 sec)