常用的mysql语句
为了方便学习mysql,把接触到的sql收集一下,忘记的时候可以查询一下。
连接mysql数据库:
mysql -u 用户名 -p
输入密码.
创建数据库:
create database 数据库名;
创建数据库指定字符集:
create database 数据库名 default character set utf8 collate utf8_general_ci;
查看数据库:
show databases
删除数据库:
drop database 数据库名;
使用/切换数据库:
use 数据库名
查看全部数据库表:
show tables;
查看数据库字符集:
show variables like 'character%';
查看数据表的字符集:
show table status from sqlstudy_db like '%表名%';
修改字符集:
set character_set_client = utf8 ;
修改root密码:
set password for root@localhost = password('密码');
导出数据库:
mysqldump -u 用户名 -p 数据库名 > 导出名称
输入密码.
导入数据库:
1.创建数据库
2.use 数据库名
3.source sql文件路径
将远程服务器的数据库copy到本地:
mysqldump -h 服务器IP -u远程用户名 -p远程密码 --opt --compress 远程数据库名 --skip-lock-tables | mysql -h localhost -u本地用户名 -p本地密码 本地数据库名
创建用户并规定权限:
grant select,insert,update,delete,create,drop on 数据库.表 to 用户名@IP identified by '密码';
只允许本地连接
grant all privileges on *.* to 用户名@localhost identified by '密码';
允许所有IP连接
grant all privileges on *.* to 用户名@'%' identified by '密码';
表的操作:
创建表:
create table 表名(
列名 列类型 约束 注释
);
删除表:
drop table 表名;
修改表名:
alter table 表名 rename 新表名;
修改列名:
alter table 表名 change 原列名 新列名 类型 约束;
修改列类型
alter table 表名 change 列名 类型 约束;
或
alter table 表名 modify 列名 类型 约束;
修改表注释:
alter table 表 comment '注释内容';
修改字段注释:
alter table 表 modify column 列名 类型 comment '修改后的字段注释';
查看注释:
show full columns from 表;
添加列:
alter table 表名 add 列名 类型 约束;
删除列:
alter table 表名 drop column 列名;
查看表结构:
desc 表名;
创建视图:
create view 视图名 as 查询语句;
创建存储过程:
delimiter $$
create procedure 存储过程名(in/out 变量名 类型)
begin
declar 变量名 类型;
SQL语句
end
$$
delimiter ;
调用存储过程:
call 存储过程名(变量);
修改表数据:
update 表名 set 字段名 = 修改的内容 where 字段名 = 内容;
将数据从一个表复制到另一个表:
insert into 表1 select * from 表2
查询语句练习
数据准备
create database test_db default character set utf8 collate utf8_general_ci;
use test_db;
create table tb_student(
stu_id bigint unsigned not null primary key auto_increment ,
stu_name varchar(50) not null,
stu_age tinyint(2) check(stu_age>0 and stu_age<150),
stu_sex enum('0','1') default '0' comment'0是男,1是女',
stu_dept varchar(20) not null comment'系',
stu_email varchar(100) not null unique,
stu_register timestamp not null default current_timestamp comment'入学时间'
)engine=innoDB auto_increment=14124640101 comment='学生信息表';
create table tb_course(
course_id int unsigned not null primary key auto_increment,
course_name varchar(20) not null ,
tea_name varchar(20) not null
)engine=innoDB comment='课程信息表';
create table tb_grade(
stu_id bigint unsigned not null,
course_id int unsigned not null,
score numeric(4,1) not null,
primary key(stu_id,course_id),
foreign key(stu_id) references tb_student(stu_id),
foreign key(course_id) references tb_course(course_id)
)engine=innoDB comment='成绩表';
insert into tb_student(stu_name,stu_age,stu_sex,stu_dept,stu_email) value('轰炸机',22,'0','数学系','hongzahngji@email.com');
insert into tb_student(stu_name,stu_age,stu_sex,stu_dept,stu_email) values
('大水杯',18,'1','外语系','dashuibei@email.com'),
('老树人',20,'0','计算机系','laoshuren@email.com'),
('肥田',22,'1','数学系','feitian@email.com'),
('奥利奥',21,'0','计算机系','aoliao@email.com'),
('犀利哥',21,'1','计算机系','xilige@email.com'),
('大沙煲',30,'0','外语系','dashabao@email.com'),
('西瓜冰',25,'0','数学系','xiguabing@email.com');
insert into tb_course(course_name,tea_name) values
('数据结构','小猛哥'),
('java程序设计','飞天螳螂'),
('基础日语','毒粉蝶'),
('专业英语','夏威夷'),
('概率论与数理统计','老鹰'),
('数学分析','酱爆');
insert into tb_grade(stu_id,course_id,score) values
(14124640101,1,90),(14124640101,2,50),(14124640101,3,87),
(14124640101,4,88),(14124640101,5,65),(14124640101,6,77),
(14124640102,2,90),(14124640102,3,91),(14124640102,4,75),
(14124640103,1,82),(14124640103,4,73),(14124640103,6,28),
(14124640104,1,34),(14124640104,4,64),(14124640104,5,67),
(14124640105,1,46),(14124640105,2,78),(14124640105,3,98),
(14124640106,1,88),(14124640106,3,86),(14124640106,4,38),
(14124640107,1,85),(14124640107,5,49),(14124640107,6,67);
-- 检索计算机系的全体学生的学号,姓名和性别;
select stu_id,stu_name,stu_sex from tb_student where stu_dept = '计算机系';
-- 检索学习课程号为2的学生学号与姓名;-- 检索学习课程c2的学生
select s.stu_id,stu_name from tb_student s,tb_grade g where s.stu_id=g.stu_id and g.course_id = '2';
-- 检索选修课程名为“数据结构”的学生 学号与姓名
select s.stu_id,s.stu_name from tb_student s,tb_grade g,tb_course c where s.stu_id = g.stu_id and c.course_id = g.course_id and c.course_name = '数据结构';
-- 检索选修课程号为2或4的学生学号;
select stu_id from tb_grade where course_id in(2,4);
select stu_id from tb_grade where course_id=2 or course_id=4;
-- 检索至少选修课程号为2和4的学生学号;
select a.stu_id from tb_grade a,tb_grade b where a.stu_id=b.stu_id and a.course_id=2 and b.course_id=4;
select stu_id from tb_grade where course_id=2 or course_id=4 group by stu_id having count(*)>=2;
-- 检索不学2课的学生姓名和年龄;
select stu_name,stu_age from tb_student where stu_id not in (select stu_id from tb_grade where course_id=2);
-- 检索学习全部课程的学生姓名
select stu_name from tb_student where not exists
(select * from tb_course where not exists
(select * from tb_grade where tb_grade.stu_id=tb_student.stu_id and tb_grade.course_id=tb_course.course_id)
);
select stu_name from tb_student where stu_id in (select stu_id from tb_grade group by stu_id having count(*) = (select count(course_id) from tb_course));
-- 查所有年龄在20岁以下的学生姓名及年龄。
select stu_name,stu_age from tb_student where stu_age<20;
-- 查考试成绩有不及格的学生的学号
select distinct stu_id from tb_grade where score<60;
-- 查所年龄在20至23岁之间的学生姓名、系别及年龄。
select stu_name,stu_dept,stu_age from tb_student where stu_age between 20 and 23;
-- 查计算机系、数学系、信息系的学生姓名、性别。
select stu_name,stu_age from tb_student where stu_dept in ('计算机系', '外语系', '数学系');
-- 查既不是计算机系、数学系、又不是信息系的学生姓名、性别
select stu_name,stu_age from tb_student where stu_dept not in ('计算机系', '外语系', '数学系');
-- 查所有姓“大”的学生的姓名、学号和性别。
select stu_name,stu_id,stu_sex from tb_student where stu_name like '大%';
-- 查姓“大”且全名为3个汉字的学生姓名。
select stu_name from tb_student where stu_name like '大__';
-- 查所有不姓“大”的学生的姓名。
select stu_name from tb_student where stu_name not like '大%';
-- 查数据结构课程的课程号。
select course_id from tb_course where course_name = '数据结构';
-- 查计算机系22岁以下的学生的学号和姓名
select stu_id,stu_name from tb_student where stu_dept = '计算机系' and stu_age<22;
-- 查询选修了3课程的学生的学号和成绩,其结果按分数的降序排列。
select stu_id,score from tb_grade where course_id =3 order by score desc;
-- 查询学生总人数
select count(*) from tb_student;
-- 计算选修了1课程的学生平均成绩
select avg(score) from tb_grade where course_id=1;
-- 查询学习3课程的学生最高分数
select max(score) from tb_grade where course_id=3;
-- 查询各个课程号与相应的选课人数。
select course_id ,count(course_id) as '选课人数' from tb_grade group by course_id;
-- 查询计算机系选修了3门以上课程的学生的学号
select s.stu_id from tb_student s,tb_grade g where s.stu_id = g.stu_id and stu_dept = '计算机系' group by s.stu_id having count(*)>2;
-- 求学生表tb_student中男同学的每一年龄组有多少人?要求查询结果按人数升序排列,人数相同按年龄降序排列
select stu_age,count(stu_age) as '人数' from tb_student where stu_sex = '0' group by stu_age order by '人数' asc,stu_age desc;
-- 查询选修了C2课程且成绩在30分以上的所有学生
select * from tb_student s,tb_grade g where s.stu_id = g.stu_id and course_id =2 and score > 30;
-- 查询每个学生选修的课程名及其成绩。
select s.stu_name,c.course_name,g.score from tb_student s,tb_grade g,tb_course c where s.stu_id = g.stu_id and g.course_id=c.course_id order by s.stu_name;
-- 查询与“轰炸机”在同一个系学习的学生学号、姓名和系别。
select stu_id,stu_name,stu_dept from tb_student where stu_dept =(select stu_dept from tb_student where stu_name = '轰炸机');
-- 查询选修课程名为“数据结构”的学生学号和姓名
select s.stu_id,s.stu_name from tb_student s,tb_course c,tb_grade g where s.stu_id=g.stu_id and g.course_id=c.course_id and c.course_name='数据结构';
select s.stu_id,s.stu_name from tb_student s join tb_grade g on s.stu_id = g.stu_id join tb_course c on g.course_id = c.course_id where c.course_name = '数据结构';
-- 查询重复的学生记录
select * from tb_student where stu_id in (select stu_id from tb_student group by stu_id having count(*)>1);
-- 删除重复的学生记录
delete from tb_student where stu_id in (select stu_id from tb_student group by stu_id having count(*)>1) ;
-- 删除重复的记录,保留id较大的一条
delete from tb_student where stu_id not in (select max(stu_id) from tb_student group by stu_id);
常用的mysql语句的更多相关文章
- 常用的MySQL语句写法
常用的MySQL语句写法 MySQL的SQL语句写法,除了那些基本的之外,还有一些也算比较常用的,这里记录下来,以便以后查找. 好记性不如烂笔头,这话说的太有道理了,一段时间不写它,还真容易忘 ...
- 一些常用的mysql语句实例-以后照写2
specification: 规范, 规格, 产品规范, 产品规格, 技术规范, 产品说明书. 如: create_specification, 等等 创建数据库时, 显式地指明, 字符集: crea ...
- 一些常用的mysql语句实例-以后照写
create database blog; create table blog_user ( user_Name char(15) not null check(user_Name !=''), us ...
- MySQL语句和命令大全
前言 这里记录的是这两年学习工作过程中遇到的常用的 MySQL 语句和命令,部分是网上收集来的,出处已经不记得了,这里先谢过这些大佬.本文包括常见 SQL 语句,还有部分运维语句和命令,没有做详细的说 ...
- MySQL 常用的sql语句小结(待续)
mysql 常用的sql语句 1.查看数据库各个表中的记录数 USE information_schema; SELECT table_name,table_rows FROM tables WHER ...
- 【PHP基础】常用mySQL语句以及WampServer2.2设置数据库默认编码
一.WampServer2.2设置数据库默认编码(此部分转自http://www.cnsecer.com/5984.html) wamp下MySQL的默认编码是Latin1,不支持中文,要支持中文的话 ...
- ios开发中常用的也是最基本的mysql语句
MySQL常用基本SQL语句小结——(转) sql语言不经常用,每次再用都隔好久的时间,以致最基本的都想不起来了,只好转一篇记着= - 找的时候方便 SQL分类: DDL—数据定义语言(CREATE ...
- MySQL的一些常用的SQL语句整理
安装MySQL有两种的方式,一种是解压版本,但是需要配置环境变量,相对而言比较麻烦.所以我们一般采取第二种方式,那就是到MySQL的官网上下载安装版.这样就会省去很多麻烦,在这里我就不再详细的介绍具体 ...
- (转载)常用的Mysql数据库操作语句大全
打开CMD,进入数据库命令:mysql -hlocalhost -uroot -p 退出数据库:exit 用户管理: 1.新建用户: >CREATE USER name IDENTIFIED B ...
随机推荐
- LINK : fatal error LNK1123: failure during conversion to COFF: file invalid or corrupt
LINK : fatal error LNK1123: failure during conversion to COFF: file invalid or corrupt 解决方法: 项目--> ...
- discuz 安装 文件不可写
discuz安装过程中,系统会自动检查环境及文件目录权限,当出现目录不可写: 这个时候只需要用ftp修改文件夹权限就可以了
- MySQL-group-replication 配置
MySQL-Group-Replication 是mysql-5.7.17版本开发出来的新特性:它在master-slave 之间实现了强一致性, 但是就目前来说主要是性能不太好. [1]确定当前的m ...
- Canvas转换为Blob对象并使用Ajax发送
Canvas转换为Blob对象并使用Ajax发送 转换为Blob对象后,可以使用Ajax上传图像文件. 先从canvas获取dataurl, 再将dataurl转换为Blob对象 var dataur ...
- unity, particle play once and destroy
粒子播放一次后销毁: //ref: http://answers.unity3d.com/questions/219609/auto-destroying-particle-system ...
- Jetty - Container源码分析
1. 描述 Container提供管理bean的能力. 基于Jetty-9.4.8.v20171121. 1.1 API public interface Container { // 增加一个bea ...
- 多线程-Thread、Runnable、Callbale、Future
Thread:java使用Thread代表线程,所有的线程对象都必须是Thread类或其子类,可以通过继承Thread类来创建并启动多线程. package org.github.lujiango; ...
- [elk]kibana搜索绘图
kibana绘图 好些日志入库了需要分析. 1,首先分析top10 url的table和柱状分布 2,其次想着分析下404所占比例,以及404所对应的url table. 3,最后分析一下请求总数. ...
- 最大子矩阵 hdu1081
To The Max Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total ...
- 如何使用VMWare共享Win7中的文件夹,对应Linux中的哪个目录下面?
访问 /mnt/hgfs/你设置的共享名,如果找不到这个hgfs这个文件夹,那说明你还没正确安装好 install VMware tools