数据库常用操作整理

一、数据库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等函数。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,425评论 4 361
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,058评论 1 291
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,186评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,848评论 0 204
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,249评论 3 286
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,554评论 1 216
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,830评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,536评论 0 197
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,239评论 1 241
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,505评论 2 244
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,004评论 1 258
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,346评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,999评论 3 235
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,060评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,821评论 0 194
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,574评论 2 271
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,480评论 2 267