为了方便学习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语句的更多相关文章

  1. 常用的MySQL语句写法

    常用的MySQL语句写法 MySQL的SQL语句写法,除了那些基本的之外,还有一些也算比较常用的,这里记录下来,以便以后查找.     好记性不如烂笔头,这话说的太有道理了,一段时间不写它,还真容易忘 ...

  2. 一些常用的mysql语句实例-以后照写2

    specification: 规范, 规格, 产品规范, 产品规格, 技术规范, 产品说明书. 如: create_specification, 等等 创建数据库时, 显式地指明, 字符集: crea ...

  3. 一些常用的mysql语句实例-以后照写

    create database blog; create table blog_user ( user_Name char(15) not null check(user_Name !=''), us ...

  4. MySQL语句和命令大全

    前言 这里记录的是这两年学习工作过程中遇到的常用的 MySQL 语句和命令,部分是网上收集来的,出处已经不记得了,这里先谢过这些大佬.本文包括常见 SQL 语句,还有部分运维语句和命令,没有做详细的说 ...

  5. MySQL 常用的sql语句小结(待续)

    mysql 常用的sql语句 1.查看数据库各个表中的记录数 USE information_schema; SELECT table_name,table_rows FROM tables WHER ...

  6. 【PHP基础】常用mySQL语句以及WampServer2.2设置数据库默认编码

    一.WampServer2.2设置数据库默认编码(此部分转自http://www.cnsecer.com/5984.html) wamp下MySQL的默认编码是Latin1,不支持中文,要支持中文的话 ...

  7. ios开发中常用的也是最基本的mysql语句

    MySQL常用基本SQL语句小结——(转) sql语言不经常用,每次再用都隔好久的时间,以致最基本的都想不起来了,只好转一篇记着= - 找的时候方便 SQL分类:  DDL—数据定义语言(CREATE ...

  8. MySQL的一些常用的SQL语句整理

    安装MySQL有两种的方式,一种是解压版本,但是需要配置环境变量,相对而言比较麻烦.所以我们一般采取第二种方式,那就是到MySQL的官网上下载安装版.这样就会省去很多麻烦,在这里我就不再详细的介绍具体 ...

  9. (转载)常用的Mysql数据库操作语句大全

    打开CMD,进入数据库命令:mysql -hlocalhost -uroot -p 退出数据库:exit 用户管理: 1.新建用户: >CREATE USER name IDENTIFIED B ...

随机推荐

  1. 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 解决方法: 项目--> ...

  2. discuz 安装 文件不可写

    discuz安装过程中,系统会自动检查环境及文件目录权限,当出现目录不可写: 这个时候只需要用ftp修改文件夹权限就可以了

  3. MySQL-group-replication 配置

    MySQL-Group-Replication 是mysql-5.7.17版本开发出来的新特性:它在master-slave 之间实现了强一致性, 但是就目前来说主要是性能不太好. [1]确定当前的m ...

  4. Canvas转换为Blob对象并使用Ajax发送

    Canvas转换为Blob对象并使用Ajax发送 转换为Blob对象后,可以使用Ajax上传图像文件. 先从canvas获取dataurl, 再将dataurl转换为Blob对象 var dataur ...

  5. unity, particle play once and destroy

    粒子播放一次后销毁:        //ref: http://answers.unity3d.com/questions/219609/auto-destroying-particle-system ...

  6. Jetty - Container源码分析

    1. 描述 Container提供管理bean的能力. 基于Jetty-9.4.8.v20171121. 1.1 API public interface Container { // 增加一个bea ...

  7. 多线程-Thread、Runnable、Callbale、Future

    Thread:java使用Thread代表线程,所有的线程对象都必须是Thread类或其子类,可以通过继承Thread类来创建并启动多线程. package org.github.lujiango; ...

  8. [elk]kibana搜索绘图

    kibana绘图 好些日志入库了需要分析. 1,首先分析top10 url的table和柱状分布 2,其次想着分析下404所占比例,以及404所对应的url table. 3,最后分析一下请求总数. ...

  9. 最大子矩阵 hdu1081

    To The Max Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total ...

  10. 如何使用VMWare共享Win7中的文件夹,对应Linux中的哪个目录下面?

    访问 /mnt/hgfs/你设置的共享名,如果找不到这个hgfs这个文件夹,那说明你还没正确安装好 install VMware tools