MySQL基础命令总结

数据库操作

1、创建数据库

CREATE DATABASE 数据库名(一般小写);

2、查看数据库

SHOW DATABASES;
SHOW DATABASE 数据库名;#查看某个数据库

3、删除数据库

DROP DATABASE 数据库名;

4、切换数据库

USE 数据库名;

5、查看正在使用的数据库

SELECT DATABASE();

表结构操作

1、创建表

CREATE TABLE 表名(
    列名1 数据类型 [约束],
                    ...
    列名2 数据类型 [约束]
);
CREATE TABLE tname(
id INT AUTO_INCREMENT PRIMARY KEY, 
#主键自增长AUTO_INCREMENT,只有MySQL有
create_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ,
create_user VARCHAR(100),
update_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
update_user VARCHAR(100)
);

2、主键约束(PRIMARY KEY):用于表示当前记录的字段,特点:非空,唯一,不具备任何含义,只用于表示当前记录

id INT PRIMARY KEY;

3、删除主键

ALTER TABLE 表名 DROP PRIMARY KEY;
4、查看表
查看数据库中的所有表:SHOW tables;
查看表结构:DESC 表名;

5、删除表

DROP TABLE 表名;

6、修改表结构格式

添加列:ALTER TABLE 表名 add 列名 数据类型 [约束];
修改列的数据类型及约束:ALTER TABLE 表名 MODIFY 列名 数据类型 [约束];
修改列名:ALTER TABLE 表名 CHANGE 旧列名 新列名 数据类型 [约束];
删除列:ALTER TABLE 表名 DROP 列名;
修改表名:ALTER TABLE 表名 TO 新表名;
修改表的字符集:ALTER TABLE 表名 CHARACTER SET 字符集(例如:gbk);

7、插入表记录

INSERT INTO 表名(列名1,列名2,...) VALUES(值1,值2,...);
INSERT INTO 表名 VALUES(值1,值2,...);#全列值,包括主键
批量插入:INSERT INTO 表名(列名1,列名2,...) VALUES(值1,值2,...),(值1,值2,...);#主键为自增长类型,可省略

PS:插入空值可以不写字段,或插入null,自增长列在操作时,直接插入null值即可

8、更新表记录(用来修改指定条件的数据,将满足条件的记录指定列修改为指定值)

UPDATE 表名 SET 字段名=值,字段名=值 WHERE 条件

9、删除表中数据

DELETE FROM 表名 where 条件;#一条一条删除,不清空AUTO_INCREMENT记录数
TRUNCATE TABLE 表名;#直接将表删除并重新建表,AUTO_INCREMENT将清空记录数

SQL查询语句

1、查询指定字段信息(列)

SELECT 字段1,字段2,... FROM 表名

2、查询所有字段(列)

SELECT * FROM 表名;
正常业务中需要添加条件查询 WHERE

3、查询去掉重复记录

SELECT DISTINCT 字段 FROM 表名;

4、查询重新命名列

表别名:SELECT * FROM 表名 AS 别名;
列别名:SELECT 字段名 AS 别名 FROM 表名

5、查询数据中,可直接对列进行运算

例:SELECT zname,zmoney+100 AS 'sum' FROM zhangwu;
6、条件查询
格式:SELECT 字段 FROM 表名 WHERE 表名
比较运算符
>    <    <=    >=    =    <> 大于,小于,小于(大于)等于,不等于
BETWEEN...AND... 显示在某一区间的值(含头尾)
IN(SET) 显示在IN列表中的值,例:IN(100,200)
LIKE 通配符

模糊查询

%匹配多个字符,例:zname LIKE 'a%';

_匹配一个字符,例:zname LIKE 'a_';

IS NULL / IS NOT NULL

判断是否为空

IS NULL:判断为空

IS NOT NULL:判断不为空

逻辑运算符
AND 多个条件成立
OR 多个条件任一成立
NOT 不成立,例:WHERE NOT(salary>100)

7、排序查询(对结果进行排序,升序或降序,默认升序)

ORDER BY 列名 [DESC][ASC]
降序例:SELECT * FROM zhangwu ORDER BY zmoney DESC;
在含有条件语句时,先过滤条件在排序
例:SELECT * FROM zhangwu WHERE zname LIKE '%支出%' ORDER BY zmoney;

8、聚合(对一列的值进行计算,然后返回一个单一的值,忽略空值)

求个数:COUNT()
求和:SUM()
最大:MAX()
最小:MIN()
平均数:AVG()
例:SELECT COUNT(*) AS 'count' FROM zhangwu;

9、分组查询

GROUP BY 被分组的列名
必须跟随聚合函数一起使用
SELECT查询的时候,被分组的列名,要出现在SELECT选择的列中
例:名字、年龄分组后,人数超过1个的有哪些?
SELECT name,age,COUNT(name) AS 'personcount' FROM tablename GROUP BY name,age HAVING COUNT(name)>1; 

HAVING:用于分组后的数据过滤

    HAVING和WHERE的区别

  • HAVING是分组后对数据过滤
  • WHERE分组前对数据过滤
  • HAVING后可使用分组函数(统计函数)
  • WHERE后不可以使用分组函数

10、子查询

SELECT t.* FROM (SELECT name,age,COUNT(name) AS 'personcount' FROM tablename GROUP BY name,age) HAVING COUNT(name)>1;

11、查询行数限制

SELECT * FROM table LIMIT 5,10;#检索6-15行
SELECT * FROM table LIMIT 5;#检索前5行
SELECT * FROM table LIMIT 95,,-1;#检索96到最后一行数据

12、查询组合顺序

SELECT name,age,COUNT(name) AS personcount FROM table WHERE age>22 
GROUP BY name,age HAVING COUNT(name)>=1 ORDER BY name desc LIMIT 3;

组合查询要关注查询命令的顺序。

13、join(有时为了得到完整的结果,我们需要从两个或更多的表中获取结果。我们就需要执行 join。)









猜你喜欢

转载自blog.csdn.net/qq_25302531/article/details/80508469