文章详情

短信预约信息系统项目管理师 报名、考试、查分时间动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

第六天MySQL

2021-10-26 02:41

关注

第六天MySQL

DDL语言库与表的管理(创建、修改、删除)、一些常见的数据类型(整形、浮点|定点、日期,字符)

 

2020 5/9

 

二十二、DDL(数据定义语言)->用于库和表的管理

一、 库的管理

a)        创建

b)       修改

c)        删除

二、 表的管理

a)        创建: create

b)       修改: alter

c)        删除: drop

#库的管理

库的创建

语法:

create database [if not exists] 库名;(if not exists->是为了提高容错性,没有就创建、有的就不创建)

如:CREATE  DATABASE if not exists books;

 

库的修改(基本上不修改,若想修改库名,则需要在服务端的data里修改)

修改库的字符集:

ALTER DATABASE 库名 CHARACTER SET 字符集;

如:

ALTER DATABASE books CHARACTER SET gbk;

库的删除

DROP DATABASE IF EXISTS库名;

如:DROP DATABASE IF EXISTS books;

 

#表的管理

 

表的创建

语法:

create table(if not exists) 表名(

        列名 类型[(长度) 约束],

        列名 类型[(长度) 约束],

        列名 类型[(长度) 约束],

        …

        列名 类型[(长度) 约束]

);

 

案例:

CREATE TABLE emp5(

       id INT(7),

       First_name VARCHAR(25),

       Last_name VARCHAR(25),

       Dept_id INT(7)

); (可使用if not exists来提高容错性)

查看表结构:

 

 

表的修改

①     修改列名

②     修改列的类型或约束

③     添加新列

④     删除列

⑤     修改表名

语法:

alter table 表名 change|modify|drop|add column 列名 【列类型 约束】;

 

#修改列名

语法:

ALTER TABLE 表名 CHANGE COLUMN旧列名 新列名 新类型(一定要加上);

案例:把Last_name字段名称改为last_name;

ALTER TABLE emp5 CHANGE COLUMN Last_name last_name VARCHAR(30);

#修改列的类型或约束

语法:ALTER TABLE 表名 CHANGE COLUMN列名 新类型或约束;

案例:修改了last_name字段的长度

ALTER TABLE emp5 MODIFY COLUMN last_name VARCHAR(49);

#添加新列

语法:

ALTER TABLE 表名 ADD 新列名 新类型【约束】;

案例:向表中添加新列test_column,类型自定义

ALTER TABLE emp5 ADD COLUMN test_column VARCHAR(25);

#删除列

语法:

ALTER TABLE emp5 ADD COLUMN test_column VARCHAR(25);

案例:删除表中的test_column字段

ALTER TABLE emp5 DROP COLUMN test_column;

语法:

ALTER TABLE 表名 RENAME [TO] 新表名;

案例:把表名重命名为emp6;

ALTER TABLE emp5  RENAME TO emp6;

 

表的删除

语法:

drop table 表名;

案例:

DROP TABLE 【if exists】emp6;(可使用if exists来提高容错性)

  1. 表的复制

#仅仅复制表的结构(使用LIKE关键字)

CREATE TABLE employees2 Like employees;

 

 

 

#复制表的数据+结构(使用子查询)

CREATE TABLE employee3

SELECT * FROM employees;

 

 

#只复制部分表的数据(使用带筛选条件的子查询)

CREATE TABLE employee4

SELECT * FROM employees

WHERE employee_id>150;

 

#仅仅复制某些字段(不携带数据)

CREATE TABLE employee5

SELECT job_id,department_id FROM employees

WHERE 1=0;(只要where后的筛选条件不成立,那么就不会接待数据)

 

 

 

二十三、常见的数据类型

分类:

数值型:

       整形

       小数:

              浮点型

              定点型

字符型:

       较短的文本:char、varchar

       较长的文本:text、bolb(较长的二进制数据)

#整形

类型                     tinyint  smallint    mediumint   int/integer    bigint

所占字节大小         1         2             3                  4                  8

特点:

①     如果不设置有符号还是无符号,则默认为有符号,如果想设置为无符号,则需要添加unsigned关键字

②     如果要插入的数据超出了整形的范围,会报出out of range异常,并且插入临界值

③     如果不设置长度,则系统会有默认的长度

④     类型中的长度字段代表的是显示数据的最大宽度,若数据小于该长度则会用0在左边填充,但必须搭配zerofull关键字使用(此时默认为无符号整形)

 

#小数

浮点型

a)        float(M,D)

b)       double(M,D)

定点型

a)        dec(M,D)

b)       decimal(M,D)

特点:

①     M代表的是整数和小数部分的总长度,D代表的是小数部位的长度,若超过范围则插入临界值

②     M和D度可以省略,如果是float和double,则会根据插入的数值来决定精度,如果是decimal,则M默认为10,D默认为0

③     定点型的精度较高,如果需要求插入的数值类型精度较高如货币元素那则可以考虑使用

使用原则:所选择的类型越简单越好,能保存的数值的类型越小越好

 

#字符型

较短的文本

char(M)

varchar(M)

binary和varbinary(包含二进制文本字符串)

enum->枚举类型,要求插入的值必须属于列表中指定的值之一

set->集合类型,和Enum类型类似,里面可以保存0~64个成,一次可以选取多个成员

较长的文本

text

bolb(较长的二进制数据)

特点:

①     关于char 和varchar

                 写法                      M的意思                                                  特点                   空间的耗费

char        char(M)          最大的字符数(可以省略,默认为1)      固定长度的字符              高

varchar    varchar(M)    最大的字符数(不可省略)                       可变长度的字符              低

关于固定与可变长度,那“数字”举例,char会给它分配M个字符大小的空间,而varchar 就给它分配2个空间,长度随输入的值变化

 

#日期型

 

date:只保存日期

time:只保存时间

year:只保存年

                            字节         范围             时区等的影响

datetime                8          1000-9999              受

timestamp             4           1970-2038            不受

 

具体如下:

CREATE TABLE tab_date(

                     t1 DATETIME,

                     t2 TIMESTAMP

);#创建表

 

INSERT INTO tab_date VALUES(now(),now());

SELECT * FROM tab_date;

 

 

 

show VARIABLES like "time_zone";

set time_zone ="+9:00";#改变时区

 

可发现改变时区后,t2的值发生变化,受到了时区的影响

 

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-数据库
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯