MySQL数据库增删改查

一.插入记录有两种基本语法

  1. insert into 表 values(值1,值2,值n);
    eg: insert into user values(2,'姓名李文凯','男')
    ps: 向user表中插入值id为2,姓名为李文凯,性别男

  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: select
from money;
ps 查询money表中所有字段中的所有结果
是一种正则表达式的写法,表示匹配所有,上面的查询语句喝下面的是等价:
mysql>select
from 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)

posted @ 2020-09-25 16:57  阿澈  阅读(177)  评论(0)    收藏  举报