MySQL 常用操作汇总

一、SQL常见操作

查看支持的选项

mysql --help;

 

链接到MYSQL SERVER

mysql -h hosts -P port - u user -p

Enter password:

退出链接:

QUIT

EXIT

创建数据库:

CREATE DATABASE database_name;

 

显示(切换到)数据库:

SHOW DATABASES;

USE database_name;

 

显示当前使用的数据库:

SELECT DATABASE();

 

显示数据库中的表:

SHOW TABLES;

二、数据定义语句(DDL)

创建和删除表:

CREATE TABLE table_name(character1_name type1_name(type1_length) constraint_1 constraint_2,...  );

 

可以用desc语句验证创建的表结构:

 

DESC  table_name;

 

使用alter table修改表结构:

重命名:

ALTER TABLE table_name RENAME new_name;

 

更改字段类型以及更改字段名:

ALTER TABLE table_name MODIFY a NEW_TYPE NEW_CONSTRAINT;

ALTER TABLE table_name CHANGE a b NEW_TYPE;

 

添加一个新的列:

ALTER TABLE table_name ADD newline_name NEW_TYPE;

在指定列后添加新列:

ALTER TABLE table_name ADD newline_name NEW_TYPE AFTER exist_line_name;

 

添加索引:

ALTER TABLE table_name ADD INDEX(character_name);

 

 

删除列:

ALTER TABLE table_name DROP COLUMN column_name;

 

添加一个新列,并给予新的约束:

ALTER TABLE table_name ADD character_name NEW_TYPE NEW_CONSTRAINT ,ADD PRIMARY KEY(character_name);

 

使用CREATE INDEX 创建索引

CREATE INDEX index_name ON table_name(character_name,...,...);

使用DROP INDEX删除索引

DROP INDEX index_name ON table_name;

 

修改字符集和排序规则:

ALTER TABLE table_name CHANGE character_name character_name TYPE CHARACTER SET utf8 COLLATE utf8_general_ci;

 

 

 

 

三、数据操作语句(DML)

INSERT 语句

 

INSERT INTO table_name(column1,column2,...)VALUES(value1,value2,...);

 

省略column时需要给出所有value,除非其中的某个带有默认值,可以在value中给出多条记录用于插入多条数据。

 

INSERT INTO table_name(column1,column2,...)

VALUES

(value1_1,value1_2,value1_3,...),

(value2_1,value2_2,value2_3,...);

 

修改数据(UPDATE)

 

UPDATE table_name SET column_name=value1,...[WHERE CONDITIONS];

删除数据(DELETE)

DELETE FROM table_name [WHERE CONDITIONS];

 

SELECTE语句

 

SELECT column_name FROM table_name [WHERE CONDITIONS];

 

 

 

 

四、SELECT 查询相关

SQL模式匹配

‘-’匹配任一一个字符,‘%’匹配任意多个字符(包括0个字符)。

SELECT * FROM table_name WHERE character_name LIKE ‘d%’;

 

逻辑操作符与或非(AND,OR,NOT)

SELECT* FROM table_name WHERE condition1 (AND/OR) condition2;

SELECT* FROM table_name WHERE condition1 NOT LIKE ’d%’;

 

范围操作符(IN和BETWEEN)

SELECT* FROM table_name WHERE character_name IN (character_arraies);

SELECT* FROM table_name WHERE character_name BETWEEN character1 AND character2;

 

限制获取记录数(LIMIT)

SELECT* FROM table_name LIMIT n;

 

排序(ORDER BY)

SELECT* FROM table_name ORDER_BY character_name ASC/DESC;//升序/降序

使用DISTINCT获取不重复的唯一值

SELECT DOSTINCT character_name FROM table_name;

 

 

 

 

聚集函数COUNT\MIN\MAX\AVG\SUM

SELECT COUNT(*) FROM table_name;

SELECT MIN\MAX(character_name)FROM table_name;

SELECT AVG\SUM(character_name )FROM table_name WHERE conditions;

 

 

分组统计GROUP BY

SELECT * FROM table_name GROUP BY character_name;

 

并集操作UNION和UNION ALL

SELECT * FROM table1_name UNION SELECT * FROM table2_name;

SELECT * FROM table1_name UNION ALL SELECT* FROM table2_name;

 

二者的都是将两个结果集进行合并,但UNION ALL 会更快,UNION实际上是UNION DISTINCT。

 

 

NULL值

 

SELECT *FROM table_name WHERE character_name IS (NOT) NULL;

 

对于GROUP BY ,两个NULL可以认为是相等的。

对于 ORDER BY ... ASC NULL 总在前,对于ORDER BY ... DESC NULL 总在后。

0或空字符串是有值的,所以在一个NOT NULL 的列插入0或空字符是允许的。

 

 

五、JOIN(链接)

内链接([INNER] JOIN)

显式链接符号,即显式地使用JOIN 关键字

SELECT

  Character_name ...

FROM

  Table1_name         

INNER JOIN

  Table2_name

 ON

table1_name.character_name = table2_name.character_name;

WHERE conditions;

隐式链接符号,即:

SELECT

Character_name ...

FROM

  Table1_name,Table2_name

WHERE

table_name.character_name = table_name.character_name;

交叉链接(笛卡尔积)

把表是为行记录的集合,交叉链接返回这两个集合的笛卡尔积。其实相当于内连接的链接条件为永真、或者链接条件不存在:

SELECT * FROM table1_name JOIN table2_name;

SELECT * FROM table1_name,table2_name

左外链接(LEFT JOIN)

若A、B两表进行左外链接,那么结果表中将包含左表(A表)的所有记录,即使那些记录仪在右表(B表) 中没有符合链接条件的匹配。

SELECT

  Character1_name,character2_name ...

FROM 

  Table1_name

LEFT JOIN

Table2_name

ON

  Table1_name.character_name = table2_name.character_name

WHERE

  Conditions;

右外链接(RIGHT JOIN)

若A、B两表进行左外链接,那么结果表中将包含右表(B表)的所有记录,即使那些记录在左表(A表) 中没有符合链接条件的匹配。

SELECT 

  *

FROM 

 Table1_name

RIGHT JOIN

 Table2_name

ON

 Table1_name.character_name=table2_name.character_name;

 

 

 

六、子查询

即SELECT 语句的嵌套使用

SELECT 

 *

FROM

 Table1_name

WHERE

 Character_name IN (

SELECT 

 Character_name

FROM

 Table2_name

WHERE

 Conditions);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值