4、增删改查

1、存储表:tee D:\study.sql

2、简单创建一个薪资登记表

create table class(
id int primary key auto_increment,
sname varchar(10) not null default '',
gender char(1) not null default '',
company varchar(20) not null default '',
salary decimal(6,2) not null default 0.00,
fanbu smallint not null default 0
)engine myisam charset utf8;

3、查看表的结构: desc 表名;

mysql> desc class;
+---------+--------------+------+-----+---------+----------------+
| Field   | Type         | Null | Key | Default | Extra          |
+---------+--------------+------+-----+---------+----------------+
| id      | int(11)      | NO   | PRI | NULL    | auto_increment |
| sname   | varchar(10)  | NO   |     |         |                |
| gender  | char(1)      | NO   |     |         |                |
| company | varchar(20)  | NO   |     |         |                |
| salary  | decimal(6,2) | NO   |     | 0.00    |                |
| fanbu   | smallint(6)  | NO   |     | 0       |                |
+---------+--------------+------+-----+---------+----------------+
6 rows in set

4、添加数据

insert into class
(id,sname,gender,company,salary,fanbu)
values
(1,'张三','男','百度',8888.67,234);

**添加部分属性**
insert into class 
(sname,gender,salary)
values
('刀锋','男',8765.43);

**添加所有属性,第2行可省略**
insert into class
values
(3,'李四','女','新浪',5678.99,125);

**添加多行数据**
insert into class 
(sname,company,salary)
values
('刘备','皇室成员',15.28),
('孙策','江东集团',56.34),
('曹操','宦官后裔',88.56);

mysql> select * from class;
+----+-------+--------+----------+---------+-------+
| id | sname | gender | company  | salary  | fanbu |
+----+-------+--------+----------+---------+-------+
|  1 | 张三  | 男     | 百度     | 8888.67 |   234 |
|  2 | 刀锋  | 男     |          | 8765.43 |     0 |
|  3 | 李四  | 女     | 新浪     | 5678.99 |   125 |
|  4 | 刘备  |        | 皇室成员 | 15.28   |     0 |
|  5 | 孙策  |        | 江东集团 | 56.34   |     0 |
|  6 | 曹操  |        | 宦官后裔 | 88.56   |     0 |
+----+-------+--------+----------+---------+-------+
6 rows in set
  • id在上例中虽然没有插入值,但是id是自增型,因此值为2
  • 如果插入所以列的情况,则可以不声明待插入的列,mysql会自动理解为待插入所有列
  • 记住添加元素的3大要素:
    往哪张表添加行: class
    添加哪几列:(sname,gender,salary)
    分别添加的值是:('刀锋','男',8765.43);

  • 注意
    1、即使是自增型数据,也是需要赋值,在insert中列与值要严格对应,列与值必须一一对应,即使用逗号隔开也不行 
    但是可以用null来占位,但是不建议这样,会出现兼容性等问题。 
    insert into class 
    values
    ('李四','女','新浪',5678.99,125);

5、修改数据

**全部都改了**  
update class  
set  
gender='女',  
company='千度';  

**只改特定行**  
update class
set fanbu=123
where id=6; 

**选择其他属性值作为确定行的关键字**
update class set gender='男',fanbu='212'
where sname='孙策';

**改性别为男,且工资>8000的用户**  
update class set fanbu=159
where gender='男' and salary>8000;

**当表达一直为真,则全改**
update class set fanbu=99 where 1;
  • 修改表的4大要素:
    改哪张表: class
    改哪几列:gender,company
    改成什么值:'女','千度' 修改哪几行数据:where expression
  • 当确定行的关键字重复,在修改的时候会修改多行
  • where后面跟的是表达式,当表达式为真,则修改该行数据

6、删除数据

**删除salary>8888的用户**
delete from class where salary>8888;

**删除salary大于8000,且性别为女的用户
delete from class where salary>8000 and gender='女';

**删除表中所有数据,与truncate比较**
delete from class;
  • 删除只能删除整行,不存在删除一行中的某几列,不然就是修改
  • 删除表的2大要素: 
    删除哪张表的数据: class
    删哪几行:where expression
  • 显示Query OK, 0 row affected (0.00 sec) 表明程序执行成功了,删除了0行

7、查找数据

**查找特定行,特定列的数据**
select sname,company,salary from class where id=6;

**查找表中所有数据**
*代表所有列,表名后不加where条件,则选择所有行
select * from class;

**部分列,所有行,取所有的人的姓名和工资**
select sname,salary from class;

**查id>3的人的所有列**
select * from class where id>3;

**取部分行部分列**
select sname,fanbu from class where id < 5;
  • 要把where后面看为一个表达式,不要被其限制住,为真就取出该列

以下为在MySQL数据库中查询数据通用的 SELECT 语法:

SELECT column_name,column_name
FROM table_name
[WHERE Clause]
[LIMIT N][ OFFSET M]
  • 查询语句中你可以使用一个或者多个表,表之间使用逗号(,)分割,并使用WHERE语句来设定查询条件。
  • SELECT 命令可以读取一条或者多条记录。
  • 你可以使用星号(*)来代替其他字段,SELECT语句会返回表的所有字段数据
  • 你可以使用 WHERE 语句来包含任何条件。
  • 你可以使用 LIMIT 属性来设定返回的记录数。
  • 你可以通过OFFSET指定SELECT语句开始查询的数据偏移量。默认情况下偏移量为0。
上一篇:数据库常用基础操作


下一篇:MySQL笔记2