Mysql数据库操作语句

Mysql规范:

关键字与操作语句大写,字段名小写

1.数据库操作

CREATE DATABASE database_name   //创建数据库
DROP DATABASE database_name     //删除数据库
USE DATABASE database_name //使用数据
SHOW DATABASE //查看数据

2.数据表操作

(1)内表操作

创建,删除,显示,修改数据表,重命名表名

CREATE TABLE table_name(               //创建数据表
col_name  data type,
...
)
DROP TABLE table_name       //删除数据表
SHOW col_name FROM table_name   //显示数据表的数据结构
or
DESC table_name
//重命名表名
ALTER TABLE old_table_name RENAME new_table_name 
or
RENAME old_table_name to new_table_name     

//添加表字段
ALTER TABLE table_name ADD(col_name datatype)
//删除表字段 ALTER TABLE table_name DROP col_name //修改字段名 ALTER TABLE table_name CHANGE old_col_name new_col_name //修改字段类型 ALTER TABLE table_name MODIFY col_name datatype //修改字段默认值 ALTER TABLE table_name ALTER col_name SET DEFAULT value //删除默认值 ALTER TABLE table_name ALTER col_name DROP DEFAULT

(2)表数据操作

插入,更新,查找,删除记录

INSERT INTO table_name VALUES()                  //插入记录
or
INSERT INTO table_name(col_name1,....) VALUES(value1,....)
UPADATE table_name set col_name = value WHERE condition     //更新记录
SELECT col_name,col_name
FROM table_name                               //查询记录
WHERE condition
DELETE FROM table_name WHERE condition      //删除记录

(3)表数据详细操作

分组,升降序,限制...

SELECT age FROM user GROUP BY age                            //分组
SELECT id,name,age FROM user GROUP BY age HAVING age<10         // HAVING后面的字段age必须存在select后面的字段中
//having与where类似,可以筛选数据,where后的表达式怎么写,having后就怎么写,
where针对表中的列发挥作用,查询数据,having对查询结果中的列发挥作用,筛选数据 SELECT id,name FROM user ORDER BY id desc //降序,升序asc SELECT id,name FROM user LIMIT 2 //(限制查询出来的数据仅显示两条)

3.约束操作

功能分类:主键约束,外键约束,唯一约束,默认约束

列表级分类:列级约束与表级约束

列级约束:在列定义或者列定义后,表级对多个列定义约束,可在列定义后

问题:物理约束与逻辑约束

CASCADE:父表删除字段后,子表即有外键约束的表的数据也自动更新删除

一般情况下,都不会使用物理约束,删除父表的字段或数据后联动删除子表的数据,将所有的联动删除都在数据库表中设置,容易增加性能问题,现在大都将其作为业务上的一部分在代码中实现逻辑约束,有助于提高性能及效率。

//主键约束
CREATE
TABLE table_name( column_name data type PRIMARY KEY, //主键约束 ...)

注:自动编号AUTO_INCREMENT与主键相结合使用,默认值为1,默认增长长度为1

CREATE TABLE table_name(
column_name data type PRIMARY KEY AUTO_INCREMENT,            //自动编号
...)
//外键约束
CREATE
TABLE tabale_name( column_name data type FOREIGN KEY REFERENCE parent_table_name(column_name), ...)
//唯一约束
CREATE
TABLE table_name( column_name data type UNION KEY, ...)

唯一约束与主键约束的区别:主键是每一个表有且仅有一个,而唯一约束则是每一个表可以有多个

//默认约束
CREATE
TABLE table_name( column_name data type DEFAULT 默认值, ...)

4.子查询与连接

(1)子查询

a.比较运算符引发的子查询

注意:当对比的数据等于两条或多余两条的时候,即当子查询返回多个结果时,在用普通的比较运算符子查询来查询数据,会报错,所以这时关键字any,some,all就派上用场

b.NOT IN/IN/EXISTS引发的子查询

IN/NOT IN:指定的一个值是否在这个集合

EXISTS:where型子查询(把内层查询结果当作外层查询的比较条件),而exists型子查询(把外层查询结果拿到内层,看内层的查询是否成立

SELECT col_name FROM table_name WHERE col_name IN/NOT IN () 
SELECT col_name FROM table_name WHERE EXISTS () 

(2)连接

合并:

//UNION:去除重复的记录
SELECT
* FROM table_name1 UNION SELECT * FROM table_name2
//UNION ALL:不去除重复的记录
SELECT * FROM table_name1 UNION ALL SELECT * FROM table_name2

a.内连接 INNER JOIN/CROSS JOIN/JOIN

SELECT col_name FROM table_name1 INEER JOIN/CROSS JOIN/JOIN table_name2 ON table_name1.col_name = table_name2.col_name
//以上的句子等价于平常的查询语句如下:
SELECT col_name FROM table_name1,table_name2 WHERE table_name1.col_name = table_name2.col_name

b.左右外连接LEFT JOIN/RIGHT JOIN

左连接:以左表(student)为主,左表中的数据行都会显示,右表没有的都会显示NULL。

右连接:以右表(student)为主,右表中的数据行都会显示,左表没有的都会显示NULL。

//左连接
SELECT col_name FROM table_name1 LEFT JOIN table_name2 ON table_name1.col_name = table_name2.col_name

//右连接
SELECT col_name FROM table_name1 RIGHT JOIN table_name2 ON table_name1.col_name = table_name2.col_name

(3)多表操作

//多表更新
UPDATE
table_name1 INNER JOIN table_name2 ON table_name1.col_name = table_name2.col_name SET col_name = value(需要更新的语句) WHERE condition
//多表删除
DELETE col_name FROM table_name1 INNER JOIN table_name2 ON table_name1.col_name = table_name2.col_name WHERE condition
原文地址:https://www.cnblogs.com/evablogs/p/8419722.html