学习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 后,再次插入数据时可使用这部分磁盘,但是不会立即释放磁盘空间