Mysql 使用命令及 sql 语句示例

2016-10-21  本文已影响0人  风一样的我

1.1前言

Mysql是数据库开发使用的主要平台之一。sql的学习掌握与使用是数据库开发的基础,此处展示详细sql语句的写法,及各种功能下的sql语句。

基本命令使用是这样的。当然sql语句也可在其他平台使用。此处不多说明;

SQL语句详细如下:

1.2一、数据库操作

创建一个名称为mydb1的数据库

create database mydb1;

showdatabases;

创建一个使用utf-8字符集的mydb2数据库。

create database mydb2 charactersetutf8;

创建一个使用utf-8字符集,并带校对规则的mydb3数据库。

create database mydb3 charactersetutf8 collate utf8_general_ci;

查看前面创建的mydb2数据库的定义信息

showcreate database mydb2;

删除前面创建的mydb1数据库

drop database mydb1;

查看服务器中的数据库,并把其中某一个库的字符集修改为gb2312;

alter database mydb2 charactersetgb2312;

showcreate database mydb2;

使用当前数据库mydb1,即想对当前数据库进行操作之前使用的命令

use mydb1;

1.3二、表的操作

1>表的创建演示

创建一个员工表

use mydb2;

create table employee

(

idint,

name varchar(40),

sex varchar(4),

birthday date,

entry_date date,

job varchar(40),

salary decimal(8,2),

resume text

);

showtables;查看库的所有表(查看库里的表要先打开库)

showcreate table employee;查看表的创建细节

descemployee;看表结构

2>对表的基本操作:增、删、改、查

在上面员工表的基本上增加一个image列。

altertableemployee add image varchar(20);

修改job列,使其长度为60。

altertableemployee modify job varchar(60);

删除sex列

altertableemployee drop sex;

表名改为user。

renametableemployee to user;

修改表的字符集为utf-8

altertableuser character set utf8;

列名name修改为username

altertabletest changecolumn address address1 varchar(30)

删除表

droptableuser;

3>增加、插入记录的sql语句详细

使用insert语句向表中插入三个员工的信息。

renametable user to employee;

insert into employee(id,username,birthday,entry_date,job,salary,resume)values(1,'aaa','1980-09-09','1980-09-09','bbb',90,'aaaaa');

select* from employee;

插入数据的细节1

insert into employeevalues(1,'aaa','1980-09-09','1980-09-09','bbb',90,'aaaaa');

插入数据的细节2

insert into employeevalues('1','aaa','1980-09-09','1980-09-09','bbb','90','aaaaa');

插入数据的细节3(插入中文)

要告诉mysql客户采用gb2312编码

show variables like'chara%';

set character_set_client=gb2312;

insert into employee(id,username)values('3','张三');

要想查看时不乱码

show variables like'chara%';

set character_set_results=gb2312;

select* from employee;

4>删除记录的sql语句详细

删除表中名称为’zs’的记录。

deletefromemployee where username='bbb';

删除表中所有记录。

deletefromemployee;

使用truncate删除表中记录。

truncate table employee;

5>修改记录的sql语句详细

将所有员工薪水修改为5000元。

update employeesetsalary=5000;

将姓名为’bbb’的员工薪水修改为3000元。

update employeesetsalary=3000whereusername='bbb';

将姓名为’bbb的员工薪水修改为4000元,job改为ccc。

update employeesetsalary=4000,job='ccc'whereusername='bbb';

将bbb的薪水在原有基础上增加1000元。

update employeesetsalary=salary+1000whereusername='bbb';

更新要注意的问题

update employeesetusername='ccc',salary=9000,birthday='1980-09-09',.....................

updatewhereid=1;

6>查询记录的sql语句详细

查询表中所有学生的信息。

select*fromstudent;

查询表中所有学生的姓名和对应的英语成绩。

selectname,englishfromstudent;

过滤表中重复的英语数据。

selectdistinctenglishfromstudent;

在所有学生总分上加10分特长分。

selectname,(chinese+english+math)+10fromstudent;

统计每个学生的总分。

selectname,(chinese+english+math)fromstudent;

关于排序

将对象成绩过去

统计大于该成绩的人数即可

统计数学成绩大于90的学生有多少个?

selectcount(*)fromstudentwheremath>80;

使用别名表示学生分数。

selectname as姓名,(chinese+english+math)+10as总分fromstudent;

selectname姓名,(chinese+english+math)+10总分fromstudent;

查询姓名为wu的学生成绩

select*fromstudentwherename='王五';

查询英语成绩大于90分的同学

select*fromstudentwhereenglish>'90';

查询总分大于200分的所有同学

selectnamefromstudentwhere(chinese+english+math)>200;

查询英语分数在80-90之间的同学。

selectnamefromstudentwhereenglish>80andenglish<90;

selectnamefromstudentwhereenglish between80and90;==selectnamefromstudentwhereenglish>=80andenglish<=90;

查询数学分数为89,90,91的同学。

select*fromstudentwheremath in(89,90,91);

查询所有姓李的学生成绩。

select*fromstudentwherename like '李%';

select*fromstudentwherename like '李_';

查询数学分>80,语文分>80的同学。

select*fromstudentwheremath>80andchinese>80;

分页查询,查询从第8条记录开始的3条记录;即:第8、9、10三条记录

intfrom=2;

intend =10;

String sql ="select * from student limit "+from+","+end;//字符串类型的语句

select*fromstudent limit8,3;

1.4三、对数据记录的操作

查询统计排序等相关处理的sql语句

对数学成绩排序后输出。

selectname,mathfromstudent orderbymath;

对总分排序后输出,然后再按从高到低的顺序输出

selectname姓名,(chinese+english+math)总分fromstudent orderby(chinese+english+math)desc;

selectname姓名,(chinese+english+math)总分fromstudent orderby总分desc;

对姓李的学生成绩排序输出

select*fromstudentwherename like '李%' orderby(chinese+english+math)desc;

统计一个班级共有多少学生?

selectcount(name)fromstudent;

selectcount(*)fromstudent;

统计数学成绩大于90的学生有多少个?

selectcount(*)fromstudentwheremath>80;

统计总分大于250的人数有多少?

selectcount(*)fromstudentwhere(chinese+english+math)>250;

关于count的函数的细节(count只统有值的行)

统计一个班级数学总成绩?

selectsum(math)fromstudent;

统计一个班级语文、英语、数学各科的总成绩

selectsum(chinese),sum(english),sum(math)fromstudent;

统计一个班级语文、英语、数学的成绩总和

selectsum(chinese+english+math)fromstudent;

统计一个班级语文成绩平均分

selectsum(chinese)/count(*)fromstudent;

统计一个班级语文成绩平均分

selectavg(chinese)fromstudent;

求一个班级总分平均分

selectavg(chinese+math+english)fromstudent;

求班级最高分和最低分

selectmax(chinese+math+english),min(chinese+math+english)fromstudent;

对订单表中商品归类后,显示每一类商品的总价

selectproduct,sum(price)fromordersgroupbyproduct;

查询购买了几类商品,并且每类总价大于100的商品

selectproductfromordersgroupbyproduct havingsum(price)>100;

按某一属性对记录进行排序

select*fromstudent orderbygradedesc;

希望能对你有所帮助!

上一篇下一篇

猜你喜欢

热点阅读