创建表:
create tables 表名(内容)
create table class(
stu int,
name varchar(20),
age int
);
查看表中的结构:desc 表名;
添加表中的列:alter table 表名 add 列名 数据类型;
修改表中的列中属性的数据类型:alter table 表名 modify 属性名(id) 数据类型;
删除表中的列: alter table 表名 drop 列名;
修改表名:rename table 原表名 to 新表名;
显示表的细节:show create table 表名;
修改表的字符集为gbk :alter table 表名 character set 字符集名称;
修改表中的列名:alter table 表名 change 原始列名 新列名 数据类型;
删除表:drop table 表名;
重命名表:alter table 旧表名 rename to 新表名;
查询表中的所有数据:select * from 表名;
添加列:insert into 表名 (id,Sname,Ssex) values (1,'xxx','male');
添加多列:insert into 表名 (列1,列2...列N) values (值1,值2...值N);(允许一次插入多行,在内容处增加)
insert into msg (id,title,name,content)
values (1,‘初来乍到’,‘张三’,‘我刚来’)
把一个表中所有学生成绩都改变为 90 :update 表名 set score 列名=90;
修改指定学生的成绩:update 表名 set score=60 where name='zws';
修改指定学生的成绩和年龄:
update 表名 set score=60,age=19 where name='zws';`
update 表名 set age=age+1 where name='..';
修改 MySQL 的密码:
5.7以前:
use mysel;
update uer set password=password('1234')where user='root';
5.7以后:
update user set authention_string=password('1234')
where user='root' and Host = 'localhost';
然后刷新MySQL的系统权限相关表:
flush privileges;
第二种方式修改密码,使用bin文件中的语句,前提是先配好坏境变量:
mysqladmin -u root -p password 新密码 (不能加;号,否则会算为密码中)
删除操作:
delete from 表名 where 列名=值; //单个数据
delete from 表名; //表中全部数据 结构丢失
truncate table 表名; //表中全部数据 空表
查询指定列的数据:select 列名1,列名2,···from 表名;
条件查询:
select * from 表名 where 列名=(>,>=,<,<=,!=)值 (and,or....);
in(set) 固定的范围值;
模糊查询:select * from 表名 where 列名 like '__'(几个下划线,表示几个字母或数字);
查询名字(可类比)有5个字符组成,并且第五个字符是b:
select * from 表名 where 列名 like '_ _ _ _ b';
查询名字(可类比) 开头是 z :
select * from 表名 where 列名 like 'z%';(% 表示后面的);
查询名字中包含 z 的信息:
select * from 表名 where 列名 like '%z%';
查询名字中第二个字母为 z 的信息:
select * from 表名 where 列名 like '_z%';
查询单独一个属性的信息:
select 列名 from 表名;
select distinct 列名 from 表名; //去掉重复的信息
select *,age+score from 表名; //多处新的一列
select *,ifnull(age,0) + ifnull(score,0) as 起名 from students;//为空的变为零
对数据排序:
select * from 表名 order by 列名 (或asc); //默认是升序;
select * from 表名 order by 列名 desc; //降序
select * from 表名 order by 列名 desc,列名 desc;//遇到相同的时候
聚合函数:
count(): 统计指定不为NULL的记录行数 select conut(*) from 表名;
max()计算指定列的最大值,如果指定列是字符类型,那么使用字符串排序运算
avg() :计算指定列的平均值,如果指定的列不是数值型,那么计算为0
min():计算指定列的最小值,如果指定列是字符类型,那么使用字符串排序运算
sum() :计算指定列的数值和
创建主键:alter table 表名 add constraint 主键名 primary key(列名);
SET character_set_client =gbk; //设置客服端的编码
SET character_set_results =gbk; //设置服务器端结果返回的编码
SET character_set_connection =gbk; //设置客服端与服务端连接时的编码
展示所有数据库:show databases;
创建数据库:create database 库名;
选中数据库:use+该数据库名称;
删除数据库:drop database+数据库名称(表类似);
展示数据库中包含的表:show tables;
声明字符集:
set names 模式名;(字符集不同会报错)
eg.set names gbk;
为表增加内容:
insert into 表名(列1,列2...列N)
values (值1,值2...值N);(允许一次插入多行,在内容处增加)
eg:
insert into msg (id,title,name,content)
values(1,‘初来乍到’,‘张三’,‘我刚来’);
删除表中某行数据:
delete from 表名 where 位置;
eg: delete from msg where id=2;
改动表内容:
update 表名 set 改动的内容 where 位置;
eg:
update msg set id=2,content=‘来了很久’ where name=‘张三’;
若想查询特定行,列
select 列 from 表名 where 位置
eg:
select id,title from msg where id>2;(查询表msg中id,title两列且id>2的数据)
模糊查询:用到的词:’‘like’’,’’%’’,"__".
“like”->像,"%"->通配任意字符,“_”->单个字符。
where name like ‘诺基亚%’;(用以查询带“诺基亚”的数据)
where name like‘诺基亚__’;(用以查询“诺基亚xx”的数据(几个下划线代表几个数))
日期类型:
year类型:eg.'2018';
data类型:eg.'1992-08-12';
time类型:eg.'12:12:32';
datetime类型:eg.'1987-05-03 14:32:08'
alter用法:
添加字段: alter table 表名 add 字段名 字段类型;
删除字段: alter table 表名 drop 字段名;(若只剩最后一个字段则无法删除)
修改字段类型: alter table 表名 change 旧列名 新列名 类型;
删除列: alter table 表名 drop 列名;
重命名表: alter table 旧表名 rename to 新表名;
where 用法
where 用法: where id>2;
where id!=2;
where id in (值1,值2...值N);(查询id在1到N中的数据)
where id between A and B;(查询在A到B中的数据) (where用来找位置)
group用法:group通常与统计函数连用;
统计函数:max(最大),min(最小),sum(求总和),avg(求平均),count(求总行数)。
select id,max(price) from goods group by id;
(通过以id分组找出表goods中price列最大值,并显示出每组id及最大值)
select avg(price) from goods;
select count(*) from goods group by id;
having用法:
select 列名1,列名2 from 表名 where 位置 having 筛选条件;
select name,id,price from goods where id=3 having price>200;
(having用来筛选)
order by用法:
order by 列名;(升序排列)
order by 列名 desc;(降序排列)
order by的多字段排序:eg.order by 列1,列2;(先按列1排再按列2排)
limit用法:
在语句最后,起限制条目的作用。
eg.limit offset n;
指跳过前offset个,然后再取n个。
索引:
添加索引:create index 索引名 on 表名(列名 asc/desc);(升序/降序索引)
删除索引:drop index 索引名 on 表名;
where型的子查询:指把内层查询的结果作为外层查询的比较条件。
from型的子查询:把内层的查询结果当成临时表,供外层sql再次查询
exists型的子查询:把外层的查询结果,拿到内层,看内层的查询是否成立。
int(19):
指定数字的显示宽度为19,与实际存储数值的范围无关
float(7,2):
7是显示宽度指示器,指定显示的浮点数为7位数字(与float实际存储值的范围无关),
2 代表小数点后只有两位小数(第三位会四舍五入后插入数据库)
decimal(7,2):
7表示数值的精度,即实际保存到数据库的有效数字的总个数;
2代表小数点后的位数(同上)