MYSQL的一些基本操作

#原创,转载请联系

一、登录以及退出MYSQL

  • 登录:mysql -uroot -p
  • 退出:exit 或者 quit
  • 查看数据库版本:select version();
  • 显示当前的日期时间:select now();
  • 显示当前的年份 select year(now());
  • 显示当前的时间 select time(now());

二、数据库操作

  • 查看当前在哪个数据库:select database();
  • 查看所有数据库:show databases;
  • 使用数据库:use 数据库名;
  • 创建数据库:create database 数据库名 charset=utf8;    (charset=utf8一定要加,不然表里用到中文可能会乱码,后续更改很麻烦)
  • 删除数据库:drop database 数据库名;

三、数据表结构的操作

  • 查看当前数据库的所有表:show tables;
  • 删除表:drop table 表名;
  • 查看表结构:desc 表名;
  • 创建表结构:create table 表名(字段名称  数据类型 约束条件,*其他的格式和前面的一样)

注意:主键说明可以放在字段中单独说明 也可以放在最后统一说明PRIMARY KEY(字段名称)

示例:创建一个学生表

create table student_tables(id int unsigned auto_increment not null primary key,name varchar(10) default'',age tinyint unsigned default 0,height decimal(5,2),gender enum('man','woman'),cls_id int unsigned default 0);

也可以在最后统一说明PRIMARY KEY(字段名称)

create table student_tables(id int unsigned auto_increment not null,name varchar(10) default'',age tinyint unsigned default 0,height decimal(5,2),gender enum('man','woman'),cls_id int unsigned default 0,primary key(id));
  • 修改表-添加字段:alter table 表名 add (字段名称 数据类型 约束条件,*其他的格式和前面的一样);
alter table student_tables add (birthday datetime not null,app int not null);
  • 修改表-修改字段:alter table 表名 change 原字段名 新字段名 数据类型 约束条件(要改字段名就要用这个,数据类型改不改都行。)
alter table student_tables change birthday birth datetime not null;
  • 修改表-修改字段:alter table 表名 modify 字段名 数据类型 约束条件(不需要改字段名,但是要改数据类型,约束条件用这个)
alter table student_tables modify birth date not null;
  • 修改表-删除字段
alter table student_tables drop app;
  • 查看表的创建语句-详细过程:show create table 表名;
mysql> show create table student_tables;
+----------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table          | Create Table                                                                                                                                                                                                                                                                                                                                                                            |
+----------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| student_tables | CREATE TABLE `student_tables` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `name` varchar(10) DEFAULT '',
  `age` tinyint(3) unsigned DEFAULT '0',
  `height` decimal(5,2) DEFAULT NULL,
  `gender` enum('man','woman') DEFAULT NULL,
  `cls_id` int(10) unsigned DEFAULT '0',
  `birth` date DEFAULT '1997-12-11',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 |
+----------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+

拓展:InnoDB,MyISAM 数据库引擎。Mysql 创建表时,默认是InnoDB引擎


两种类型有什么区别:

MyISAM类型不支持事务处理等高级处理,而InnoDB类型支持。
MyISAM类型的表强调的是性能,其执行速度比InnoDB类型更快,但是不提供事务等高级特性,而InnoDB提供事务支持,行级锁,高并发。一般开发中默认使用的是innodb引擎。

四、表数据的操作

  • 查询所有列:select * from 表名;
  • 查询指定列:select 列1 列2 from 表名;
select id name from student_tables;
  • 全列插入:insert into 表名 values(...)

说明:如果主键字段是自动增长,在全列插入时需要占位,通常使用空值(0或者null) ; 字段默认值 default 来占位,插入成功后以实际数据为准。

mysql> insert into student_tables values (null,'chichung',23,178.00,'man',2,default);
mysql> select * from student_tables;
+----+----------+------+--------+--------+--------+------------+
| id | name     | age  | height | gender | cls_id | birth      |
+----+----------+------+--------+--------+--------+------------+
|  1 | chichung |   23 | 178.00 | man    |      2 | 1997-12-11 |
+----+----------+------+--------+--------+--------+------------+
  • 部分值插入:insert into 表名 (列1,...) values(值1,...)
mysql>insert into student_tables (name,birth) values ('vivian','1996-10-11');
mysql> select * from student_tables;
+----+----------+------+--------+--------+--------+------------+
| id | name     | age  | height | gender | cls_id | birth      |
+----+----------+------+--------+--------+--------+------------+
|  1 | chichung |   23 | 178.00 | man    |      2 | 1997-12-11 |
|  2 | vivian   |    0 |   NULL | NULL   |      0 | 1996-10-11 |
+----+----------+------+--------+--------+--------+------------+
  • 全列多行插入:insert into 表名 values(...),(...),...

一次性插入多行数据,这样可以减少与数据库的通信

  • 部分列多行插入:insert into 表名(列1,...) values(值1,...),(值1,...)...;

原理同上

  • 修改表数据:update 表名 set 列1=值1,列2=值2... where 条件
update student_tables set name='cong',height=177.55 where id=1;

不加where [条件]就是修改全部列都修改!

  • 物理删除:delete from 表名 where 条件
  • 逻辑删除:本质是修改操作。(举个栗子,用户虽然注销了账号,但是我们可以留下历史记录。数据多宝贵啊。(奸笑.jpg))
update students_tables set isdelete=1 where id=1;

 

原文地址:https://www.cnblogs.com/chichung/p/9571004.html