MySQL常用语法
Posted 默不知然
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL常用语法相关的知识,希望对你有一定的参考价值。
一、 SQLECT 语法
SELECT column_1, column_2, ...
FROM table_1
[INNER | LEFT |RIGHT] JOIN table_2 ON conditions
WHERE
conditions
GROUP BY column_1
HAVING group_conditions
ORDER BY column_1
LIMIT offset, length;
SELECT语句由以下列表中所述的几个子句组成:
- SELECT之后是逗号分隔列或星号(*)的列表,表示要返回所有列。
- FROM指定要查询数据的表或视图。
- JOIN根据某些连接条件从其他表中获取数据。
- WHERE过滤结果集中的行。
- GROUP BY将一组行组合成小分组,并对每个小分组应用聚合函数。
- HAVING过滤器基于GROUP BY子句定义的小分组。
- ORDER BY指定用于排序的列的列表。
- LIMIT限制返回行的数量。
语句中的SELECT和FROM语句是必须的,其他部分是可选的。
栗子:
SELECT
lastname,firstname,jobtitle
FROM
employees;
SELECT * FROM employees;
二、WHERE 语句
WHERE子句允许根据指定的过滤表达式或条件来指定要选择的行。
栗子:
获取雇员中的销售代表;
SELECT
lastname,firstname,jobtitle
FROM
employees
WHERE
jobtitle = \'Sales Rep\';
MySQL 会优先使用 where 进行匹配,在到 select 匹配。
获取雇员中的销售代表,且办公室代码=1;
SELECT
lastname,firstname,jobtitle
FROM
employees
WHERE
jobtitle=\'Sales Rep\' AND officeCode = 1;
操作符:
= 等于,几乎任何数据类型都可用
<> 或 != 不等于
< 小于,通常使用数字和日志/时间数据类型
> 大于,通常使用数字和日志/时间数据类型
<= 大于或等于
>= 大于或等于
还有一些有用的运算符可以在WHERE子句中使用来形成复杂的条件,例如:
三、 INSERT 语句
MySQL INSERT 语句将一行或者多行数据插入列表。
栗子:
INSERT INTO
tasks(subject,start_date,end_date,description)
VALUES
(\'Learn MySQL INSERT\',\'2017-11-27\',\'2017-11-27\',\'start learning..\');
将tasks表的所有数据复制插入到tasks_bak表
INSERT INTO tasks_bak SELECT * FROM tasks;
四、 UPDATE 语句
UPDATE语句来更新表中的现有数据。也可以使用UPDATE语句来更改表中单个行,一组行或所有行的列值。
栗子:
更新 Mary 的邮箱。
UPDATE
employees
SET
email=\'mary.new@yiibai.com\'
WHERE
employeeNumber = 1056;
更新多行数据:
UPDATE
employees
SET
email=\'mary@yiibai.com\',lastname=\'Hill\'
WHERE
employeeNumber = 1056;
从另一表选择数据插入当前表
UPDATE customers
SET
salesRepEmployeeNumber = (SELECT
employeeNumber
FROM
employees
WHERE
jobtitle=\'Sales Rep\'
ORDER BY RAND() LIMIT 1)
WHERE
salesRepEmployeeNumber IS NULL;
注释:
从employees表随机抽取jobtitle=Sales Rep的一个employeeNumber数据,插入到customers的salesRepEmployeeNumber为空的列中。
五、 DELETE语句
DELETE FROM tasks WHERE task_id=3;
删除后:
六、 创建与删除数据库
CREATE DATABASE IF NOT EXISTS mytest;
删除数据库 mytest
DROP DATABASE IF EXISTS mytest;
七、 CREATE TABLE 语句
CREATE TABLE [IF NOT EXISTS] table_name( column_list ) engine=table_type;
其中engine是指定搜索引擎,不添加则使用默认InnoDB,有MyISAM,HEAP,EXAMPLE,CSV,ARCHIVE,MERGE, FEDERATED或NDBCLUSTER 可选。
column_list详细语义:
column_name data_type[size] [NOT NULL|NULL] [DEFAULT value] [AUTO_INCREMENT] PRIMARY KEY (col1,col2,...)
- column_name指定列的名称。每列具有特定数据类型和大小,例如:VARCHAR(255)。
- NOT NULL或NULL表示该列是否接受NULL值。
- DEFAULT值用于指定列的默认值。
- AUTO_INCREMENT指示每当将新行插入到表中时,列的值会自动增加。每个表都有一个且只有一个 AUTO_INCREMENT列。
- PRIMARY KEY 设置主键。
栗子
语法:
CREATE TABLE IF NOT EXISTS tasks (
task_id INT(11) NOT NULL AUTO_INCREMENT,
subject VARCHAR(45) DEFAULT NULL,
start_date DATE DEFAULT NULL,
end_date DATE DEFAULT NULL,
description VARCHAR(200) DEFAULT NULL,
PRIMARY KEY (task_id)
) ENGINE=InnoDB;
八、 ALTER TABLE 语句
语法:
ALTER TABLE table_name action1[,action2,…]
- 首先,在ALTER TABLE子句之后指定要更改的表名称。
- 其次,列出一组要应用于该表的操作。操作可以是添加新列,添加主键,重命名表等任何操作。 ALTER TABLE语句允许在单个ALTER TABLE语句中应用多个操作,每个操作由逗号(,)分隔。
栗子:
ALTER TABLE
mytest
ADD COLUMN
task_id INT(11) NOT NULL;
其他语法:
ALTER TABLE mytest CHANGE COLUMN task_id task_id INT(10) NOT NULL AUTO_INCREMENT; ALTER TABLE mytest ADD COLUMN task_id INT(11) NOT NULL; ALTER TABLE tasks RENAME TO work_items;
以上是关于MySQL常用语法的主要内容,如果未能解决你的问题,请参考以下文章