数据库常用操作整理

一、数据库SQL:

       1、创建数据库: create database [数据库名称];   例如:create database baseservice;

             一般项目创建数据库语句如下:

             create database if not exists baseservice default charset utf8 collate utf8_general_ci;

             该语句的有两个作用:(1) 如果数据库不存在则创建,存在则不创建;   (2) 创建RUNOOB数据库,并设定编码集为utf8。

        2、删除数据库:drop database [数据库名];     例如:drop database baseservice;

        3、选择数据库:use [数据库名];                       例如:use baseservice;

二、数据类型:

       MySQL支持所有标准SQL数值数据类型。

               这些类型包括严格数值数据类型(INTEGER、SMALLINT、DECIMAL和NUMERIC),以及近似数值数据类型(FLOAT、

       REAL和 DOUBLE PRECISION)。关键字INT是INTEGER的同义词,关键字DEC是DECIMAL的同义词。BIT数据类型保存

       位字段值,并且支持MyISAM、MEMORY、InnoDB和BDB表。

       作为SQL标准扩展,MySQL也支持整数类型TINYINT、MEDIUMINT和BIGINT。如下将显示每个整数类型的存储和范围。

数据库常用操作整理_第1张图片
数值类型
数据库常用操作整理_第2张图片
日期和时间类型
数据库常用操作整理_第3张图片
     字符串类型

               CHAR 和 VARCHAR 类型类似,但它们保存和检索的方式不同。它们的最大长度和是否尾部空格被保留等方面也不同。

        在存 储或检索过程中不进行大小写转换。

                BINARY 和 VARBINARY 类似于 CHAR 和 VARCHAR,不同的是它们包含二进制字符串而不要非二进制字符串。也就

         是说,它们包含字节字符串而不是字符字符串。这说明它们没有字符集,并且排序和比较基于列值字节的数值值。

                BLOB 是一个二进制大对象,可以容纳可变数量的数据。有 4 种 BLOB 类型:TINYBLOB、BLOB、MEDIUMBLOB 和

         LONGBLOB。它们区别在于可容纳存储范围不同。

                 有 4 种 TEXT 类型:TINYTEXT、TEXT、MEDIUMTEXT 和 LONGTEXT。对应的这 4 种 BLOB 类型,可存储的最大

         长度不同,可根据实际情况选择。

         备注:(1) 一个汉字占多少长度与编码有关: UTF-8:一个汉字=3个字节 , GBK:一个汉字=2个字节

                    (2) varchar(n) 表示 n 个字符,无论汉字和英文,Mysql 都能存入 n 个字符,仅是实际字节长度有所区别

                    (3) MySQL 检查长度,可用 SQL 语言来查看:select LENGTH(fieldname) from tablename

三、数据库函数:

      1、日期类函数:date_format(),  函数的格式:date_format(date,format)

数据库常用操作整理_第4张图片
format 格式说明

              常用的format格式如下:

              获取日期和时间,格式: %Y-%m-%d %T             例如:select date_format(now(),'%Y-%m-%d %T');                 输出结果:2019-09-24 15:15:57

                                                        %Y-%m-%d %H:%i:%    例如:  select date_format(now(),'%Y-%m-%d %H:%i:%s');   输出结果:2019-09-24 15:15:22

              获取日期,格式:%Y-%m-%d    例如:select date_format(now(),'%Y-%m-%d');  输入结果:2019-09-24

              获取时间,格式:%T                  例如:select date_format(now(),'%T');                输出结果:15:16:50

                                            %H:%i:%s      例如:select date_format(now(),'%H:%i:%s');      输出结果:15:16:50

        2、格式化函数:

              (1)  第一种参数格式: from_unixtime( unix_timestamp )  , 参数一般为10位的时间戳,如:1417363200,返回值:有两种,可能是类似 'YYYY-MM-DD HH:MM:SS'

                     这样的字符串,也有可能是类似于 YYYYMMDDHHMMSS.uuuuuu 这样的数字,具体返回什么取决于该函数被调用的形式。

                     例如:select from_unixtime(1417363200);                      输出结果:2014-12-01 00:00:00

              (2)  第二种参数格式:from_unixtime( unix_timestamp, format ) , 参数 unix_timestamp :与方法 FROM_UNIXTIME( unix_timestamp ) 中的参数含义一样;

                    参数 format : 转换之后的时间字符串显示的格式;   返回值:按照指定的时间格式显示的字符串;

                    例如:select from_unixtime(1417363200,'%Y-%m-%d');     输出结果:2014-12-01

三、数据表SQL:

       1、创建数据表格式:create table [数据表名] ([列名] [数据类型] [可选:默认值] [可选:字段备注]);               // 数据表的多个字段之间使用英文逗号隔开

             例如:create table if not exists `company` (

                             `company_id` int(11) not null AUTO_INCREMENT comment '主键,自增',

                             `company_name` varchar(50) not null comment '企业名称',

                             `company_logo` text default null comment '企业base64的logo图',

                             `company_remark` varchar(255) DEFAULT NULL COMMENT '备注',

                             `update_time` datetime DEFAULT NULL COMMENT '更新时间',

                             `create_time` timestamp DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',

                             PRIMARY KEY (`company_id`),

                             KEY `company_keys` (`company_name`,`update_time`) USING BTREE

                         ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COMMENT='公司表';


               实例解析:AUTO_INCREMENT定义列为自增的属性,一般用于主键,数值会自动加1。

                                 如果你不想字段为NULL可以设置字段的属性为NOT NULL,在操作数据库时如果输入该字段的数据为NULL,就会报错。

                                  PRIMARY KEY关键字用于定义列为主键。 您可以使用多列来定义主键,列间以逗号分隔。

                                  ENGINE 设置存储引擎,CHARSET 设置编码。

               备注:创建 数据表时,表名和字段名的符号`不是单引号,而是英文输入法状态下的反单引号,也就是键盘左上角esc按键下面的那一个~按键。

                          反引号是为了区分 MySql 关键字与普通字符而引入的符号,一般的,表名与字段名都使用反引号。

        2、删除数据表格式:drop table [数据表名];     例如:drop table company;

        3、插入数据格式:当插入所有列值时,格式:insert into value ([列值], [列值],...[列值]);

                                      当插入非所有列值时,格式:insert into [数据表名] ([列名], [列名],...[列名]) value ([列值], [列值],...[列值]);

                                       当插入多条记录值时,格式:insert into [数据表名] ([列名], [列名],...[列名]) values ([列值], [列值],...[列值]);

             例如:insert into company value ('1','创新公司','', '虚拟公司',now(),now());

                        insert into company (`company_name`, `company_remark`,`create_time`) value ('创新公司', '虚拟公司',now());

                       insert into company (`company_name`, `company_remark`,`create_time`) values ('创新公司', '虚拟公司',now());

                        insert into company (`company_name`, `company_remark`,`create_time`) values ('创新公司', '虚拟公司',now()),('奋进公司', '虚拟公司',now());

        4、更新数据格式:update [数据表名] set [列名] = [新列值], [列名] = [新列值] [可选项: where [列值] = [查询值]]

              例如:update `company` set `company_id` = '测试公司', `company_remark` = '测试备注' where `company_id` = 1

        5、删除数据格式:delete from [数据表名] [可选项: where [条件]]

             例如:delete from company where company_id = 1;

        6、修改表名或增删改字段名

             删除字段:alter table [数据表名] drop [字段名];   

                            例如:

             添加字段: alter table [数据表名] add [字段名] [数据类型] [可选项: first / after [字段名]];

                            例如:

            备注:first和after关键字可用于add的语句中,first标识在第一个位置添加字段,after标识在末尾添加字段(缺省默认在末尾添加字段)。

                     如果想重置数据表字段的位置就需要先使用 drop 删除字段然后使用 add 来添加字段并设置位置。


        7、查询语句格式:select [列名],[列名],...[列名]

                                      from [数据表名]

                                      [可选项:where [条件]]

                                      [可选项:limit n [offset m]]

             例如:select company_id,company_name,company_logo,company_remark

                        from company

                        where company_id = 2

                        limit 0,1

        7、模糊查询,常用 like 关键字和where 匹配使用,并且通配符如下:

              (1) % : 表示任意 0 个或多个字符。可匹配任意类型和长度的字符,有些情况下若是中文,请使用两个百分号(%%)表示。

              (2) _  : 表示任意单个字符。匹配单个任意字符,它常用来限制表达式的字符长度语句。

              (3) [] : 表示括号内所列字符中的一个(类似正则表达式)。指定一个字符、字符串或范围,要求所匹配对象为它们中的任一个

              (4) [^] : 表示不在括号所列之内的单个字符。其取值和 [] 相同,但它要求所匹配对象为指定字符以外的任一个字符。

              备注:查询内容包含通配符时,由于通配符的缘故,导致我们查询特殊字符 “%”、“_”、“[” 的语句无法正常实现,而把特殊字符用 “[ ]” 括起便可正常查询。

        8、联合:union ,语法如下:

              select [列名], [列名], [列名] ....  [列名]  from [表名]  where [条件]

              union [ all | distinct ]

              select [列名], [列名], [列名] ....  [列名]  from [表名]  where [条件]

            备注:distinct 是可选的,删除结果集中重复的数据。默认情况下 UNION 操作符已经删除了重复数据,所以 DISTINCT 修饰符对结果没啥影响

                       all 是可选的,返回所有结果集,包含重复数据。

        9、 排序:order by,语法如下:

              select [列名], [列名],... [列名]

              from [表名]

               order by [列名] [asc(默认)/desc], [列名] [asc(默认)/desc]

              备注:任何字段来作为排序的条件,从而得到回排序后结果。你可以设定多个字段来排序。

                         可以使用 ASC 或 DESC 关键字来设置查询结果是按升序或降序排列。 默认情况下,它是按升序排列。可以添加 WHERE...LIKE 子句来设置条件。

       10、分组: group by,语法如下:

               select [列名], [列名],... [列名]

               from [表名]

               where [条件]

               group by [列名] ;

               备注:group by 可以根据一个或多个列对结果集进行分组。在分组的列上我们可以使用 count, sum, avg等函数。

你可能感兴趣的:(数据库常用操作整理)