Mysql数据库操作语句

今天药忘吃喽~ 2021-12-24 18:37 458阅读 0赞

Mysql规范:

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

1.数据库操作

  1. CREATE DATABASE database_name //创建数据库
  2. DROP DATABASE database_name //删除数据库
  3. USE DATABASE database_name //使用数据
  4. SHOW DATABASE //查看数据

2.数据表操作

(1)内表操作

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

  1. CREATE TABLE table_name( //创建数据表
  2. col_name data type,
  3. ...
  4. )
  5. DROP TABLE table_name //删除数据表
  6. SHOW col_name FROM table_name //显示数据表的数据结构
  7. or
  8. DESC table_name
  9. //重命名表名
  10. ALTER TABLE old_table_name RENAME new_table_name
  11. 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)表数据操作

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

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

(3)表数据详细操作

分组,升降序,限制…

  1. 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:父表删除字段后,子表即有外键约束的表的数据也自动更新删除

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

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

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

  1. CREATE TABLE table_name(
  2. column_name data type PRIMARY KEY AUTO_INCREMENT, //自动编号
  3. ...)
  4. //外键约束
  5. CREATE TABLE tabale_name(
  6. column_name data type FOREIGN KEY REFERENCE parent_table_name(column_name),
  7. ...)
  8. //唯一约束
  9. CREATE TABLE table_name(
  10. column_name data type UNION KEY,
  11. ...)

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

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

4.子查询与连接

(1)子查询

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

1143450-20180322144031363-914267333.png

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

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

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

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

  1. SELECT col_name FROM table_name WHERE col_name IN/NOT IN ()
  2. SELECT col_name FROM table_name WHERE EXISTS ()

(2)连接

合并:

  1. //UNION:去除重复的记录
  2. SELECT * FROM table_name1 UNION SELECT * FROM table_name2
  3. //UNION ALL:不去除重复的记录
  4. SELECT * FROM table_name1 UNION ALL SELECT * FROM table_name2

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

  1. SELECT col_name FROM table_name1 INEER JOIN/CROSS JOIN/JOIN table_name2 ON table_name1.col_name = table_name2.col_name
  2. //以上的句子等价于平常的查询语句如下:
  3. 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。

  1. //左连接
  2. SELECT col_name FROM table_name1 LEFT JOIN table_name2 ON table_name1.col_name = table_name2.col_name
  3. //右连接
  4. SELECT col_name FROM table_name1 RIGHT JOIN table_name2 ON table_name1.col_name = table_name2.col_name

(3)多表操作

  1. //多表更新
  2. UPDATE table_name1 INNER JOIN table_name2 ON table_name1.col_name = table_name2.col_name SET col_name = value(需要更新的语句) WHERE condition
  3. //多表删除
  4. 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

发表评论

表情:
评论列表 (有 0 条评论,458人围观)

还没有评论,来说两句吧...

相关阅读