用户语言分布
select language,count(*) from upload_basic group by language
insert into emp values(3,'吴刚','男','','')
char 定长字符
varchar 变长字符
double(6,2) 9999.99
# 6 表示整数+小数的位数
# 2 表示小数的位数
#删除表
#语法
drop table 表名
#删除emp表
drop table emp
#创建表的语法:
create table 表名
(
字段名1 数据类型,
字段名2 数据类型,
字段名3 数据类型,
字段名4 数据类型
# 最后一个字段后面没有,
)
create table employees
(
employee_id int, #员工编号
first_name varchar(12), #员工姓
last_name varchar(12), #员工名
job varchar(30), #工种
salary double(8,2), #月薪
comm double(8,2), #提成
hiredate date, #雇佣日期
department_id int #部门编号
)
create database db0505;
use db0505;
create table test1(id int,name varchar(12))
desc test1;
select * FROM EMPLOYEES
#select 语句的语法规则
#第一种方式 select * from table_name
# 查询所有的字段
#字段的显示顺序和创建表时的顺序一致
#第二种方式 select 字段1,字段2,字段3 from table_name(在开发应用的)
# 查询select后面显示的字段列表
#字段的显示顺序和select后面显示的字段列表一致
SELECT first_name,comm,hiredate from employees
select comm,hiredate,first_name from employees
#对NUMBER类型数据可以使用算数操作符创建表达式(+ - * /)
#输出员工信息和月收入
select employee_id,first_name,last_name,job,salary,salary+10
from employees
select employee_id,first_name,last_name,job,salary,salary+comm
from employees
#输出员工的年薪
select employee_id,first_name,last_name,job,salary*12+100
from employees
select employee_id,first_name,last_name,job,salary*(12+100)
from employees
#定义字段的别名
语法1: 字段名 字段别名
语法2:字段名 AS 字段别名
#输出员工的id,姓名,月薪。年薪
select employee_id,first_name,last_name,salary 月薪,salary*12 "年薪" from employees
select employee_id,first_name,last_name,salary 月薪,salary*12 AS "年薪" from employees
select employee_id,"First name",last_name,salary 月薪,salary*12 "年 薪 " from employees
#带限制条件的查询
#使用where子句限定返回的记录
select * from tableName where condition
#查询10号部门的所有员工
select employee_id,first_name,last_name,department_id from employees where department_id=10
#查询员工的first_name等于张的员工信息
select * from employees where first_name='张'
#在条件中使用比较运算符
#查询工资>4000的所有员工
select * from employees where salary>4000
#使用between and 运算符(包含开始和结果)
#查询工资在4200-------6000之间的员工信息
select * from employees where salary between 4200 and 6000
select * from employees where salary >=4200 and salary<=6000
#使用IN运算符获得匹配列表值的记录,在IN操作符后跟着一个值的列表,可以是应用日期,字符串数据类型
#查询员工id是 2 3 4 的员工信息
select * from employees where employee_id in(2,3,4)
#查询工种是员工和办公室主任的员工信息
select * from employees where job in('员工','办公室主任')
#使用like运算符执行通配查询 ,
#(%)可表示零或多个字符
#(_)可表示一个字符
#查询员工的姓名中含有字母A的员工信息
select * from employees where first_name like '%A%'
#查询员工的姓名中以字母A开头的员工信息
select * from employees where first_name like 'A%'
#查询员工的姓名中第三个字符以字母A开头的员工信息
select * from employees where first_name like '__A%'
#使用or运算符
#查询姓名=张 或 工资>5000的员工信息
select * from employees where first_name='张' or salary>5000
#使用and运算符
#查询姓名=张 或 工资>5000的员工信息
select * from employees where first_name='张' and salary>5000
#使用not运算符
#查询工种不是人力资源经理和员工的员工信息
select * from employees where job not in('人力资源经理','员工')
# 对数据的排序
#使用order by 子句将记录排序
# asc :升序,缺省
# desc :降序
#查询所有的员工信息,按员工id降序排序
select * from employees order by employee_id desc
#查询所有的员工信息,按员工id升序排序
select * from employees order by employee_id
#查询所有的员工信息,按工资升序排序
#使用列的别名排序
#查询员工id 姓名 工资,年薪,并按年薪降序排序
select employee_id,first_name,last_name salary,salary*12 年薪
from employees order by 年薪 desc
#在多列上进行排序,要为每个列设置排序方式
#查询员工id 姓名 工资,并按部门降序排序,工资升序
select employee_id,first_name,last_name,department_id,salary
from employees order by department_id desc,salary asc
#带查询条件的排序
#查询员工id 姓名 工资,部门 并且按部门=10 并按工资的升序排序
#语法:select * from table_name where condition order by 排序的字段
select employee_id,first_name,last_name,department_id,salary
from employees
where department_id=10
order by salary asc
#几个分组函数
count()计算共有多少条记录
max()计算最大值
min()计算最小值
avg()计算平均值
sum()计算总和
#查询共有多少员? *代表表中的所有字段
select count(*) from employees
select count(*) from employees where department_id=10
select max(salary) from employees
select min(salary) from employees
select avg(salary) from employees
#查询公司员工工资的总和
select sum(salary) from employees
# 对数据库的操作
#往表中插入数据
#语法 insert into tableName values(字段1值,字段2值,字段3值。。。 所有字段的值)
#1 values后面是值的列表,也就是要插入到列表中的各个字段的值。如果前面列出了字段列表。
#那么列表必须与字段列表一一对应,包括个数,数据类型,位置的对应。
#如果忽略了字段列表,那么列表必须与表中字段一一对应(创建表时字段的顺序)
insert into employees values(23,'dd','23','企划部',400,345,'2001-02-02',40)
#2 插入部门数据
#insert into tableName(字段1,字段2,字段3。。。) values(字段1值,字段2值,字段3值。。。)
insert into employees(first_name,last_name,salary) values('A','e',8900)
#3 插入部门数据 顺序和创建表的顺序不一致
insert into employees(salary,first_name,last_name) values(4900,'r','9')
#auto_increment 自增从1开始步长为1
#主键 非空且唯一
create table test(
id int auto_increment primary key,
name varchar(40),
sex char(4))
#写法一
insert into test(name,sex) values('a','男')
#写法二
insert into test(id,name,sex) values(null,'a','男')
#更新表中的记录
#update
#语法:update tableName set 字段1=字段1值,字段2=字段2值...
# where 字段n=字段n值
#更新test表中name字段的值为k
update test set name='K',sex='女'
#更新表中部分记录
update employees set first_name='西门',last_name='公子'
where employee_id=4
#删除数据delete
#删除表中的全部数据
delete from test
delete from employees where employee_id=1
select language,count(*) from upload_basic group by language
insert into emp values(3,'吴刚','男','','')
char 定长字符
varchar 变长字符
double(6,2) 9999.99
# 6 表示整数+小数的位数
# 2 表示小数的位数
#删除表
#语法
drop table 表名
#删除emp表
drop table emp
#创建表的语法:
create table 表名
(
字段名1 数据类型,
字段名2 数据类型,
字段名3 数据类型,
字段名4 数据类型
# 最后一个字段后面没有,
)
create table employees
(
employee_id int, #员工编号
first_name varchar(12), #员工姓
last_name varchar(12), #员工名
job varchar(30), #工种
salary double(8,2), #月薪
comm double(8,2), #提成
hiredate date, #雇佣日期
department_id int #部门编号
)
create database db0505;
use db0505;
create table test1(id int,name varchar(12))
desc test1;
select * FROM EMPLOYEES
#select 语句的语法规则
#第一种方式 select * from table_name
# 查询所有的字段
#字段的显示顺序和创建表时的顺序一致
#第二种方式 select 字段1,字段2,字段3 from table_name(在开发应用的)
# 查询select后面显示的字段列表
#字段的显示顺序和select后面显示的字段列表一致
SELECT first_name,comm,hiredate from employees
select comm,hiredate,first_name from employees
#对NUMBER类型数据可以使用算数操作符创建表达式(+ - * /)
#输出员工信息和月收入
select employee_id,first_name,last_name,job,salary,salary+10
from employees
select employee_id,first_name,last_name,job,salary,salary+comm
from employees
#输出员工的年薪
select employee_id,first_name,last_name,job,salary*12+100
from employees
select employee_id,first_name,last_name,job,salary*(12+100)
from employees
#定义字段的别名
语法1: 字段名 字段别名
语法2:字段名 AS 字段别名
#输出员工的id,姓名,月薪。年薪
select employee_id,first_name,last_name,salary 月薪,salary*12 "年薪" from employees
select employee_id,first_name,last_name,salary 月薪,salary*12 AS "年薪" from employees
select employee_id,"First name",last_name,salary 月薪,salary*12 "年 薪 " from employees
#带限制条件的查询
#使用where子句限定返回的记录
select * from tableName where condition
#查询10号部门的所有员工
select employee_id,first_name,last_name,department_id from employees where department_id=10
#查询员工的first_name等于张的员工信息
select * from employees where first_name='张'
#在条件中使用比较运算符
#查询工资>4000的所有员工
select * from employees where salary>4000
#使用between and 运算符(包含开始和结果)
#查询工资在4200-------6000之间的员工信息
select * from employees where salary between 4200 and 6000
select * from employees where salary >=4200 and salary<=6000
#使用IN运算符获得匹配列表值的记录,在IN操作符后跟着一个值的列表,可以是应用日期,字符串数据类型
#查询员工id是 2 3 4 的员工信息
select * from employees where employee_id in(2,3,4)
#查询工种是员工和办公室主任的员工信息
select * from employees where job in('员工','办公室主任')
#使用like运算符执行通配查询 ,
#(%)可表示零或多个字符
#(_)可表示一个字符
#查询员工的姓名中含有字母A的员工信息
select * from employees where first_name like '%A%'
#查询员工的姓名中以字母A开头的员工信息
select * from employees where first_name like 'A%'
#查询员工的姓名中第三个字符以字母A开头的员工信息
select * from employees where first_name like '__A%'
#使用or运算符
#查询姓名=张 或 工资>5000的员工信息
select * from employees where first_name='张' or salary>5000
#使用and运算符
#查询姓名=张 或 工资>5000的员工信息
select * from employees where first_name='张' and salary>5000
#使用not运算符
#查询工种不是人力资源经理和员工的员工信息
select * from employees where job not in('人力资源经理','员工')
# 对数据的排序
#使用order by 子句将记录排序
# asc :升序,缺省
# desc :降序
#查询所有的员工信息,按员工id降序排序
select * from employees order by employee_id desc
#查询所有的员工信息,按员工id升序排序
select * from employees order by employee_id
#查询所有的员工信息,按工资升序排序
#使用列的别名排序
#查询员工id 姓名 工资,年薪,并按年薪降序排序
select employee_id,first_name,last_name salary,salary*12 年薪
from employees order by 年薪 desc
#在多列上进行排序,要为每个列设置排序方式
#查询员工id 姓名 工资,并按部门降序排序,工资升序
select employee_id,first_name,last_name,department_id,salary
from employees order by department_id desc,salary asc
#带查询条件的排序
#查询员工id 姓名 工资,部门 并且按部门=10 并按工资的升序排序
#语法:select * from table_name where condition order by 排序的字段
select employee_id,first_name,last_name,department_id,salary
from employees
where department_id=10
order by salary asc
#几个分组函数
count()计算共有多少条记录
max()计算最大值
min()计算最小值
avg()计算平均值
sum()计算总和
#查询共有多少员? *代表表中的所有字段
select count(*) from employees
select count(*) from employees where department_id=10
select max(salary) from employees
select min(salary) from employees
select avg(salary) from employees
#查询公司员工工资的总和
select sum(salary) from employees
# 对数据库的操作
#往表中插入数据
#语法 insert into tableName values(字段1值,字段2值,字段3值。。。 所有字段的值)
#1 values后面是值的列表,也就是要插入到列表中的各个字段的值。如果前面列出了字段列表。
#那么列表必须与字段列表一一对应,包括个数,数据类型,位置的对应。
#如果忽略了字段列表,那么列表必须与表中字段一一对应(创建表时字段的顺序)
insert into employees values(23,'dd','23','企划部',400,345,'2001-02-02',40)
#2 插入部门数据
#insert into tableName(字段1,字段2,字段3。。。) values(字段1值,字段2值,字段3值。。。)
insert into employees(first_name,last_name,salary) values('A','e',8900)
#3 插入部门数据 顺序和创建表的顺序不一致
insert into employees(salary,first_name,last_name) values(4900,'r','9')
#auto_increment 自增从1开始步长为1
#主键 非空且唯一
create table test(
id int auto_increment primary key,
name varchar(40),
sex char(4))
#写法一
insert into test(name,sex) values('a','男')
#写法二
insert into test(id,name,sex) values(null,'a','男')
#更新表中的记录
#update
#语法:update tableName set 字段1=字段1值,字段2=字段2值...
# where 字段n=字段n值
#更新test表中name字段的值为k
update test set name='K',sex='女'
#更新表中部分记录
update employees set first_name='西门',last_name='公子'
where employee_id=4
#删除数据delete
#删除表中的全部数据
delete from test
delete from employees where employee_id=1