MySQL基本命令

进入数据库
mysql -hlocalhost -uroot -p
-h表示服务器名,localhost表示本地
-u为数据库用户名,root是mysql默认用户名
-p为密码

创建数据库
create database 数据库名 character set 编码;
编码类型可省略

查询所有数据库
show database;

查询数据库定义信息
show create database 数据库名;

删除数据库
drop database 数据库名;

修改数据库字符类型
alter database 数据库名 character set 类型;

查看当前数据库
select database();

切换数据库
use 数据库名;

创建表
create table 表名(
字段名 类型,
字段名 类型,
字段名 类型,
);
常用数据类型
int:整型
double:浮点型,例如double(5,2)表示最多5位,其中必须有2位小数,即最大值为999.99;
char:固定长度字符串类型;
varchar:可变长度字符串类型;
text:字符串类型;
blob:字节类型;
date:日期类型,格式为:yyyy-MM-dd;
time:时间类型,格式为:hh:mm:ss
timestamp:时间戳类型 yyyy-MM-dd hh:mm:ss  会自动赋值
datetime:日期时间类型 yyyy-MM-dd hh:mm:ss

删除表
drop table 表名;

查询所有表
show tables;

查询表的字段信息
desc 表名;

表上添加一个列
alter table 表名 add 列名 类型;

修改列类型
alter table 表名 modify 列名 类型;

删除列
alter table 表名 drop 列名;

修改表名
rename table 原表名 to 新表名;

查询表的定义信息
SHOW CREATE TABLE 表名;

修改表的编码
ALTER TABLE 表名 CHARACTER SET 编码;

修改列名
ALTER TABLE 表名 CHANGE 原列名 新列名 类型;

插入数据
INSERT INTO 表名(列名1,列名2 ...)VALUES(列值1,列值2...);
列名与列值的类型、个数、顺序要一一对应
如果插入空值,请使用null
插入的日期和字符,使用引号括起来

修改数据
UPDATE 表名 SET 列名1=列值1,列名2=列值2 ..... WHERE 列名=值;
WHERE表示条件

删除数据
DELETE FROM 表名 WHERE 列名=列值;
DELETE 删除表中的数据,表结构还在,删除后的数据可以找回
TRUNCATE TABLE 表名;
TRUNCATE 删除是把表直接DROP掉,然后再创建一个同样的新表。
删除的数据不能找回。执行速度比DELETE快。

查询数据
查询所有列
SELECT * FROM 表名;
查询指定列
SELECT 列名 FROM 表名; 
条件查询
SELECT * FROM 表名 WHERE 条件;
条件运算符
        数值和判断  =、!=、<>、<、<=、>、>=;
            BETWEEN…AND; 
            IN(set);
        值为空和值不为空  IS NULL; IS NOT NULL; 
        和(与)     AND;
        或     OR;
        非     NOT; 
模糊查询
SELECT * FROM 表名 WHERE LIKE 通配符;
模糊查询需要使用关键字LIKE
模糊查询通配符
               _ (下划线)  任意一个字符
              % (百分号)  任意0~n个字符
字段控制查询: 去除重复记录
SELECT DISTINCT 字段 FROM 表名;

给列添加别名
SELECT *,列名 AS 别名 FROM 表名;

查询并排序
升序排序(默认)
SELECT *FROM 表名 ORDER BY 列名 ASC;
降序排序
SELECT *FROM 表名 ORDER BY 列名 DASC;

聚合函数
SELECT 函数(列) FROM 表名;
COUNT():统计指定列不为NULL的记录行数;
MAX():计算指定列的最大值,如果指定列是字符串类型,那么使用字符串排序运算;
MIN():计算指定列的最小值,如果指定列是字符串类型,那么使用字符串排序运算;
SUM():计算指定列的数值和,如果指定列类型不是数值类型,那么计算结果为0;
AVG():计算指定列的平均值,如果指定列类型不是数值类型,那么计算结果为0;

分组查询
当需要分组查询时需要使用GROUP BY子句
凡和聚合函数同时出现的列名,一定要写在group by 之后
having与where的区别:
having是在分组后对数据进行过滤.
where是在分组前对数据进行过滤

LIMIT  方言
LIMIT用来限定查询结果的起始行,以及总行数。
查询5行记录,起始行从0开始
SELECT * FROM 表名 LIMIT 0, 5;


约束

主键约束(primary key)
注:每个表中要有一个主键。
特点:数据唯一,且不能为null
第一种添加方式:
CREATE TABLE student(
id int primary key,
name varchar(50)
);
第二种添加方式:此种方式优势在于可以创建联合主键
CREATE TABLE student(
id int,
name varchar(50),
primary key(id)
);
CREATE TABLE student(
classid int,
stuid int,
name varchar(50),
primary key(classid,stuid)
);
第三种添加方式:
CREATE TABLE student(
id int,
name varchar(50)
);
ALTER TABLE student  ADD  PRIMARY  KEY (id);


唯一约束(unique)
特点:数据不能重复。
CREATE TABLE student(
Id int primary key,
Name varchar(50) unique
);


自动增长列(auto_increment)  
给主键添加自动增长的数值,列只能是整数类型
CREATE TABLE student(
Id int primary key auto_increment,
Name varchar(50)
);
INSERT INTO student(name) values(‘tom’);


非空约束:not null
CREATE TABLE student(
Id int pirmary key,
Name varchar(50) not null,
Sex varchar(10)
);
INSERT INTO student values(1,’tom’,null);


默认值约束 default
CREATE TABLE student(
Id int pirmary key,
Name varchar(50) not null,
Sex varchar(10) default ‘男’
);
insert into student1 values(1,'tom','女');
insert into student1 values(2,'jerry',default);
如果不输入值就用默认的值


外键约束:FOREIGN KEY 
CREATE TABLE student(
sid int pirmary key,
name varchar(50) not null,
sex varchar(10) default ‘男’
);
create table score(
id int,
score int,
sid int , -- 外键列的数据类型一定要与主键的类型一致
CONSTRAINT fk_score_sid foreign key (sid) references student(id)
);
第二种添加外键方式。
ALTER TABLE score1 ADD CONSTRAINT fk_stu_score FOREIGN KEY(sid) REFERENCES stu(id);


多表查询
合并结果集
合并结果集就是把两个select语句的查询结果合并到一起
UNION:去除重复记录,
例如:SELECT * FROM t1 UNION SELECT * FROM t2;
UNION ALL:不去除重复记录,
例如:SELECT * FROM t1 UNION ALL SELECT * FROM t2。
被合并的两个结果:列数、列类型必须相同。


连接查询
内连接
方言
SELECT e.ename,e.sal,e.comm,d.dname 
FROM emp AS e,dept AS d
WHERE e.deptno=d.deptno; 
为表指定别名,然后在引用列时使用别名
SQL标准
SELECT * 
FROM emp e 
INNER  JOIN dept d 
ON  e.deptno=d.deptno;


外连接
外连接的特点:查询出的结果存在不满足条件的可能
左连接
SELECT * FROM emp e 
LEFT OUTER  JOIN dept d 
ON e.deptno=d.deptno;
左连接是先查询出左表(即以左表为主)
然后查询右表,将右表中满足条件的显示出来,
不满足条件的显示NULL

右连接
SELECT * FROM emp e 
RIGHT OUTER JOIN dept d 
ON e.deptno=d.deptno;
右连接就是先把右表中所有记录都查询出来
然后左表满足条件的显示,不满足显示NULL。
        连接不限与两张表,连接查询也可以是三张、四张,甚至N张表的连接查询。
        通常连接查询不可能需要整个笛卡尔积,而只是需要其中一部分,
        那么这时就需要使用条件来去除不需要的记录。
        这个条件大多数情况下都是使用主外键关系去除。



自然连接
SELECT * FROM emp NATURAL JOIN dept; 
SELECT * FROM emp NATURAL LEFT JOIN dept; 
SELECT * FROM emp NATURAL RIGHT JOIN dept; 
两张连接的表中名称和类型完全一致的列作为条件,
例如emp和dept表都存在deptno列,并且类型一致,
所以会被自然连接找到!


子查询
子查询就是嵌套查询,即SELECT中包含SELECT,
如果一条语句中存在两个,或两个以上SELECT,
那么就是子查询语句了


自连接:自己连接自己,起别名
SELECT e1.empno , e1.ename,e2.mgr,e2.ename 
FROM emp e1, emp e2 
WHERE e1.mgr = e2.empno AND e1.empno = 7369;


生成SQL脚本  导出数据
mysqldump –u用户名 –p密码 数据库名>生成的脚本文件路径


执行SQL脚本 恢复数据
前提:必须先创建数据库名
执行SQL脚本需要登录mysql,然后进入指定数据库,才可以执行SQL脚本
SOURCE 脚本文件路径


还可以通过下面的方式来执行脚本文件:
mysql –u用户名 –p密码 数据库<要执行脚本文件路径
这种方式无需登录mysql!
注意:在CMD下 命令不能加;

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值