我使用的是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)