美文网首页
数据库常用操作整理

数据库常用操作整理

作者: Yoyota | 来源:发表于2020-01-02 13:40 被阅读0次

    一、数据库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。如下将显示每个整数类型的存储和范围。

    数值类型 日期和时间类型      字符串类型

                   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)

    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等函数。

    相关文章

      网友评论

          本文标题:数据库常用操作整理

          本文链接:https://www.haomeiwen.com/subject/ycuvuctx.html