MySQL基础常用语句(详细)

我使用的是SQLyog,它是连接MySQL的可视化客户端软件 ,有图形界面,操作方便,没有使用的可以下载一个,如果觉得下面我漏了什么欢迎补充

--------------- > > > > > > > > 操作数据库 < < < < < <------------------

#显示所有数据库
SHOW DATABASES 

#显示指定数据库test
SHOW CREATE DATABASE testt

#创建数据库db1
CREATE DATABASE db1   

#使用数据库db1
USE db1   

#改变数据库编码方式,一般用utf8,不容易出现乱码
ALTER DATABASE db1 DEFAULT CHARACTER SET 新编码方式 COLLATE 新编码方式_bin

#删除数据库db1(一次只能删除一个数据库)
DROP DATABASE db1  

-----------------> > > > > > > > 操 作 表< < < < < <------------------

#显示所有的表
SHOW TABLES  
CREATE TABLE USER(  #创建表user,变量在前,数据类型在后,变量与变量之间记得加逗号
id INT,
NAME VARCHAR(20),   #20是指这个名字20个长度
score INT)

#查看表的结构
DESC 表名

#查看指定的表user,*代表所有列
SELECT *FROM USER  

#查看user表的id这一列
SELECT id FROM USER 

#(改表名)将表名user改为stu
RENAME TABLE USER TO stu 

#删除表  
DROP TABLE 表名  

--------------------> > > > > > > > 表的结构 < < < < < <------------------

#查看表的结构
DESC 表名

#为表stu 增加一个列(phonenum),类型为int
ALTER TABLE stu ADD phonenum INT 

#删除表stu的phonenum列
ALTER TABLE stu DROP phonenum    

#修改列名 
ALTER TABLE 表名 CHANGE 列名 新列名 数据类型

-----------------> > > > > > > > 操作表中数据 < < < < < <------------------

#向表中插入数据 ,前一个括号是列名,后一个括号是对列名赋值                               
INSERT INTO stu (id,NAME,score)  VALUES(1,'易烊千玺',100) 
                         
#如果是对表中所有列赋值,可以省略前面那个括号,直接values
INSERT INTO stu VALUES(2,'王俊凯',99)   
INSERT INTO stu VALUES(3,'哇哈哈',88)  

#修改列中的一条记录   update 表名 set 列=值 where 列=值   #修改 stu 表中的 id=3 的那一条数据 score为90)
UPDATE  stu SET   score=90   WHERE   id=3   

#删除列中的一条记录   delete from 表名 where 列=值  
DELETE FROM stu WHERE id=3    #删除stu表中id=3的那一行数据

-----------------> > > > > > > > 查询表中数据 < < < < < <------------------

1.根据条件查询

#一个查询条件
SELECT * FROM stu WHERE id=2
 
#范围查询
#从stu表中寻找大于等于50小于等于60的数据
SELECT * FROM stu WHERE Price>=50 AND Price<=60 
SELECT * FROM stu WHERE Price BETWEEN 50 AND 60
select * from stu where price in(50,60)

2.模糊查询 (%代表多个任意字符,_代表任意一个字符))

#从stu表查找name开头是易,后面不管几个字的数据
SELECT *FROM stu WHERE NAME LIKE '易%'

#从stu查找name开头是王,中间是一个字,最后是凯的一条数据
SELECT *FROM stu WHERE NAME LIKE '王_凯'

#从stu表查找name中第二个字是俊的数据
SELECT * FROM stu WHERE NAME LIKE '_俊_'

3.分组查询(having后面跟的要么是group by( 列)中的列,要么是聚合函数)

#查找stu表中score大于90的name,having表示筛选条件
SELECT NAME FROM stu GROUP BY score HAVING score>90

#查找stu表中最高score且最高score大于99的name
SELECT NAME ,MAX(score) FROM stu GROUP BY score HAVING MAX(score)>99

4.分页查询(一下查几条)

#数据跟数组一样下标从0开始,现在查询的是第1条和第2条,取头不取尾
SELECT *FROM stu LIMIT 0,2
#查询第六条到第9条数据
select * from stu limit 5,9

5.去重查询

#查询成绩,distinct可以去重
SELECT DISTINCT score FROM stu

6.连接查询

  内连接   (两个表的交集部分)
SELECT * FROM stu INNER JOIN student ON stu.id=student.id     
            
 左外连接 (左表(stu)的记录将会全部表示出来
#而右表(student)只会显示符合搜索条件的记录,右表记录不符合搜索条件的地方均为NULL。)
SELECT * FROM stu LEFT JOIN student ON stu.id=student.id

  右外连接  (与左连接相反,右连接中,右表(student)的记录将会全部表示出来,
#左表(stu)只会显示符合搜索条件的记录,记录不符合搜索条件的地方均为NULL。)
SELECT * FROM stu RIGHT JOIN student ON stu.id=student.id
  
 交叉连接  (没有where条件的交叉连接中,产生连接表就是笛卡尔积。
#将两个表的所有行进行组合,连接后的行数为两个表的行数的乘积数。)
SELECT * FROM stu CROSS JOIN student
        
  全连接  (返回左右表的所有行。哪个表中没有的就用null填充。
   #前后两个表查询的列名要一样)
SELECT id,NAME FROM stu UNION SELECT id,NAME FROM student
            

-----------------> > > > > > > > 排序数据< < < < < <------------------

升序asc, 降序desc,不写的话默认为asc

#按升序排列stu表中的score
SELECT * FROM stu ORDER BY  score ASC

#按降序排列stu表中的score
SELECT * FROM stu ORDER BY score DESC
          
#按照两列进行排序,前面的为主要的
#先按math升序排序,如果两个数据的math相同,再按english升序排序
SELECT * FROM 表名 ORDER BY math,english 

-----------------> > > > > > > 聚合函数< < < < < <------------------


SELECT COUNT(id) FROM stu   #查询stu表中有多少条数据

SELECT MAX(score) FROM stu   #取score的最大值

SELECT MIN(score) FROM stu   #取score的最小值

SELECT SUM(score) FROM stu   #取score的总和

SELECT AVG(score) FROM stu   #取score的平均值

-----------------> > > > > > > 键的使用< < < < < <------------------

#添加主键(primary key,主键只有一个)
ALTER TABLE stu ADD PRIMARY KEY (id) 
          
#删除主键
ALTER TABLE stu DROP PRIMARY KEY

#添加外键(如果其中一个表不是primary key 的话,你必须为它创建一个索引,否则会报错,添加不了)
ALTER TABLE stu ADD FOREIGN KEY (id) REFERENCES student(id)             #自动生成键名m_ibfk_1
ALTER TABLE stu CONSTRAINT ss_id FOREIGN KEY (id)REFERENCES student(id) #使用自己定义的外键名ss_id

#删除外键
ALTER TABLE stu DROP FOREIGN KEY 'ss_id'
        
#修改外键
ALTER TABLE stu DROP FOREIGN KEY 'ss_id',ADD CONSTRAINT FOREIGN KEY(id) REFERENCES student(id)  

#添加唯一键
ALTER TABLE stu ADD UNIQUE (NAME)          
发布了9 篇原创文章 · 获赞 23 · 访问量 1253

猜你喜欢

转载自blog.csdn.net/weixin_43920952/article/details/104171546