Mysql语句

新建

 

CREATE TABLE confirm_table(
id INT PRIMARY KEY auto_increment,    #编号 整形 主键 自增长
name VARCHAR(18),   #名称
description VARCHAR(100) COMMENT '描述'       #COMMIT 注
);

 

插入

 

INSERT INTO confirm_table (name,description) VALUES('joe','to be better');

 

添加字段(列)

 

#在字段name后面添加字段sex,COLUMN可有可不有
ALTER TABLE confirm_table ADD [COLUMN] sex VARCHAR(5) NOT NULL DEFAULT 'women' AFTER name;

 

修改字段(列)名,字段类型

 

# CHANGE 修改字段名
ALTER  TABLE confirm_table CHANGE sex custom VARCHAR(100) COMMENT '习性';  

-- 或者使用 modify
-- 修改注释
alter table confirm_table modify column field_name int comment '修改后的字段注释';
-- 注意:字段名和字段类型照写就行

# alter 快捷修改默认值
alter table confirm_table alter column field_name  drop default; (若本身存在默认值,则先删除)
alter table confirm_table  alter column field_name  set default 默认值;(若本身不存在则可以直接设定)

 

 

重命名表名

 

ALTER TABLE confirm_table RENAME person;

 

Limit

 

limit 语法格式: 

limit  [位置偏移量] ,  行数

      中括号里面的参数是可选参数,位置偏移量是指MySQL查询分析器要从哪一行开始显示,索引值从0开始(默认),即第一条记录位置偏移量是0,第二条记录的位置偏移量是1,依此类推...

第二个参数为“行数”即指示返回的记录条数。

 

#不指定偏移量,起始值是0,查询 2条记录
SELECT * FROM person LIMIT 2;
#指定偏移量,起始值是1(数据表第2条记录开始),查询 2条记录
SELECT * FROM person LIMIT 1,2;

 

Locate  position

 

 

locate(substr , str)

position(substr IN  str)

返回子串 substr 在字符串 str 中第一次出现的位置。如果子串 substr 在 str 中不存在,返回值为 0.

# 当前person表里只有'joe'一条记录 , 'joe' 不包含 'do' , 因此返回 'joe'一条记录
SELECT *  FROM  person WHERE LOCATE('do',name) = 0;

 

locate(substr , str , pos)

返回子串 substr 在字符串 str 中的第 pos 位置后第一次出现的位置。如果 substr 不在 str 中返回 0.

SELECT LOCATE('bo', 'barboyybo',5);
#输出 8

 

 

concat  group_concat

 

为了方便理解concat,我们再插入几条记录:

……
INSERT INTO person VALUES(NULL, 'yellia', 'women', 'officer'); 

 

现在的表格如下:

concat的用法:

SELECT CONCAT(name, ' , ' , custom, ' , ' , description) AS naCusDes FROM person; 

 

结果为:

 

 

GROUP_CONCAT函数返回一个字符串结果,该结果由分组中的值连接组合而成。常和groupby连用

 

先看个 group by  的用法:

SELECT COUNT(*) , custom FROM person GROUP BY custom; 

 

 

 

结果为:

 

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

 

group_concat的用法:

SELECT GROUP_CONCAT(name , '$$' , custom)  FROM person  GROUP BY custom; 

 

结果为:

 

 

连接

我们新建俩张表再插入数据,方便我们比较验证。

DROP TABLE pets;
CREATE TABLE pets(
id INT(2) NOT NULL PRIMARY KEY auto_increment,
name VARCHAR(20) 
);
INSERT INTO pets VALUES(NULL,'cat');
INSERT INTO pets VALUES(NULL,'dog');
INSERT INTO pets VALUES(NULL,'snake');
INSERT INTO pets VALUES(NULL,'fish');
INSERT INTO pets VALUES(NULL,'tortoise');

DROP TABLE pets2;
CREATE TABLE pets2(
id2 INT(2) NOT NULL PRIMARY KEY auto_increment,
name2 VARCHAR(20) 
);
INSERT INTO pets2 VALUES(NULL,'tiger');
INSERT INTO pets2 VALUES(NULL,'rabbit');
INSERT INTO pets2 VALUES(NULL,'tortoise');
INSERT INTO pets2 VALUES(NULL,'cat');
INSERT INTO pets2 VALUES(NULL,'dog');

 

inner join on

产生A和B的交集。

SELECT * FROM pets INNER JOIN pets2 ON  pets.name = pets2.name2

结果为:

 

left  [outer] join on

 

 

A  left join B , left join 是left outer join的简写,left join默认是outer属性的.

产生表A的完全集,而B表中匹配的则有值,没匹配的以null值取代。
SELECT * FROM pets  LEFT OUTER  JOIN  pets2 ON pets.name = pets2.name2

 

结果为:

 

 

left [outer] join on where

 

SELECT * FROM pets  LEFT OUTER  JOIN  pets2 ON pets.name = pets2.name2 WHERE pets2.name2 IS NULL

产生在A表中有而在B表中没有的集合.

 

结果为:

 

right [outer] join on

同理,产生表B的完全集,而A表中匹配的则有值,没匹配的以null值取代。

SELECT * FROM pets  RIGHT  JOIN  pets2 ON pets.name = pets2.name2 

结果为:

 

right [outer] join on where

 

SELECT * FROM pets  RIGHT JOIN  pets2 ON pets.name = pets2.name2 WHERE pets.name IS NULL

同理…… 产生表B有而表A中没有的集合

 

结果为:

 

mysql 不支持 Full outer join.

但了解下,会返回表A和表B的所有行,包括null值

 

插入当前时间 : now()

insert  into `products`(`id`,`name`,`price`,`detail`,`pic`,`createtime`) values (1,'iphone',10000.0,'stupid果蛆',NULL,NOW())

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值