1.mysql -uroot -p密码 【-h主机地址】 登录mysql系统
2.show databases; 查看所有的数据库
3.exit; 退出mysql系统
4.mysqladmin -uroot -proot password 新密码 修改root用户的密码
DDL:只能操作数据库和表:库、表、列等;CREATE、ALTER、DROP
1.create database 数据库名; 创建数据库(支持中文,不推荐)
2.create database 数据库名 character set 编码; 创建指定编码的数据库
3.show databases; 查询所有的数据库
4.show create database 数据库名; 查询数据库创建细节
5.alter database 数据名 character set 编码; 修改数据库编码
6.drop database 数据库名; 删除某数据库
7.select database(); 显示当前使用的数据库
8.use 数据库名; 切换使用的数据库
创建表
create table 表名(
属性1 数据类型,
属性2 数据类型,
属性3 数据类型,
...
属性n 数据类型
);
modify 是修改表中字段的长度或者数据类型 change 是修改表中的字段
9.show tables; 显示当前数据库下的所有表
10.desc 表名; 显示当前表的字段(结构)
11.alter table 表名 add 字段名 数据类型; 添加字段
12.alter table 表名 modify 字段名 数据类型; 修改字段长度或者数据类型
13.alter table 表名 drop 字段名; 删除表中的某字段
14.rename table 旧表名 to 新表名; 修改表名
15.show create table 表名; 查看表的创建细节
16.alter table 表名 character set 编码; 修改表的编码
17.alter table 表名 change 旧列名 新列名 数据类型; 修改表中的字段名
18.drop table 表名; 删除某表
DML是对表中的数据进行增、删、改的操作。INSERT(添加) 、UPDATE(更新,修改)、 DELETE(删除)
添加数据语法: insert into 表名(字段1,字段2 ...)values (字段值1,字段值2...);
1.select * from 表名 查询当前表下的所有信息
修改数据语法:update 表名 set 字段1=字段值1,字段2=字段值2 ...WHERE 列名=值
删除数据语法格式1:delete from 表名 【where 字段=字段值】
删除数据语法格式2:truncate table stu;【不需要添加条件,它就是格式化】
delete:删除表中的数据,表结构还在;删除后的数据可以找回
truncate:删除是把表直接drop掉,然后再创建一个同样的新表。删除的数据不能找回。执行速度比delete快。
#有两个以上直接下属的员工信息
#1给mgr进行分组,统计出现mgr出现的次数 分组
select mgr '领导编号',count(*)'出现的次数' from emp group by(mgr);
#找到领导编号对应的领导姓名
select * from emp where empno in(select mgr '领导编号' from emp group by(mgr));
常用的数据类型
数值类型
bit(m)位类型 m指定位数 默认值1 范围1-64位
tinyint[unsigned][zerofill] 带符号的范围是-128到127无符号0到255
bool,boolean 使用0或1表示真或假
float[m,d][unsigned][zerofill]m指定显示长度 d 指定小数位数
bouble [m,d][unsigned][zerofill][decimal](m,d) 表示比float精度更大的小数
char[size] char[20] 固定长度的字符串
varchar(size) varchar(20)可变长度字符串
blob longblob 二进制数据
text(clob) longtext (longclob) 大文本
删除表 drop table 表名;
dml 是对表中的数据进行增,删,改 的操作. 不要与DDL混淆了
insert (添加) update (更改,修改) delete (删除)
插入 insert
语法 insert into 表名(列名1,列名2) values (列值1,列值2......)3 注意列名和列值要一一对应
修改操作 update
update 表名 set 列名1 = 列值1, 列名2 = 列值2 ...where 列名=值(where后跟条件)
删除操作 delete
语法 delete from 表名 where 列名 值
删除表中所有记录。
Delete from stu;
删除表中名字为陆超的记录。
DELETE FROM stu WHERE name=’陆超’;
使用truncate删除表中记录。
TRUNCATE TABLE stu;
DQL操作 数据查询语言数据库执行的SQL语句不会对数据进行改变,而是让数据库发送结果集给客户端 查询返回结果集是一张虚拟表
条件查询
添加查询时就是在查询时给出where子句 在where子句中可以使用如下运算符及关键字
· = ,!= ,<>(也是不等于的意思) < ,<=,> ,>=
· between ...and :(在什么和什么之间)
· is null (等于空) is not null (不为空)
· and (和)
· or (或者)
· not (不是)
模糊查询 关键字like
_ 任意一个字符
% 任意 0~n个字符
字段控制查询
distinct (去除重复)
ifnull(1, 0) [如果是空的 就不相加]
排序
older by 列名 (给哪一列排序)
asc (升序)
desc(降序)
select * from 表名 olter by 列名 asc (升序)
聚合函数
聚合函数是用来做纵向运算的函数\
count() 统计指定列不为null的记录行数(纵向统计使用)
max 计算指定列的最大值 如果指定列是字符串类型那么使用字符串排序运算
min计算指定列的最小值 如果指定列是字符串类型那么使用字符串排序运算
sum() 计算指定列的和 如果指定列不是数值类型,那么计算结果为
avg () 计算指定列的平均值 如果指定列类型不是数值类型那么结果为零
分组查询
当需要分组查询需要使用group by 字句例如查询每个部门和 这说明要使用部门来分组
凡和聚合函数同时出现的列名,一定要写在group by之后
查询关键子 select 语法
① select setection_list 要查询列的名称
② from table _list 要查询表的名称
where conditio 行条件
group by grouping_columns 对结果进行分组
having by sorting_columns 对结果排序
limit offset_start,row_count 对结果限定
update 表名 set 列名 1 = 列值1 ,列名2=列值2,.. where 列名=值 (条件 操作那个列)
删除操作 delete
delete from 表名 where 列名 =值
使用truncate删除表中记录。
truncate table stu;
delete 是删除表中的数据 但是表还在 数据能找回
truncate 是直接把表给drop掉 然后在创建一个新表 数据不能找回 但是执行速度比delete快
主键约束 : primary key
唯一约束 : unique
自动增长列 : auto_increment;
非空约束 : not null
默认值约束 defaule
外键约束: foreign key
多表查询有以下几种
合并结果集; union (去除重复). union all(不去除重复) select * from ti union select * from 2; (去除重复)
连接查询 select * from ti union all select * from 2; (不去除重复)
内连接 inner join on (代替逗号 更加标准化 on 代替where)
外连接接 outer join on (包括左外连接 left {outer} join 右外链接 right {outer} join )
全外连接 (MySQL 不支持)
自然连接 natural join(没有笛卡尔积的效果 )
在控制台使用mysqldump命令可以用来生成指定数据库的脚本文本 但是要注意脚本文本中指包含数据库的内容,而不会存在创建数据库的语句!所以在恢复数据是,还需要自己手动创建一个数据库之后再去恢复数据库
Windows10 不能直接把数据备份到C盘根目录,如果想放在 根目录下,cmd使用管理来运行,方便点,就直接把数据备份到桌面
格式 mysqldump -u 数据库名 -p 数据库密码 数据库名 生成脚本的文件路径
执行SQL脚本 恢复数据
前提:必须先创建数据库名
执行SQL脚本需要登录mysql,然后进入指定数据库,才可以执行SQL脚本!!!
执行SQL脚本不只是用来恢复数据库,也可以在平时编写SQL脚本,然后使用执行SQL 脚本来操作数据库!大家都知道,在黑屏下编写SQL语句时,就算发现了错误,可能也不能修改了。所以我建议大家使用脚本文件来编写SQL代码,然后执行之!
SOURCE C:\mydb1.sql
注意,在执行脚本时需要先行核查当前数据库中的表是否与脚本文件中的语句有冲突!例如在脚本文件中存在create table a的语句,而当前数据库中已经存在了a表,那么就会出错!
还可以通过下面的方式来执行脚本文件:
mysql -uroot -p123 数据库名
这种方式无需登录mysql!
注意:在CMD下 命令不能加;