MySQL基础语法

一、数据库操作

1. 创建数据库

CREATE DATABASE 数据库名;

CREATE DATABASE mydb;

2. 删除数据库

DROP DATABASE 数据库名;

DROP DATABASE mydb;

3. 选择数据库

USE 数据库名;

USE mydb;

二、表操作

1. 创建表

CREATE TABLE 表名称(
字段名 数据类型 ...其他定义,
...;

CREATE TABLE book(
id int not null PRIMARY KEY AUTO_INCREMENT, -- AUTO_INCREMENT可以实现自动增加
title varchar(50) not null ,
auther varchar(50) not null
);

2. 删除表

DROP TABLE 表名称;

DROP TABLE mytable;

三、增删改查

1. 增

-- 增加记录
INSERT INTO 表名(字段1, 字段2...字段n)
VALUES(1, 值2, ... , 值n);

INSERT INTO book(id, title, auther)
VALUES(1, "数据结构", "严蔚敏");


-- 增加索引
CREATE INDEX索引名
ON 表名(字段名);

CREATE INDEXIX_id
ON book(id);


-- 增加字段
ALTER TABLE 表名
ADD 字段名 数据类型 ...其他定义;

ALTER TABLE book
ADD price int not null;


-- 增加约束
ALTER TABLE表名
ADD CONSTRAINT 约束名 PRIMARY KEY (字段);	-- 可选foreign key

ALTER TABLEbook
ADD CONSTRAINT PK_bid PRIMARY KEY (id);

2. 删

#删除记录,只有删除记录用delete
DELETE FROM 表名[WHERE条件];		//[]表示可选

DELETE FROM book
WHERE id=1;


#删除索引
DROP INDEX 表名.索引名;

DROP INDEX book.IX_id;


#删除字段
ALTER TABLE 表名
DROP COLUMN 字段名;

ALTER TABLE book
DROP COLUMN price;


#删除约束
ALTER TABLE 表名
DROP CONSTRAINT 约束名;

ALTER TABLE book
DROP CONSTRAINT PK_bid;

3. 改

#改数据
UPDATE 表名 SET 字段1=1, 字段2=2
[WHERE 条件];

UPDATE book SET auther="张伟"
WHERE id=1;


#改字段
AlTER TABLE 表名
MODIFY[change] COLUMN 字段名称 类型;

AlTER TABLE book
MODIFY COLUMN id char(5) not null;	-- modify修改字段属性

AlTER TABLE book
change COLUMN id bid char(5) not null;	-- change a b,把字段名从a改为b,可指定其他属性

4. 查

1. SELECT
SELECT 字段1, 字段2
FROM 表名
[WHERE 条件][LIMIT 数字][OFFSET 数字];

SELECT * FROM book;	-- *表示 所有

转菜鸟教程:

  • 查询语句中你可以使用一个或者多个表,表之间使用逗号(,)分割,并使用WHERE语句来设定查询条件。
  • SELECT 命令可以读取一条或者多条记录。
  • 你可以使用星号(*)来代替其他字段,SELECT语句会返回表的所有字段数据
  • 你可以使用 WHERE 语句来包含任何条件。
  • 你可以使用 LIMIT 属性来设定返回的记录数。
  • 你可以通过OFFSET指定SELECT语句开始查询的数据偏移量。默认情况下偏移量为0。
2. LIMIT

转路人乙的博客:LIMIT的用法

SELECT * FROM 表名 LIMIT 条件

SELECT * FROM book LIMIT 5,10;  --  检索记录行 6-15

#为了检索从某一个偏移量到记录集的结束所有的记录行,可以指定第二个参数为 -1: 
SELECT * FROM book LIMIT 95,-1; --  检索记录行 96-last.

#如果只给定一个参数,它表示返回最大的记录行数目: 
SELECT * FROM book LIMIT 5;     -- 检索前 5 个记录行

#换句话说,LIMIT n 等价于 LIMIT 0,n。
3. offset
#跳过1条数据,从第2条数据开始取,取3条数据,也就是取第2,3,4三条数据
SELECT * FROM article LIMIT 1,3;

#取三个数据,从1之后开始
SELECT * FROM article LIMIT 3 OFFSET 1;

三、其他语句

1. LIKE

SELECT 字段1, 字段2, ... , 字段n
FROM 表名
WHERE 字段名 LIKE条件;

SELECT *
FROM book
WHERE title LIKE"数据%";
  • select 后面跟的字段,表示要筛选在控制台显示的字段
  • 通配符%,%可表示任意长、任意字符
正则表达式

转载自:菜鸟教程

模式描述
^匹配输入字符串的开始位置。如果设置了 RegExp 对象的 Multiline 属性,^ 也匹配 ‘\n’ 或 ‘\r’ 之后的位置。
$匹配输入字符串的结束位置。如果设置了RegExp 对象的 Multiline 属性,$ 也匹配 ‘\n’ 或 ‘\r’ 之前的位置。
.匹配除 “\n” 之外的任何单个字符。要匹配包括 ‘\n’ 在内的任何字符,请使用象 ‘[.\n]’ 的模式。
[…]字符集合。匹配所包含的任意一个字符。例如, ‘[abc]’ 可以匹配 “plain” 中的 ‘a’。
[^…]负值字符集合。匹配未包含的任意字符。例如, ‘[^abc]’ 可以匹配 “plain” 中的’p’。
*匹配前面的子表达式零次或多次。例如,zo* 能匹配 “z” 以及 “zoo”。* 等价于{0,}。
+匹配前面的子表达式一次或多次。例如,‘zo+’ 能匹配 “zo” 以及 “zoo”,但不能匹配 “z”。+ 等价于 {1,}。
{n}n 是一个非负整数。匹配确定的 n 次。例如,‘o{2}’ 不能匹配 “Bob” 中的 ‘o’,但是能匹配 “food” 中的两个 o。
{n,m}m 和 n 均为非负整数,其中n <= m。最少匹配 n 次且最多匹配 m 次。

示例:

-- 查找name字段中以'st'为开头的所有数据:
SELECT name FROM person_tbl WHERE name REGEXP '^st';

-- 查找name字段中以'ok'为结尾的所有数据:
SELECT name FROM person_tbl WHERE name REGEXP 'ok$';

-- 查找name字段中包含'mar'字符串的所有数据:
SELECT name FROM person_tbl WHERE name REGEXP 'mar';

-- 查找name字段中以元音字符开头或以'ok'字符串结尾的所有数据:
SELECT name FROM person_tbl WHERE name REGEXP '^[aeiou]|ok$';

2. UNION

MySQL UNION 操作符用于连接两个以上的 SELECT 语句的结果组合到一个结果集合中。多个 SELECT 语句会删除重复的数据。

SELECT 字段名 FROM 表名
UNION
SELECT 字段名 FROM 表名
ORDER BY 字段名;

SELECT country FROM Websites
UNION
SELECT country FROM apps
ORDER BY country;

3. ORDER BY

排序

SELECT 字段1, 字段2, ... ,字段n
ORDER BY 字段p [ASC [DESC][默认 ASC]], ... ,字段q [ASC [DESC][默认 ASC]];

SELECT * FROM book ORDER BY title ASC;
  • ASC升序,默认升序
  • DESC 降序

4. GROUP BY

GROUP BY 语句根据一个或多个列对结果集进行分组。

SELECT 字段... FROM 表名
WHERE 条件...
GROUP BY 字段;

SELECT column_name, function(column_name)
FROM table_name
WHERE column_name operator value
GROUP BY column_name;

5. JOIN

  • INNER JOIN(内连接,或等值连接):获取两个表中字段匹配关系的记录.
  • LEFT JOIN(左连接):获取左表所有记录,即使右表没有对应匹配的记录。
  • RIGHT JOIN(右连接): 与 LEFT JOIN相反,用于获取右表所有记录,即使左表没有对应匹配的记录。
    详细可以看菜鸟教程,真的不错,点击跳转

最后,想要熟悉这些语句,还是要多刷题,而难度较大的就是查询,题库可以看看我之前的博客,链接如下:
SQL查询上机题库

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值