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

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

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

一、MySQL语言的分类

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

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

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

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


二、MySQL常用数据类型

字符串类型:分为了CHAR(定长)、VARCHAR(变长)。VARCHAR更为常用,它的最大长度是65536字节,在UTF8编码下一个字符占用3个字节,再减去1-2个字节保存长度信息,这样大概算出能存的最大长度值为21844。是字符串类型虽然也可以插入数字,但是无法作比较运算

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

文本类型:TINYTEXT、TEXT(无需指定长度)、LONGTEXT。建议数据量超过500就使用文本类型,文本类型的数据不能有默认值
枚举类型:ENUM,让用户从给出的条件中进行单项选择,通常用于性别
集合类型:SET,多选
时间和日期类型:DATE(年月日)、TIME(时分秒)、DATETIME(年月日时分秒,20200606213940与2020-06-06 21:39:40两种格式都可以)、TIMESTAMP。其中timestamp会根据用户的时区进行转换后再显示


三、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,因为在做比较运算时,会对NULL值做特殊处理,会影响效率

· 每个列都加上注释

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

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;
create table student2 like student1  #复制表1的结构到新表2
create table student3 select * from student1  #复制表1的表结构和数据到新表3
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/2567 人参与

发表评论:

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

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