查看: 247|回复: 0

[Mysql数据库] MySQL常用语法

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



回复

使用道具 举报

关闭

站长推荐上一条 /1 下一条