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表示变长字符串,指定的长度为最大占用长度。
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 条件;
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 表名;