MySQL学习(二)

1 增删改查是针对表来说的。

2 创建一个表

mysql> create table stu(
    -> 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如果在表中加入列,那么表的结构就发生了改变

4查看表的结构

desc 表名;

5插入数据
往那张表添加? stu
给那几列添加值? (id,sname,gender,company,salary,fanbu)
添加的内容是什么? (1,‘张三’,‘男’,‘百度’,8888.67,234)

mysql> insert into stu (id,sname,gender,company,salary,fanbu)
    -> values (1,'张三','1','百度',8888.67,234);
Query OK, 1 row affected (0.43 sec)

部分插入

mysql> insert into stu (sname,gender,salary)
    -> values ('李四','2',8765.43);
Query OK, 1 row affected (0.38 sec)

查看一下当前表的数据

在上例中,虽然没有插入id,但是id为自增类,所有值为2。

6 如果插入所有的列,则可以不声明待插入的列,即如果不声明插入的列,则理解为依次插入所有列。

7 有同学认为id是自增型的,插入时不必赋值,** 这是一种常见的错误,列与值必须按照顺序一一对应。**

8 连接服务器

G:\mysql-8.0.13-winx64\mysql-8.0.13-winx64\bin>mysql -uroot -p
Enter password: ******

9 一次性插入多行

mysql> insert into stu (sname,company,salary)
    -> values
    -> ('刘备','皇室成员',15.28),
    -> ('孙策','江东集团',56.34),
    -> ('曹操','宦官后代',88.66);
Query OK, 3 rows affected (0.53 sec)
Records: 3  Duplicates: 0  Warnings: 0

10 更改数据:考虑
改那张表?
你需要改哪几列的值?
在那些行生效?
典型的错误

mysql> update stu
    -> set
    -> fanbu = 1000;
Query OK, 6 rows affected (0.38 sec)

这种是非常危险的语句!会影响整张表

正确的用法


mysql> update stu
    -> set
    -> fanbu = 1
    -> where id = 1;


where 后加的是表达式,只要表达式为真,则该行就发挥作用。
更改性别为女性(gender=2),且薪水大于8800(salary>8000)的,将其饭补改为200

mysql> update stu
    -> set fanbu = 200
    -> where gender = '2' and salary>8800;
Query OK, 1 row affected (0.33 sec)
Rows matched: 1  Changed: 1  Warnings: 0

11 修改/删除
删除就是删除整行,不存在删除一行中的某几列
删那张表的数据?
删那几行?
删除薪水大于8800的数据(salary>8800)

mysql> delete from stu
    -> where salary>8800;
Query OK, 2 rows affected (0.32 sec)

注意下面的语句:

mysql> delete from stu;
Query OK, 4 rows affected (0.38 sec)

表没有删除,但是表中的所有数据都被删除了。

12 查询3要素
查那张表的数据?
查那些列?

mysql> select sname ,company,salary from stu where id=3;

查看所有行,所有列

mysql> select * from stu;

*代表所有列,表名后又不加where条件,则选所有行。因此取出了所有行所有列。
练习:
取id>3的列

 select * from stu where id>3;

取部分行,部分列

mysql> select sname,salary from stu where id<4;

where后面的是表达式,表达式为真,则执行
以上是最基本的增删改查,针对单个表来说。

posted @ 2018-12-25 14:43  尚修能的技术博客  阅读(150)  评论(0编辑  收藏  举报