sql基础命令

命令框输入mysql -u用户名 -p密码
port=3306 默认端口号
mysql 数据库密码修改
mysql 窗口: set password for 用户名@localhost = password(“新密码”);

查看数据库:show databases;
创建数据库test :create database test charset=“utf8”;
删除数据库 :drop database test;
使用数据库:use test;
查看当前使用的是哪个库:select database();

创建表:create table class(id int unsigned primary key auto_increment,字段…);
查看表结构:desc cla;
修改表名:alter table class rename cla;
修改表结构:alter table 表名 change 老字段 新字段 数据类型 [属性] [位置]
修改字段:alter table 表名 modify 字段名 数据类型 [属性][位置] 只可以修改数据类型和约束,不能更改名称。
删除字段:alter table 表名 drop 字段名;
新增字段:alter table 表名 add [column] 字段名 数据类型 [列属性][位置]

插入数据:insert into student values( , , …),(),(),…;
insert into student(id,name,age)values(0,“张三”,10);
更新数据:update 表名 set 字段=值 where 条件;
update student set age=18 where id=1;
表数据删除:delete from 表名 where 条件;
delete from student where id =1;
取别名:select s.name as “姓名”,s.age as “年龄” from student as s;

查询
查看表:select * from cla;
升序asc/desc降序
select * from 表名 order by 列1,列2,列3… asc/desc;

模糊查询 like
_ 表示一个字符
% 表示一个或多个字符
查询姓黄的人 like %
select * from student where name like “黄%”;

查询年龄不是34、18岁的学生信息 not in
select * from student where age not in (18,34);

查询年龄不在18到34之间的信息 between … and …
select * from student where age not between 18 and 34;

查询填写了身高的学生 is not null
select * from student where height is not null;

查询女生的平均年龄去除小数点 round() avg()
select round(avg(age)) from student where sex=“女”;

计算每种性别中的人数 count() group by
select sex,count(sex) from student group by sex;

having 表达式:在分组查询结果后,用having指定条件输出结果group by + having
select sex,count(*) from student group by sex having sex=“男”;
查询平均年龄超过30岁的性别 group_concat() 显示所有符合条件的人名字和年龄
select sex,group_concat(name,age) from student group by sex having avg(age)>30;

内连接其他写法 A cross join B on 条件
select * from student cross join class on student.cls_id = class.id;
外连接其他写法 A left/right outer join B on 条件
select * from student left outer join class on student.cls_id = class.id;
查找班级学生对应班级和年龄,按照年龄进行降序如果年龄相同,按照身高从大到小 A inner join B 条件
select s.name,c.name,s.age,s.height from student as s inner join class as c on s.cls_id = c.id order by age desc,height desc;

子查询:在一个select 语句中嵌入另外一个select语句,被嵌入的select语句称为子查询
主查询:主要查询的对象,第一个select查询语句
1.子查询嵌入在主查询语句中
2.子查询辅助主查询的,要么充当条件,要么充当数据源
3.子查询是可以独立存在的语句,是一条完整的select语句。
注意:先执行子查询语句,再执行主查询语句

1’标量子查询: 子查询返回的结果是一个数
查询 班级最高的学生信息:
select * from student where height=(select max(height) from student);
2’ 列级子查询: 返回的结果是一列(一列多行)
查找 18,20,40岁学生信息:
select * from student where age in (select age from student where age in (18,20,40));
3’行级子查询: 返回结果是一行 (一行多列)
查询 班级年龄最大,身高最高的学生
select * from student where(age,height) = (select max(age),max(height) from student)

多表连接查询
select * from goods inner join goods_cates on goods.cate_id = goods_cates.id inner join goods_brands on goods.brand_id = goods_brands.id;

分页显示,获取第一页,每页显示4条内容
select * from student limit 0,4; = select * from student limit 4 office 0;

外键foreign key:对关系字段进行约束,当为关系字段填写值时,会到关联的表中查询此值是否存在,如果存在则填写成功,如果不存在则填写失败并抛出异常。
添加外键:
alter table goods add foreign key(cate_id)references goods_cates(id);
查看外键:
show create table goods;
删除外键:
alter table goods drop foreign key 外键名称;
auto_increment 保存下一个要插入的id值
alter table goods auto_increment = 0; 避免id跳跃情况,设置auto_increment = 0

视图相当于是select 语句的结果集,视图是对若干张表基本的引用,一张虚表
视图的作用就是查询语句,数据库视图简化复杂查询,提高查询效率
create view v_goods3 as select goods.id as “编号”, goods.name as “名称”,goods.cate_id as “种类编号”,goods.brand_id as “品牌编号”,price as “价格” from goods inner join goods_cates on goods.cate_id = goods_cates.id;
定义视图:
create view 视图名称 as select 语句;
查看视图:
show tables;
删除视图
drop view 视图名称;

当数据库数据量很大时,查找数据会变得很慢,索引目的用来提高查询速度
创建索引,如果指定字段是字符串, 需要指定长度,建议长度和定义时一样长
普通索引格式:create index 索引名称 on 表名(字段名称(长度))
删除索引:drop index 索引名称 on 表名;

账户管理
所有账户及权限信息存储在mysql数据库的user表中
查看user表结构
desc user;

查看所有用户:
select host,user,authentication_string from user;

删除用户:
delete from user where user=“用户名”;

创建账户&授权:
grant 权限列表 on 数据库 to “用户名”@“访问主机” identified by “密码”;

权限列表:select,insert,delete,update。all privileges所有权限
主机:IP地址 / localhost(%)

例:创建jingdong数据库全局权限用户zhangsan 并添加密码
grant all privileges on jingdong to “zhangsan”@"%" identified by “1234”;

每次创建完后都需刷新权限:flush privileges;

你可能感兴趣的:(SQL,SQl)