入门MySQL——基础语句篇

前言:?

前面几篇文章,我们介绍了MySQL的基础概念及逻辑架构。相信你现在应该有了自己的一套MySQL环境,接下来我们就可以开始练习MySQL了。本文将从MySQL最基础的语句出发,为你展示出创建及修改不同对象应该使用的标准语句。

1.创建数据库

创建数据库的官方标准语法为:

CREATE {DATABASE | SCHEMA} [IF NOT EXISTS] db_name
    [create_specification] ...

create_specification:
    [DEFAULT] CHARACTER SET [=] charset_name
  | [DEFAULT] COLLATE [=] collation_name

其中{}中的内容为多选一,[]中的内容可带可不带,后续若有此类符号也是同等意思。
一般工作中常常这样创建数据库:

CREATE DATABASE IF NOT EXISTS `test_db` DEFAULT CHARACTER SET utf8;

想要查看数据库的创建语句,可以这样查看:

mysql> show create database test_db;
+----------+------------------------------------------------------------------+
| Database | Create Database                                                  |
+----------+------------------------------------------------------------------+
| test_db  | CREATE DATABASE `test_db` /*!40100 DEFAULT CHARACTER SET utf8 */ |
+----------+------------------------------------------------------------------+

2.修改数据库

一般情况下很少去修改数据库,官方给出的标准语法为:

ALTER {DATABASE | SCHEMA} [db_name]
    alter_specification ...

alter_specification:
    [DEFAULT] CHARACTER SET [=] charset_name
  | [DEFAULT] COLLATE [=] collation_name

特殊情况下我们可能会修改数据库的字符集,这时候我们可以这样书写:

ALTER DATABASE `test_db` DEFAULT CHARACTER SET utf8mb4;

3.删除数据库

删除数据库可要小心啊!千万不要删库跑路哦。此类需求一般极少,不过我们也要会呀,连库都不会删岂不是很没面子~~ 还是看下官方文档语法:

DROP {DATABASE | SCHEMA} [IF EXISTS] db_name

相比创建和更改来讲,删除就显得简单粗暴很多。所有我们操作的时候要格外小心,删除前建议做下备份。<br />比如我们要删除test_db库,我们可以这样写:

DROP DATABASE IF EXISTS `test_db`;

删除之后我们再执行show database就看不到test_db库了。

4.创建表

创建数据表是我们经常遇到的语句了,官方给出的参考语法比较长,这里先列出下,为了不占用太多空间,这里用代码图片代替。

对于我们学习及工作常用的选项归纳如下:

CREATE TABLE <表名> ([表定义选项])[表选项][分区选项];

[表定义选项]的格式为:
<列名1> <类型1> [,…] <列名n> <类型n>

对于临时表的创建及分区表的创建选项,日常学习及工作中用的不多,这里就不多介绍,下面列举出一个基础的创建表的语句:

CREATE TABLE `user_info` (
  `id` int unsigned NOT NULL AUTO_INCREMENT COMMENT ‘自增主键‘,
  `user_id` bigint(11) NOT NULL COMMENT ‘用户id‘,
  `username` varchar(45) NOT NULL COMMENT ‘真实姓名‘,
  `email` varchar(30) NOT NULL COMMENT ‘用户邮箱‘,
  `nickname` varchar(45) NOT NULL COMMENT ‘昵称‘,
  `birthday` date NOT NULL COMMENT ‘生日‘,
  `sex` tinyint(4) DEFAULT ‘0‘ COMMENT ‘性别‘,
  `short_introduce` varchar(150) DEFAULT NULL COMMENT ‘一句话介绍自己,最多50个汉字‘,
  `create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT ‘创建时间‘,
  `update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT ‘修改时间‘,
  PRIMARY KEY (`id`),
  UNIQUE KEY `uniq_user_id` (`user_id`),
  KEY `idx_username`(`username`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT=‘用户信息表‘

5.修改表

修改表可选选项同样是很多的,参考上面创建表的选项,这里就不一一列出了。
alter table用于更改表的结构,例如,可以添加或删除列,创建或删除索引,更改现有列的类型,或重命名列或表本身。还可以更改表的存储引擎或表注释。下面介绍下几个常用的修改表的示例:

修改表选项?

# 修改表的存储引擎
ALTER TABLE t1 ENGINE = InnoDB;

# 修改表的自增值
ALTER TABLE t1 AUTO_INCREMENT = 13;

# 修改表的字符集
ALTER TABLE t1 CHARACTER SET = utf8;

# 添加(或更改)表注释:
ALTER TABLE t1 COMMENT = ‘New table comment‘;

# 修改表名称
ALTER TABLE t1 RENAME t2;

字段(列)操作?

# 增加字段
# ALTER TABLE <表名> ADD COLUMN <新字段名> <数据类型> [约束条件] [FIRST|AFTER 已存在的字段名]
ALTER TABLE t1 ADD COLUMN col1 INT FIRST;

# 删除字段
ALTER TABLE t1 DROP COLUMN col1;

# 修改字段类型
ALTER TABLE t1 MODIFY col1 VARCHAR(30);

# 更改字段名称
ALTER TABLE t1 CHANGE col1 col2 VARCHAR(30);

索引操作?

# 添加索引
alter table t1 add index index_name (column_list) ;
alter table t1 add unique (column_list) ;
alter table t1 add primary key (column_list) ;

# 删除索引
alter table t1 drop index index_name ;
alter table t1 drop primary key ;

6.截断表

截断表即truncate table,也可理解为清空表,从逻辑上讲,TRUNCATE TABLE类似于DELETE一个表的所有行,但它绕过了删除数据的DML方法,因此它不能回滚。<br />truncate语法很简单,官方文档示例:

TRUNCATE [TABLE] tbl_name

7.删除表

删除表官方给出的参考语法为:

DROP [TEMPORARY] TABLE [IF EXISTS]
    tbl_name [, tbl_name] ...
    [RESTRICT | CASCADE]

如果我们不需要这个表,可以考虑使用该语法,但是它将删除表定义和所有表数据,是不可回滚的操作,一定要小心执行哦。

总结:?

本文记录一些常用的基础语句,虽然看起来很简单,但回顾一下还是有收获的,特别是翻阅官方文档后,发现这些基础的语句也是有很多选项的,可能我们只是经常用到其中一种。自己也很少写这种系列的文章,打算多写几篇入门MySQL的基础文章,可能这几篇先后顺序也不太严谨,其他同学有什么好的想法,欢迎与我沟通哦!

原文地址:https://blog.51cto.com/10814168/2425790

时间: 2024-08-11 19:24:01

入门MySQL——基础语句篇的相关文章

入门MySQL——DML语句篇

前言:? 在上篇文章中,主要为大家介绍的是DDL语句的用法,可能细心的同学已经发现了.本篇文章将主要聚焦于DML语句,为大家讲解表数据相关操作. 这里说明下DDL与DML语句的分类,可能有的同学还不太清楚. DDL(Data Definition Language):数据定义语言,用于创建.删除.修改.库或表结构,对数据库或表的结构操作.常见的有create,alter,drop等. DML(Data Manipulation Language):数据操纵语言,主要对表记录进行更新(增.删.改)

MySQL基础语句【学习笔记】

放在这里,以备后查. 1. 数据库, 数据库服务器, 数据库语言 数据库,是持久性数据的集合,供给定企业的应用程序系统使用,并且由一个数据库管理系统来管理: 数据库服务器,又称数据库管理系统,用来管理数据库(高效地存储.查询.更新数据库,并维护数据库的完整性状态):                  数据库语言,是应用程序用来向数据库服务器发送命令并从中取出所需要数据的特定语言. 2.  系统变量 查询系统变量: SELECT @@系统变量名 , eg. SELECT @@DATADIR    

复习篇--mysql 基础语句

1.数据库(此处"pikachu"为数据库名称) SHOW  DATABASES;                      ##查看数据库 USE  pikachu;                                ##切换到数据库      CREATE  DATABASE  pikachu;        #创建数据库 DROP  DATABASE  pikachu;           #删除数据库 2.表(此处"student"为表名称) S

Mysql基础语句

mysql数据库这个表示的是一个软件,然后软件里面可以有好多database,这表示的就是库也可以认为是实例,然后每一个实 例里面有好多张表sql语句结构对表里面的数据进行操作动作:select insert update delete 查增改删对实例数据库或是表进行操作动作:create drop alter show 进入数据库对库里面的实例进行查看show databases:进入某个实例use mysql查看实例里面的所有的表格show tables:查看当前所在哪个实例查看自己在哪里数

mysql 基础语句

mysql> show databases; mysql> show databases \G   #以行的方式显示 -e 常用与shell脚本. [[email protected] ~]# mysql -e 'show databases' -usystem -p123456 mysql> create database HA; mysql> create database `HA-test`; [[email protected] ~]# ls /usr/local/mysq

mysql基础——启动篇

mysql有免安装版本和安装版本.免安装版本需要在dos界面启动服务. 步骤一,进入MySQL的bin目录. 步骤二,在该界面的目录下输入cmd,如下图. 步骤三,cmd界面输入mysqld start,并等待启动成功.

mysql基础语句整理

显示所有数据库. mysql> show databases; +--------------------+ | Database           | +--------------------+ | information_schema | | mysql              | | test               | | zabbix             | +--------------------+ 4 rows in set (0.00 sec) 新建一个数据库.

Mysql基础入门-SQL_DDL语句

一.mysql数据库介绍: mysql数据库属于关系型数据库,关系型数据库是指采用关系模型来组织数据的数据库,似于Excel函数关系表.保持数据的一致性是关系型数据库的最大优势 关系型数据库瓶颈: 1.高并发读写硬盘I/O瓶颈; 2.对于关系型数据来说在一张海量数据表中查询效率是非常低的: 3.横向扩展困难,当一个应用系统用户量访问与日俱增的时候数据库没有办法像web server那样简单的通过添加更多的硬件或者节点来扩展和提供负载能力. 对于并发量不高及数据量较小的应用系统mysql还是占有很

【夯实Mysql基础】记一次mysql语句的优化过程!

1. [事件起因] 今天在做项目的时候,发现提供给客户端的接口时间很慢,达到了2秒多,我第一时间,抓了接口,看了运行的sql,发现就是 2个sql慢,分别占了1秒多. 一个sql是 链接了5个表同时使用了 2个 order by和 1个limit的分页 sql. 一个sql是上一个sql的count(*),即链接了5个表,当然没有limit了(取总数). 2. [着手优化] 1)[优化思路] 第一条是 做client调用 service层的数据缓存 第二条就是 优化sql本身. 这里着重讲一下