mysql的命令和查询语句:
启动
service mysql start
停止
service mysql stop
重启
service mysql restart
查看mysql服务状态
service mysql status
登陆系统
mysql -u 用户名(root) -p 输入密码
show databases; 查看数据库
USE 库名 选中数据库
show tables; 查看表格式信息
select * from 表名 查看表里面的信息
数据库的操作
#查看数据库下所有的存储引擎:
SHOW ENGINES;
#查看当前数据库使用的存储引擎:
SHOW VARIABLES LIKE 'default_storage_engine';
#修改默认的存储引擎:
SET default_storage_engine=MYISAM;
utf-8:万国码,一般情况下不会出现乱码情况,以后要使用的也是utf-8编码
#创建数据库:
CREATE DATABASE|SCHEMA 数据库名称 CHARSET='utf8';
#创建数据库,如果不存在才创建
CREATE DATABASE|SCHEMA IF NOT EXISTS 数据库名称 CHARSET='utf8';
#可以修改数据库
ALTER DATABASE 数据库名称 CHARSET=字符集;
#切换数据库
USE 数据库名称;
#删除数据库
DROP DATABASE 数据库名称;
#当数据库存在的情况下删除数据库
DROP DATABASE IF EXISTS 数据库名称;
#查看所有数据库:
SHOW DATABASES;
#查看当前数据库
SELECT DATABASE();
如何创建表
CREATE TABLE 表名 (
列 类型 约束 属性,
列 类型 约束 属性,
列 类型 约束 属性
);
涉及到的约束:主键,DEFAULT,NOT NULL
属性:自增->AUTO_INCREMENT
SHOW TABLES;
SHOW CREATE TABLE 表名 \G;
DESC 表名
DESC 表名 列
ALTER TABLE 表名 ADD 列 类型 约束
ALTER TABLE 表名 ADD(列 类型 约束,....)
ALTER TABLE 表名 MODIFY 列的名称 数据类型
关于表的操作:
CREATE TABLE tablename (
列 类型 约束 属性
......
)
#添加新的列
ALTER TABLE tablename ADD 列 类型 约束 ..
ALTER TABLE tablename ADD(列 类型 约束 ..,列 类型 约束 ..)
#修改列
ALTER TABLE tablename MODIFY 列名 新的类型 新的约束
#修改列名:
ALTER TABLE tablename CHNAGE 列名 new列名 类型 约束 属性
#删除列
ALTER TABLE tablename DROP 列名
#修改默认值:
ALTER TABLE tablename ALTER 列名 SET DEFAULT value;
#删除默认值:
ALTER TABLE tablename ALTER 列明 DROP DEFAULT
#修改表名
ALTER TABLE oldtablename RENAME AS newtablename
#修改表名:
RENAME TABLE oldtablename TO newtablename
#删除表
DROP TABLE 表名
#复制表(只会复制表的结构,不会复制表的数据)
CREATE TABLE [IF NOT EXISTS] 表名 LIKE 要复制的表名
DML:数据库操作语言:对于表中的数据做增,删,改
#插入数据(全列插入)(值必须跟表中的列的顺序和类型保持一致)
INSERT INTO 表名 VALUES (值,值,值....)
#插入数据(部分插入)(值必须跟前面要插入的列的顺序和类型保持一致)
INSERT INTO 表名(列名,列名,....) VALUES (值,值,值....)
#多条插入:
INSERT INTO 表名(列名,列名,....) VALUES (值,值,值....),(值,值,值....) ....
#将一个表的数据插入到另一个表中
INSERT INTO 表名(列名,列名,.....) SELECT 列名,列名,... from copy_表名;
#删除数据
DELETE FROM 表名 WHERE 条件;
DELETE FROM 表名;
#另一种方式删除表中的数据
TRUNCATE TABLE 表名;
区别:
DELETE:即可以指定条件删除,也可以删除全部(不会删除表,只会删除表里面的数据)
使用DELETE删除的数据,还可以找回
TRUNCATE:只能删除全部,(先把表完全删除,然后在创建一个新的表)
删除的数据,不能找回了
#数据的更新
UPDATE 表名 SET 列名=newvalue,[列名=newvalue,....] WHERE 条件 [and 条件 ....]
SQL:数据库查询语言:
SELECT * FROM 表名;
SELECT 列名,列名,.. FROM 表名;
SELECT 表.列,表.列,... FROM 数据库名.表名
查询语句:
#WHERE字句:
# = 直等:
SELECT * FROM 表名 WHERE 列明=value;
# != 不等于
SELECT * FROM 表名 WHERE 列明 != value;
# <> 不等于
SELECT * FROM 表名 WHERE 列名 <> value;
# < 小于
SELECT * FROM 表名 WHERE age < 30;
# <= 小于等于
SELECT * FROM 表名 WHERE age <= 30;
# > 大于
SELECT * FROM 表名 WHERE age > 30;
# >= 大于等于
SELECT * FROM 表名 WHERE age >= 30;
# BETWEEN num AND num (返回符合某个范围的记录,左右闭合)
SELECT * FROM 表名 WHERE age BETWEEN 20 AND 40;
#检查空值
SELECT * FROM 表名 WHERE 列名 IS NULL;
#取反,查询出所有不为NULL值的记录
SELECT * FROM 表名 WHERE 列名 IS NOT NULL;
#AND 与(同时满足)
SELECT * FROM 表名 WHERE 列名1=value AND 列名2=value;
#OR 或 (满足其中一个即可)
SELECT * FROM 表名 WHERE 列名1=value OR 列名2=value;
#IN (范围查询)
SELECT * FROM 表名 WHERE 列名 IN(值,值,...)
#NOT (非,取反)
SELECT * FROM 表名 WHERE 列名 NOT IN(值,值,...)
AND和OR的组合使用(AND的优先级比or要高,所以在使用的时候要注意)
例子:假如我们要找id大于等于2或则性别为男,并且薪资大于8000
SELECT * FROM employee WHERE (id>=2 OR gender='男') AND salary > 8000
如果不加():查找性别为男并且薪资大于8000,或则id大于等于2
SELECT * FROM employee WHERE id>=2 OR gender='男' AND salary > 8000
模糊查询(通配符查询) 跟LIKE 配合使用
%:表示任意字符,出现任意次数.
1.查询出姓名中包含李的的记录
SELECT * FROM 表名 WHERE name LIKE '%李%';
_:任意字符,有且只有一次.
2.查询出姓为李并且姓名是由三个汉字组成的记录
SELECT * FROM 表名 WHERE name LIKE '李_ _';
3.查询出姓为李并且姓名至少由2个汉字组成的记录
SELECT * FROM 表名 WHERE name LIKE '李_%';
在mysql中如何使用正则(REGEXP)(mysql对一些简单的正则支持的比较好,复杂的正则,可能会有些问题)
SELECT * FROM 表名 WHERE 列名 REGEXP '正则表达式'
#排序 order by
升序:ASC
降序:DESC
SELECT * FROM 表名 ORDER BY 列名 方向;
SELECT * FROM 表名 ORDER BY 列名 方向,列名 方向,列名 方向;
#排序:
升序:ASC (小->大,默认情况下不设置,就是升序)
降序:DESC(大->小)
#单个使用:
#升序
SELECT * FROM 表名 ORDER BY 列名 (ASC);
#将序
SELECT * FROM 表名 ORDER BY 列名 DESC;
#组合使用:(无论是升序还是降序,都需要明确的指明方向)
SELECT * FROM 表名 ORDER BY 列名1 DESC,列名2 ASC;
#如果要使用中文排序(姓名)
SELECT * FROM 表名 ORDER BY CONVERT(stu_name USING gbk)
#LIMIT (限制查询)
#offset:偏移量,从哪一条开始返回,不包含这一行
#num:返回多少行数据
SELECT * FROM 表名 LIMIT offset,num;
#从第一行开始返回,返回指定行数的数据
SELECT * FROM 表名 LIMIT num;
#LIMIT和ORDER BY组合使用
#可以查询最大,
SELECT * FROM 表名 ORDER BY 列名 DESC LIMIT 1;
# 最小值
SELECT * FROM 表名 ORDER BY 列名 ASC LIMIT 1;
#mysql常见的聚合函数
MAX():最大
MIN():最小
AVG():平均值
COUNT():总数行数
SUM():求和(一列的和)
单独使用聚合函数
SELECT MAX(列) as 别名 FROM 表名;
SELECT MIN(列) as 别名 FROM 表名;
SELECT AVG(列) as 别名 FROM 表名;
SELECT COUNT(1) as 别名 FROM 表名;
SELECT SUM(列) as 别名 FROM 表名;
综合使用:
SELECT COUNT(1) as 别名, SUM(列) as 别名,AVG(列) as 别名 FROM 表名;
网友评论