MySql学习(第二天)

MySql中的数据类型主要分为三大类:数值类型,日期时间类型,字符串类型。

MySql中的全部数据类型:TINYINT(1byte)、SMALLINT(2byte)、MEDIUMINT(3byte)、INT/INTEGER(4byte)、BIGINT(8byte)、FLOAT(4byte)、DOUBLE(8byte)、DECIMAL、DATE、DATETIME、TIME、TIMESTAMP、YEAR、CHAR、VARCHAR、TINYBLOB、TINYTEXT、BLOB、TEXT、MEDIUBLOB、MEDIUTTEXT、LONGBLOB、LONGTEXT。

char和varchar都用于描述字符串,二者的区别是:

char表示定长字符串,指定长度是多少就占用多少个字符,和字段值本身的长度无关。

varchar表示变长字符串,指定的长度为最大占用长度。

创建表的语句(示例代码):

create table student(
    id int comment'学号',
    name varchar(20) comment'姓名',
    idcard varchar(18) comment'身份证号码'
);

表管理(示例代码):

#添加列
alter table 表名 add [column] 字段名 类型;
alter table dept add column comm double;

#修改列的类型
alter table 表名 modify [column] 字段名 新的类型;
alter table dept modify column idcard varchar(30);

#修改列的名称和类型
alter table 表名 change [column] 字段名 新的字段名 新的类型;
alter table student change column idcard phone varchar(11);

#删除列
alter table 表名 drop [column] 字段名;
alter table student drop column phone;

#修改表名
alter table rename 旧表名 to 新表名;
alter table rename student to stu;

rename table 旧表名 to 新表名;
rename table student to stu;


#删除表
drop table [if exists] 表名;
#drop删除了表结构和表数据
truncate table 表名;
#truncate只是删除了表数据,表结构仍然存在

#创建和某表结构相同的表(只是复制表结构,无法复制数据)
create table 表名1 like 表名2;
create table emp_copy like emp;
#复制的表不在当前数据库
create table 表名1 like 数据库.表名2;

数据管理:

插入数据

#如果表名后面跟了字段名称,那么value后面的值要和前面的字段匹配,包括个数,顺序
insert into 表名(字段1,字段2,字段3) values/value(value1,value2,value3);

#如果表名后面没有字段名称,那么对value后面要把表当中所有字段的值都写上
insert into 表名 values/value(value1,value2,value3);

#一次插入多条数据(此处value后面值的个数要求和上面一样)
insert into 表名 values/value(value1,value2,value3),(......),(......);

查询数据

#无条件查询
select */(字段1,字段2,字段3) from 表名;

#等值查询
select */(字段1,字段2,字段3) from 表名 where 字段名 = value;

#设置列别名
select 字段名 [as] '别名' from 表名 where 条件;

#剔除重复行(只是在显示的时候不显示重复数据,并未删除数据)
#要这一行数据的所有列完全相同才能剔除
select distinct * from 表名;

#修改数据
update 表名 set 字段名 = value where 条件;

#删除数据
delete from 表名 where 条件;

数据备份

mysqldump [选项] 数据库名 [表名] >地址(在mysql服务外面写)
#选项说明:
#-d:不备份数据,只备份结构
#-A:备份所有数据库
#-B:指定要备份的数据库
#--skip-comments:不备份备注信息

#-d 只备份表结构
#备份时地址后面的后缀可以是txt,csv,sql
mysqldump -u root -p -d 数据库名 表1 表2 > 地址
mysqldump -u root -p -d kfm demp emp > d:\kaifamiao\data.txt

#数据和表结构一起备份
mysqldump -u root -p 数据库名 表1 表2 > 地址
mysqldump -u root -p kfm demp emp > d:\kaifamiao\data.txt

#备份时跳过备注信息
mysqldump -u root -p -d --skip-comments kfm dept > E:/cart.sql

#备份多个数据库
mysqldump -u root -p -d --databases 数据库1 数据库2 > 地址
mysqldump -u root -p -d --databases kfm kfm003 > d:\kaifamiao\data.txt

#备份所有数据库
mysqldump -u root -p -d --all-databases > 地址
mysqldump -u root -p -d -A > 地址


将查询的结果集保存为文件

mysql -u root -p -d -e "select * from 数据库.表名" > 地址
mysql -u root -p -d -e "select * from kfm.emp" > 地址

mysql -u root -p -d -e "select * from 表名" 数据库 > 地址
mysql -u root -p -d -e "select * from dept" kfm > 地址


 

还原数据结构和数据

#需要登录之后执行这条语句
source 地址;  (SQL语句)

#未登录之前,就是在mysql服务外面使用mysql命令还原
mysql -u root -p 新数据库名 < 地址
mysql -u root -p copy_data < d:\kaifamiao\copy.sql

条件过滤

#between and的使用
#查询dept_no在1-3之间的
select * from dept where dept_no between 1 and 3;

#in和not in的使用
#查找dept_no在(1,3,5)中
select * from dept where dept_no in(1,3,5);

#查找dept_no不在(1,3,5)中
select * from dept where dept_no not in(1,3,5);


#满足条件1和条件2时才会显示
select * from 表名 where 条件1 and 条件2;


#满足条件1或条件2时会显示
select * from 表名 where 条件1 or 条件2;

算术运算

#可以对查询结果进行运算
select 字段1 + 字段2 from 表名;

#修改的时候也可以进行算数运算
update 表名 set 字段名 = 字段 + value where 条件;  

NULL值查询(is null/is not mull)

select * from emp where 字段名 is null;

select * from emp where 字段名 is not null;

模糊查询

#在模糊查询中,_表示一个字符,%表示0个或多个字符
#ax bx cx
select * from student where name like '_x';
#axb cxb cxv
select * from student where name like '_x_';

#x bx ccccx
select * from student where name like '%x';
#x ascx adcxvbn
select * from student where name like '%x%';

#axcv
select * from student where name like '_x%';

#axcv xv dhgxvb
select * from student where name like '%x_';

逻辑运算

#where条件语句里面可以写<、>、<=、>=、!=
select * from student where 字段 > value;

排序

#排序关键字是:order by
#ASC表示升序(默认升序),DESC表示降序
select * from student order by 字段名 ASC/DESC;

#可以用多个字段进行排序
#先按照字段1降序/升序排序,如果字段1字段相同,按照字段2降序/升序排序
select * from student order by 字段1 DESC/ASC,字段2 DESC/ASC;

分页查询

#分页查询关键字:limit 页数N,页大小S
#页数和页大小的计算公式:N=(N-1)*S

#从第0行开始显示,一共显示2条数据
select * from 表名 limit 0,2;


单行函数

#length()计算长度
select length("王鹤棣");
select length(字段名) from 表名;


# upper/lower 大、小写转换
select uopper("a"),lower('A');
select upper(字段),lower(字段)from 表;


#concat字符串拼接
select concat(upper("abc"),vbn);

select concat(字段1,字段2) from 表名;

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值