MySQL基本语法

最基本的SQL语句

Posted by dks on December 17, 2018

学习MySQL时整理的基础语法

MySQL基本语法

基础

  • 所有的数据库名,表名,表字段都是区分大小写的。
  • SQL 语句的命令结束符为分号

创建数据库

CREATE DATABASE IF NOT EXISTS DB_NAME DEFAULT utf8 CLLATE utf8_general_ci
# 如果不存在则创建;默认字符集utf8,不是utf-8;大小写不敏感

选择数据库

USE DB_NAME 

创建表

# 语法
CREATE TABLE table_name (colume_name column_type);
# 例
CREATE TABLE IF NOT EXISTS `runoob_tbl`(
   `runoob_id` INT UNSIGNED AUTO_INCREMENT,
   `runoob_title` VARCHAR(100) NOT NULL,
   `runoob_author` VARCHAR(40) NOT NULL,
   `submission_date` DATE,
   PRIMARY KEY ( `runoob_id` )
)ENGINE=InnoDB DEFAULT CHARSET=utf8;

# 语法
INSERT INTO table_name (filed1, filed2, ...)
				VALUES
						(value1, value2, ...)

# 基本语法
SELECT colume_name1,colume_name2
FROM table_name1,table_name2
[WHERE Clause]
[ORDER BY ]
[LIMIT N]
[OFFSET M]

LIMIT 与 OFFSET

LIMIT 限制检索的行数;OFFSET设定偏移(从第几行以后)

# 检索 6-15 行 (第5行后的10行)
SELECT * FROM table_name LIMIT 5,10 
# 检索 6-15 行 (第5行后的10行,更常用第一种格式)
SELECT * FROM table_name LIIMIT 10,OFFSET 5

# 前5行
SELECT * FROM table_name LIMIT 5
# 等同于
SELECT * FROM table_name LIMIT 0,5

# 第6行到最后一行 (第5行后的所有行)
SELCT * FROM table_name LIMIT 5,-1

# 常用于分页
设 count 为每页显示的条数,number为页码,
那么,第number页的count条数据为:
SELECT * FROM table_name LIMIT (number-1)*count,count

ORDER BY

# 基本语法,默认升序(可不写DESC)
SELECT * FROM table_name ORDER BY column_name DESC

# 多列排序
SELECT column1,column2 FROM table_name ORDER BY column1 ASC,column2 DESC 

where

# 基本语法
SELECT field1,field2,... FROM table1,table2,...
WHERE condition1 AND/OR condition2

# 字符串的比较不区分大小写
SELECT * FROM table_name WHERE column_name = "myName"

# 区分大小写
SELECT * FROM table_name WHERE BINARY column_name = "myName"

# 可用的操作符
#  = ; != ; > ; < ; >= ; <=  

# LIKE,常与 % 一同使用,相当于元字符的搜索
# 检索 列 column_name 以 Name 结尾的行
SELECT * FROM table_name WHERE column_name LIKE "%Name"

# UNION连接多个SELECT语句
# 基本语法,默认DISTINCT已去重
SELECT column_name FROM table1
[WHRER conditions1]
UNION [ALL/DISTINCT]
SELECT column_name FROM Table2
[WHERE conditions2]
[ORDER BY column_other][ASC]

# GROUP BY 


UPDATE table_name SET field1=value1,field2=value2
[WHERE Clause]

直接删除表
DROP TABLE table_name
删除表内数据但保留表结构
TRUNCATE TABLE table_name
删除表内数据
DELETE FROM table_name WHERE name = "my" 
释放磁盘空间
OPTIMIZE TABLE table_name

# DELETE 后,再次插入数据时可使用这部分磁盘,但是不会立即释放磁盘空间