mysql语句入门
show databases; 展示可以用的数据库;
use employees; 进入数据库;
show tables; 展示可用的列表。
show columns
from employees; 展示表的列。
select distinct last_name
from employees
order by last_name
limit 15; 检索名字 按升序 只显示不同的列(distinct)
select last_name
from employees
order by last_name desc 检索名字 以降序显示(desc) 升序是asc 因为系统默认不加参数是升序 所以用处不是特别大。
select *
from employees; 查询所有行和列;
select *
from employees
limit 5; 查询表的所有数据,但是只显示五行、
select emp_no,name,birth_date
from employees
limit 5; 检索多个列 并且只显示5行。
select employees.emp_no
from employees.employees
limit 5; 完全指定检索。直接从employees 里面指定表 和表里面的列。
select emp_no,last_name
from employees
where emp_no = 11002; 根据指定的条件搜索。
select emp_no,last_name
from employees
where last_name = 'zouxiaoxiao'; 检索单个非数值的字符,要加 ' 引号;
select emp_no,last_name
from employees
where emp_no < 10004; 检索条件为某个范围。
{emp_no小于10004}
select emp_no,last_name
from employees
where emp_no != 10004;
{emp_no 不等于10004 也可以用 emp _no <> 10004 来表示}
select emp_no,last_name
from employees
where emp_no between 10002 and 10009; 检索某个区域、
select emp_no,last_name
from employees
where emp_no is null; 检索emp_no 为空值的数据、
select emp_no,last_name
from employees
where emp_no =1002 and last_name = 'xiao' ; and 的用法 条件同时成立;
select emp_no,last_name
from employees
where emp_no =1002 or last_name = 'xiao'; or 的用法 条件有一个成立;
select emp_no,last_name
from employees
where emp_no in (1002,1003); 检索在in 后面的指定属性范围的数据 与or 类似
select emp_no,last_name
from employees
where emp_no not in (1002,1004); 加not 表示不在这一范围内的数据;
select emp_no,last_name
from employees
where last_name like 'zou%'; 检索条件是以zou 开头的所有数据 %是一个通配符;
'%xiao%' 检索条件是属性中间含有这个xiao的字符的;
'x%x' 检索条件是属性两头是x 的所有数据;
select emp_no,last_name
from employees
where emp_no like '_ou'; 下划线_也是通配符 但是只 匹配单个字符;
'%ou' 不仅仅是单个字符 也可以是多个字符;
select emp_no,last_name
from employees
where emp_no regexp 'xou'; regexp 后面跟的内容则是正则表达式,表示含xou文本的所有属性。
select emp_no,last_name
from employees
where emp_no regexp '10002|10004' ; regexp 后面跟的正则表达示 的意思是 匹配文本含10002或者10004的所有属性;
select emp_no,last_name
from employees
where emp_no regexp '10002|10004|10006' ; ' | ' 可以多个一起使用
select emp_no,last_name
from employees
where last_name regexp [xzi]xiao; [ ] 中间的xzi表示匹配的是x或z或i 类似or
'x|z|i'
[^xzi] [^xzi] 表示 非xzi的数据
[0123456789] = [0-9] 可以规范一个范围
[a-z] 表示任何一个字母
select emp_no,last_name
from employees
where emp_no regexp '//-'; 查找特殊字符如“. - ”等等 要在前面加\\ 反斜线
select birth_date,last_name
from employees
where birth_date regexp '1952-04-1[1-4]';
select birth_date,last_name
from employees
where birth_date regexp '[[:digit:]]{5}' 等于'[0-9][0-9][0-9][0-9][0-9]'
select concat (birth_date,' (',last_name,') ')
from employees
limit 10;
创建过程:
create database test1; 创建一个数据库;
drop database test1; 删除一个数据库;
create table emp
(ename varchar(10);hiredate date,sal decimal (10,2),deptno int(2) ); 创建表,并添加属性、各个列。
desc emp; 查看表定义=======show columns from emp;
alter table emp modify ename varchar(20); 修改属性;
alter table emp add column age int(3); 增加列,
alter table emp drop column age; 删除列;
alter table emp change age age1 int(4); 更改列名 和属性、
alter table emp add column birth date after ename; 增加列,并放在特定位置
alter table emp modify age1 int(4) first; 移动列。(列名后加属性)
alter table emp rename emp1; 更改表名
insert into emp (ename,birthdate,asl)
values (' ',' ',' '); 在emp 中加入记录
insert into emp values(a,'a1'),(b,'b1'); 同时插入多条记录。
update emp set sal=9999 where ename='xiaoqun'; 更新记录;where 条件;
select dept_no,count(1)
from dept_emp
group by dept_no; 分类聚合 分类计算各部分的总和;
select dept_no,count(1)
from dept_emp
group by dept_no with rollup; 分类计算各个总和的基础上,还计算总和,
select dept_no,count(1)
from dept_emp
group by dept_no
having count(1)>1000; 查找各部门人数的总和大于1000的各个部门。
select sum(salary),max(salary),min(salary)
from salaries; 计算总和 最大 最小。
select last_name,dept_no
from employees,dept_emp
where employees.emp_no=dept_emp.emp_no
limit 10; 内连接查询。
select emp_no from employees
union all
select emp_no from dept_emp; union all 的使用 显示两个结果的集合
select emp_no from employees
union
select emp_no from dept_emp; union 的使用 显示两个结果集合且去掉重复项 类似 distinct
重要知识点:
~] # mysql -uroot
root 用户的mysql登录方式 '-uroot'可以不加 因为默认是root用户
mysql 中创建数据库用户并授权:
mysql> grant select,insert on employees.* to 'xiaozou'@'localhost' identified by '112233';
#grant 授权的意思 identfied 被识别的意思;
普通用户的登录命令 ~]# mysql -uxiaozou -p112233
去除用户的select和insert的权利:
mysql> revoke insert,select on employees.* from'xiaozou'@'localhost'
#revoke 撤回的意思 (从什么中撤回某种或几种权利);
如有错误,望费心指出。 感激涕零。