专栏首页AnRFDevMySQL 增删查改

MySQL 增删查改

环境: win7_x64, Navicat for MySQL

本文链接

操作数据库

前面已经将MySQL服务跑起来了。

现在我们以root身份进行MySQL操作 进入MySQL

C:\Users\Administrator>mysql -uroot -p

新建数据库

mysql> create database samp_db1 character set gbk;
Query OK, 1 row affected (0.00 sec)

数据库字符编码指定为 gbk

选择要操作的数据库

已经登录后可以直接选择数据库

mysql> use samp_db1;
Database changed

创建数据表

以建立person_t数据表为例

mysql> create table person_t (
    -> id int unsigned not null auto_increment primary key,
    -> name char(14) not null,
    -> sex char(4) not null,
    -> age tinyint unsigned not null,
    -> tell char(13) null default "-"
    -> );
Query OK, 0 rows affected (0.22 sec)

打开Navicat for MySQL,可以看到我们新建的表

输入这么长的文本很容易出错,我们可以直接先写好SQL语句,再导进来

新建文件create_student_table.sql,输入SQL语句

create table student (
id int unsigned not null auto_increment primary key,
name char(14) not null,
sex char(4) not null,
age tinyint unsigned not null,
tell char(13) null default "-"
);

直接执行SQL文件,操作samp_db1数据库

C:\Users\Administrator>mysql -D samp_db1 -u root -p < H:\create_student_table.sq
l
Enter password: ****

操作数据库

选定要操作的数据库use samp_db1;

增 - 插入数据

insert [into] 表名 [(列名1, 列名2, 列名3, …)] values (值1, 值2, 值3, …);

mysql> insert into student values(null,"张三","男",23,"13666665555");
mysql> insert into student (name,sex,age) values("李四","女",20);
查 - 查询表中的数据

select 列名称 from 表名称 [查询条件];

多插入了一些数据后

mysql> select name, age from student;
+-------+-----+
| name  | age |
+-------+-----+
| 张三  |  23 |
| 李四  |  20 |
| Tom   |  13 |
| Jerry |  12 |
| 王五  |  32 |
+-------+-----+
5 rows in set (0.00 sec)
使用通配符*来查询
mysql> select * from student;
+----+-------+-----+-----+-------------+
| id | name  | sex | age | tell        |
+----+-------+-----+-----+-------------+
|  1 | 张三  | 男  |  23 | 13666665555 |
|  2 | 李四  | 女  |  20 | -           |
|  3 | Tom   | 男  |  13 | 13111115555 |
|  4 | Jerry | 男  |  12 | 2333333     |
|  5 | 王五  | 男  |  32 | 666666666   |
+----+-------+-----+-----+-------------+
5 rows in set (0.00 sec)
特定条件查询

where 关键词用于指定查询条件, 用法形式为: select 列名称 from 表名称 where 条件;

// 查询所有性别为女的记录
mysql> select * from student where sex="女";
+----+------+-----+-----+------+
| id | name | sex | age | tell |
+----+------+-----+-----+------+
|  2 | 李四 | 女  |  20 | -    |
+----+------+-----+-----+------+
1 row in set (0.04 sec)

// age大于20的记录
mysql> select * from student where age>20;
+----+------+-----+-----+-------------+
| id | name | sex | age | tell        |
+----+------+-----+-----+-------------+
|  1 | 张三 | 男  |  23 | 13666665555 |
|  5 | 王五 | 男  |  32 | 666666666   |
+----+------+-----+-----+-------------+
2 rows in set (0.00 sec)

// age小于等于20的记录
mysql> select * from student where age<=20;
+----+-------+-----+-----+-------------+
| id | name  | sex | age | tell        |
+----+-------+-----+-----+-------------+
|  2 | 李四  | 女  |  20 | -           |
|  3 | Tom   | 男  |  13 | 13111115555 |
|  4 | Jerry | 男  |  12 | 2333333     |
+----+-------+-----+-----+-------------+
3 rows in set (0.00 sec)

// age小于等于20并且id大于等于3的记录
mysql> select * from student where age<=20 and id >=3;
+----+-------+-----+-----+-------------+
| id | name  | sex | age | tell        |
+----+-------+-----+-----+-------------+
|  3 | Tom   | 男  |  13 | 13111115555 |
|  4 | Jerry | 男  |  12 | 2333333     |
+----+-------+-----+-----+-------------+
2 rows in set (0.03 sec)

// 按名字特征查询
mysql> select * from student where name like "%三%";
+----+------+-----+-----+-------------+
| id | name | sex | age | tell        |
+----+------+-----+-----+-------------+
|  1 | 张三 | 男  |  23 | 13666665555 |
+----+------+-----+-----+-------------+
1 row in set (0.00 sec)

mysql> select * from student where name like "%o%";
+----+------+-----+-----+-------------+
| id | name | sex | age | tell        |
+----+------+-----+-----+-------------+
|  3 | Tom  | 男  |  13 | 13111115555 |
+----+------+-----+-----+-------------+
1 row in set (0.00 sec)

// tell 以5结尾的记录
mysql> select * from student where tell like "%5";
+----+------+-----+-----+-------------+
| id | name | sex | age | tell        |
+----+------+-----+-----+-------------+
|  1 | 张三 | 男  |  23 | 13666665555 |
|  3 | Tom  | 男  |  13 | 13111115555 |
+----+------+-----+-----+-------------+
2 rows in set (0.00 sec)

mysql> select * from student where tell like "131%";
+----+------+-----+-----+-------------+
| id | name | sex | age | tell        |
+----+------+-----+-----+-------------+
|  3 | Tom  | 男  |  13 | 13111115555 |
+----+------+-----+-----+-------------+
1 row in set (0.00 sec)

按条件查询非常的灵活,运用得当会节省运行时间

改 - 修改表中的数据

基本的使用形式为:

update 表名称 set 列名称=新值 where 更新条件;

我们终于拿到了李四的联系方式,将数据库中的tell更新

mysql> update student set tell="13900001111" where name="李四";
Query OK, 1 row affected (0.05 sec)
Rows matched: 1  Changed: 1  Warnings: 0

mysql> select * from student where name="李四";
+----+------+-----+-----+-------------+
| id | name | sex | age | tell        |
+----+------+-----+-----+-------------+
|  2 | 李四 | 女  |  20 | 13900001111 |
+----+------+-----+-----+-------------+
1 row in set (0.00 sec)

过了一年,大家都长了一岁,修改表中的age值

mysql> update student set age=age+1;
Query OK, 5 rows affected (0.05 sec)
Rows matched: 5  Changed: 5  Warnings: 0

mysql> select * from student;
+----+-------+-----+-----+-------------+
| id | name  | sex | age | tell        |
+----+-------+-----+-----+-------------+
|  1 | 张三  | 男  |  24 | 13666665555 |
|  2 | 李四  | 女  |  21 | 13900001111 |
|  3 | Tom   | 男  |  14 | 13111115555 |
|  4 | Jerry | 男  |  13 | 2333333     |
|  5 | 王五  | 男  |  33 | 666666666   |
+----+-------+-----+-----+-------------+
5 rows in set (0.00 sec)

修改多个信息,Jerry有了中文名“赵六”,换了tell

mysql> update student set name="赵六",tell="10001-1001" where name="Jerry";
Query OK, 1 row affected (0.05 sec)
Rows matched: 1  Changed: 1  Warnings: 0

mysql> select * from student;
+----+------+-----+-----+-------------+
| id | name | sex | age | tell        |
+----+------+-----+-----+-------------+
|  1 | 张三 | 男  |  24 | 13666665555 |
|  2 | 李四 | 女  |  21 | 13900001111 |
|  3 | Tom  | 男  |  14 | 13111115555 |
|  4 | 赵六 | 男  |  13 | 10001-1001  |
|  5 | 王五 | 男  |  33 | 666666666   |
+----+------+-----+-----+-------------+
5 rows in set (0.00 sec)
删 - 删除表中的数据

基本用法为:

delete from 表名称 where 删除条件;

年龄太小不能入学

mysql> delete from student where age < 18;
Query OK, 2 rows affected (0.04 sec)

mysql> select * from student;
+----+------+-----+-----+-------------+
| id | name | sex | age | tell        |
+----+------+-----+-----+-------------+
|  1 | 张三 | 男  |  24 | 13666665555 |
|  2 | 李四 | 女  |  21 | 13900001111 |
|  5 | 王五 | 男  |  33 | 666666666   |
+----+------+-----+-----+-------------+
3 rows in set (0.00 sec)

修改现有的表

alter table 语句用于修改现有表

添加列

alter table 表名 add 列名 列数据类型 [after 插入位置];

在表的最后添加address列 mysql> alter table student add address char(70);

在名为 age 的列后插入列 birthday mysql> alter table student add birthday date after age;

此时的表

mysql> select * from student;
+----+------+-----+-----+----------+-------------+---------+
| id | name | sex | age | birthday | tell        | address |
+----+------+-----+-----+----------+-------------+---------+
|  1 | 张三 | 男  |  24 | NULL     | 13666665555 | NULL    |
|  2 | 李四 | 女  |  21 | NULL     | 13900001111 | NULL    |
|  5 | 王五 | 男  |  33 | NULL     | 666666666   | NULL    |
+----+------+-----+-----+----------+-------------+---------+

列的名字不能是mysql的关键字,比如不能是index

修改列

基本形式: alter table 表名 change 列名称 列新名称 新数据类型;

将tell列名修改为mobile alter table student change tell mobile char(13) default "-";

修改name列的类型为char(11) not null

mysql> alter table student change name name char(11) not null;
Query OK, 3 rows affected (0.54 sec)
Records: 3  Duplicates: 0  Warnings: 0
删除列

alter table 表名 drop 列名称;

删除address列 alter table student drop address;

重命名表

alter table 表名 rename 新表名;

重命名表student -> bigstu alter table student rename bigstu;

删除整张表

drop table 表名; 删掉前面我们创建的person_t

mysql> drop table person_t;
Query OK, 0 rows affected (0.12 sec)
删除整个数据库

drop database 数据库名;

新建一个数据库samp_4_delete,再删除它

mysql> create database samp_4_delete;
Query OK, 1 row affected (0.00 sec)

mysql> drop database samp_4_delete;
Query OK, 0 rows affected (0.01 sec)

复制schema

没有特定的复制命令。思路是新建一个目标schema,然后把原数据库中的表全部复制到新建的库中去。

参考:

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • MySQL表的增删查改(一)

    海盗船长
  • MySQL表的增删查改(二)

    创建学生表student,一个学生对应一个班级,一个班级对应多个学生。使用id为主键,classes_id为外键,关联班级表id:

    海盗船长
  • MySQL增删改查基础语句

    增: 除自动增长列,有默认值和允许为空的列可以不输入数值,其它列必须要有值。 insert into student(列列表) values(值列表) 当所...

    用户4988376
  • [GO] golang练习项目-gorm与mysql的增删查改操作

    陶士涵
  • NodeJS下连接mysql操作(增删查改)

    NodeJS下要使用mySql需要安装mysql依赖,输入命令行:npm install mysql --save NodeJS中连接mysql数据库的简单方法...

    bering
  • Go实现对MySQL的增删改查 原

    开发环境:windows7 64位、编辑器是sublime text3。 直接添上代码了,代码中有注释。 注:需要提前下载github.com/go-sql-d...

    克虏伯
  • Node.js+Express+Mysql 实现增删改查

    这次选用nodejs+express+mysql 使用http作为客户端,express框架搭建服务端,从而实现数据的增删改查。这篇文章可以算作上篇文章的升级篇...

    用户5005176
  • Python之Pymysql模块实现MySQL增删改查

    PyMySQL 是在 Python3.x 版本中用于连接 MySQL 服务器的一个库,Python2中则使用mysqldb。

    王大力测试进阶之路
  • QT5连接MySQL实现增删改查

    静谧星空TEL
  • go语言连接mysql 实现增删改查

    地球流浪猫
  • Java 连接操作 MySQL 数据库(增删查改操作)

    若尘_
  • Qt对MySql数据库的增删查改操作

    Sindsun
  • 使用Java JdbcTemplate对mySQL进行CRUD增删改查操作

    create方法:用字符串拼接构造一个SQL命令:“insert into Student (name, age) values (?, ?)”

    Jerry Wang
  • MySQL 学习二:MySQL 增删改查高级命令大全以及常见错误总结

    关于学习 MySQL 的基础知识请移步我的另一篇帖子:MySQL 学习一:零基础增删改查小白简单入门上手教程(附 MySQL 下载地址)

    白鹿第一帅
  • Java使用JDBC连接MYSQL数据库增删改查示例

    用户8671053
  • MySQL---数据库从入门走向大神系列(二)-用Java对MySQL进行增删改查

    上节已经学会对MySQL进行简单的增删改查了,那么,我们如何实现用Java来对数据库操作增删改呢。

    谙忆
  • java入门015~springboot2整合mybatis,轻松实现mysql数据的增删改查

    1,springboot结合mybatis管理数据库 2,springboot结合jpa管理数据

    编程小石头
  • flask mysql 数据库增删改查(微信报修小程序源码讲解四)

    上一讲,我们学习了 flask 拦截器与session的使用 ,已经清楚了后台用户是否登录的判断及验证 url 合法性的方法 。

    热心的程序员
  • 增删改查的增删改

    王豆豆

扫码关注云+社区

领取腾讯云代金券