本站所有文章均为原创,如对您有帮助,恳请帮忙点击任何一处广告
  • 首页
  • MySQL
  • MySQL基础教程(3)数据库基本知识与DDL语句

MySQL基础教程(3)数据库基本知识与DDL语句

发布:TangLu2019-1-3 12:46分类: MySQL 标签: mysql

一、什么是SQL语言

SQL是结构化查询语言的英文单词缩写,已经是关系型数据库的标准。主要用于存取、查询、更新、管理数据库系统,SQL语言分为三种类型:

数据库定义语言(DDL):库、表、索引的创建语句、删除与修改语句,如CREATE、DROP、ALTER

数据库操纵语言(DML):增删查改语句,如INSERT、UPDATE、DELETE、SELECT(也有把SELECT定义为DQL的)

数据库控制语言(DCL):控制用户权限的语句,如GRANT、REVOKE


二、MySQL默认数据库介绍

每一个数据库都以目录形式存放在datadir所定义的目录中,而每一个数据库目录中存放的是许多表。MySQL在初始化完成后自带了几个数据库:

information_schema:主要存储系统中一些数据库对象信息,如用户信息、列信息、权限信息、字符信息等

performance_schema:主要存储服务器性能参数,如慢查询、死锁等

mysql:存储了用户的权限信息

sys:主要存储服务器性能参数


三、MySQL常用引擎介绍

MyISAM存储引擎:5.5默认存储引擎,不支持事务,表锁,8.0已经废弃。

InnoDB存储引擎:5.7默认存储引擎,也是目前主要使用的引擎。支持事务,支持行级锁,支持外键约束、自动增长列

Memory:数据存放于内存中,速度很快,但是存在数据丢失问题


四、MySQL数据库DDL语句介绍

1、库的基本管理

MySQL的数据都是存放在每个库中的各个表里,建库时最好指定好字符集,库名是无法修改的。

mysql > create database NEWDATABASE1 default charset utf8mb4;  #创建名为NEWDATABASE1,数据库名区分大小写
mysql > create database NEWDATABASE2 if not exists;  #如果指定的数据库不存在才进行创建
mysql > show databases;  #显示所有数据库
mysql > use NEWDATABASE1  #进入指定数据库
mysql > drop database NEWDATABASE2;  #删除指定数据库
mysql > drop database NEWDATABASE2 if exists  #如果指定的库存在才进行删除


2、表的基本管理

建表时需要注意以下规范:

· 建表语句最好带上库名

· 表名最好都是小写,避免跨平台不兼容

· 建表语句必须设置存储引擎和字符集

· 每个表必须要有主键

· 每个列尽量都设置非空NOT NULL

· 每个列都加上注释

· 表的每列也称为字段,各个字段的属性可以是不同的,要为每个字段选择合适的数据类型:

  字符串类型:CHAR(定长)、VARCHAR(变长),字符串类型虽然也可以插入数字,但是无法作比较运算

  数值类型:TINYINT、SMALLINT、MEDIUMINT、INT、BIGINT、FLOAT等

  TEXT类型:TINYTEXT、TEXT、LONGTEXT

  枚举类型:ENUM,让用户从给出的条件中进行单项选择,通常用于性别

  集合类型:SET,多选

  时间和日期类型:DATE、TIME、DATETIME、TIMESTAMP

use database1;  #切换到需要执行SQL的对应数据库

# 建议对每列字段名都加上反引号,防止关键词问题;并且指定默认字符集和校对规则
create table school.student1 (
`id` int not null auto_increment primary key COMMENT 'ID',  #字段名为id,类型为int,不能为空,自增,唯一主键
`name` varchar(10) NOT NULL COMMENT '姓名',  #字段名为name,varchar类型,长度为10,数据超过10个字符就无法插入
`sex` enum('m','f') NOT NULL COMMENT '性别',
`age` tinyint UNSIGNED NOT NULL DEFAULT 18 COMMENT '年龄';) ENGINE = innodb DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;

show tables; 查看当前库中的所有表格
show create table table_name \G  #查看建表所用语句


3、使用alter语句修改表本身的属性,需要注意的是alter操作会锁表,执行alter语句期间所有修改类的命令无法正常进行

#alter table <旧表名> rename <新表名>;  #修改表名
#alter table <表名> modify <字段名> <新的数据类型>;  #修改字段的数据类型,修改的时候需要保留原有的约束条件

#alter table <表名> change <旧字段名><新字段名><新的数据类型>;  #修改字段的名称
alter table t1 change name fullname varchar(10); 

#alter table <表名> add  <新字段名><新的数据类型> [约束条件] [first | after 已存在字段名];   #添加字段或者约束
alter table t1 add column location varchar(20) not null after name;  #在name列后面加新的一列,名称为location

#alter table <表名> drop <字段名>;  #删除字段
alter table student drop address;  删除address字段

#alter table <表名> engine=<新的存储引擎>;  #更改表存储引擎
alter table t8 engine=InnoDB   
 
alter table <表名> drop foreign key <外键名>;  #删除表的外键约束,删除所有的外键之后,才能删除对应主键所在的表



4、使用truncate语句清空表,然后optimize回收表空间

mysql > truncate table student;
mysql > optimize table student;


5、查看表的详细结构,包括每行数据是否可以为空、是否有约束条件、默认值等信息

DESC 表名; 
温馨提示如有转载或引用以上内容之必要,敬请将本文链接作为出处标注,谢谢合作!
et_highlighter51
版权所有:《Linux运维技术学习站点
文章标题:《MySQL基础教程(3)数据库基本知识与DDL语句
除非注明,文章均为 《Linux运维技术学习站点》 原创
转载请注明本文短网址:http://www.linuxe.cn/post-123.html  [生成短网址]

已有 0/2442 人参与

发表评论:

欢迎分享Linux运维技术学习站点

欢迎使用手机扫描访问本站,还可以关注微信哦~