mysql基本操作

来源:互联网 发布:淘宝首页店招 编辑:程序博客网 时间:2024/06/09 17:36

MDB:(增删减查)
mysql对于命令时不区分大小写的。

1,安装mysql:
yum install community-mysql-server -y

2,进入mysql
-> mysql

3,创建一个数据库
create database name;

4,创建一张表
create tabel tablename
(
    firstColname    VARCHAR(20),    #这是第一列的列名
    secColname     VARCHAR(10)    #这是第二列的列名 varchar是可变的数据类型
);

常用的数据类型:
char:单引号
character:单引号
dec(decjmal):不需要引号
datatime:必须用引号
time:必须用引号
timestamp:必须用引号
varchar:必用单引号
int(intecer):不用引号
blob:必用单引号
date:必用单引号


5,删除一张表
drop tablename

6,从表中搜索内容
select * from tableName    # *是返回表中所有列
where first_name = "Anne"; #搜索first_name列中值等于Anne的那一行

7,插入信息
insert into table_name
(row_name)
values
(row_values);

这里的插入信息后面先表明要插入那些列(即可以增加列),后面values表明这些列对应的值

8,插入新的列
insert into table_name
(row_name)

9,选定特定的列
select row1 row2 row3 from table_name
where fisrt_name = "Anne";

选定Anne那一行后,只是显示row123列,其他列的内容不显示。

10,结合查询
select row1 row2 from table_name
where type = 'plant"
and
rating = 10;

只有符合type=plant和rating=10这个两个条件的行才被选中。

select row1 row2 from table_name
where type = 'plant"
and
rating < 10;
只有符合type=plant和rating小于10这个两个条件的行才被选中。

运算符号:
=: 等于
<>:不等于
<:小于
>:大于
<=:小于等于
>=:大于等于

11,结合查询
select row1 row2 from table_name
where type = 'plant"
or
rating < 10;
符合type=plant和rating小于10这两个条件中的一项的的行被选中。


12,like
select *from table_name
where location like '%ac';

反向选择:
select *from table_name
where no location like '%ac'
and not
data_time like '%b';

这里的%是通配符,意思是查找再location列中所有以ca结尾的值

通配符:
% :表示任意数量的未知字符的替身
_ :表示一个未知字符的替身

13,between 范围选择
select drink_name from drink
where
calories between 30 and 60;  选择卡路里再30到60范围之间的饮料

反向选择:
select drink_name from drink
where no
calories between 30 and 60;

14,多项选择 in
select number from num_name
where
num in ('1','2','3','5');

选择num等于1235的行。
当然了也可以 not in

15,删除语句
delete from table_name
where
actives = 'dancing';

删除actives=dancing的行。

16,删除所有行
delete from table_name;

17,updata再原来的基础上进行更新操作
updata table_name
set type = 'glazed'
where type = 'plant glazed';

这就句话是先选中type=plant glazed的那一行,之后再把type的值修改位glazed

18,添加主键
alter table table_name
add column contract_id int not null auto_increment first,
add primary key(contract_id);

增加新的一列,名字为contract_id,并增加主键。
first关键字表示把这列放入到第一列。
类似的位置关键字还有:
second,third,fourth,fifth,before,after

去除主键列:
ALTER TABLE you_table DROP PRIMARY KEY;


19,change
可同时改变现有列的名称和数据类型。

ALTER TABLE project_list
CHANGE COLUMN number proj_list INT NOT NULL AUTO_INCREMENT
ADD PRIMARY KEY (proj_list);
修改列number名字为proj_list,设置为auto_increment,并设置为主键.

一次修改多行:
ALTER TABLE project_list
CHANGE COLUMN descriptionofproj  proj_desc VARCHAR(100),
CHANGE COLUMN contractoronjob con_name VARCHAR(30);
把descriptionofproj名字修改为proj_desc,并修改类型为VARCHAR(100)
把contractoronjob修改为con_nameg并修改类型为 VARCHAR(30)


20,modify
修改现有列的数据类型或位置。
ALTER TABLE project_list
MODIFY COLUMN proj_list VARCHAR(120);

21,add
再当前表中添加一列---可以自选类型。
ALTER TABLE project_list
ADD COLUMN con_id VARCHAR(100),
ADD COLUMN con_phn DATE,
ADD COLUMN est    DECJMAL(7,2);
增加新的列

22,drop
从表中删除某列。
ALTER TABLE project_list
DROP COLUMN start_date;


23,describe可以查看这个表的构成,会说明此列是否是主键,并且告诉我们每列存储的 数据类型

24,修改表的名字
alter table prjname
rename to prjname_list;

把表的名字从prjname修改为prjname_list.

25,RIGHT  LEFT
select right(location,2) from my_contacts;
从表my_contacts的location列的右端提取两个字符。

26,substring_index
select substring_index(location,',',1) from my_contacts;
substring_index选择列location中符号','之前的字符串。

27,字符串操作函数
1)substring(your_string,start_postion,length):从your_string中的start_postion提取length个字符。

select substring('san antonio,tx',5,3);

2) upper(string)可以把字符串转换为大写
3) lower(string)把整个字符串n转换为小写
4) ltrim(string) 清除字符左侧的多于空格,并返回字符串
5) rtrim(string) 清除字符右侧的多于空格并返回字符串
6) length(string) 返回字符串中的字符数量


28,case使用
UPDATA my_table
SET new_column =
case
WHEN column1 = somevalue1
   THEN newvalue1
WHEN column2 = somevalue2
   THEN newvalue2
ELSE newvalue3
END;



29,排序
select title,category
from move_table
where
title LIKE 'A%'
AND
category = 'family'
ORDER BY title;

30,计算SUM
 select SUM(sales)
FROM cookie_sales
WHERE first_name = 'Nicole';

计算first_name为Nicole的所有的sales的列的总和。

31,分组
SELECT first_name,SUM(sales)
FROM cookie_sales
GROUP BY first_name
ORDER BY SUM(sales) DESC;

32,平均数
SELECT first_name,AVG(sales)
FROM cookie_sales
GROUP BY first_name

33,最大值
SELECT first_name,MAX(sales)
FROM cookie_sales
GROUP BY first_name


34,最小值
SELECT first_name,MIN(sales)
FROM cookie_sales
GROUP BY first_name

35,计算数量
SELECT first_name,COUNT(sales)
FROM cookie_sales
GROUP BY first_name

37,去除重复
SELECT first_name,DISTINCT sales_date
FROM cookie_sales
GROUP BY first_name


38,限制最后打印的数量
SELECT first_name,SUM(sales)
FROM cookie_sales
GROUP BY first_name
ORDER BY SUM(sales) DESC
LIMIT 2;

最后只是打印前两条成绩。

39,限制打印的范围
SELECT first_name,SUM(sales)
FROM cookie_sales
GROUP BY first_name
ORDER BY SUM(sales) DESC
LIMIT 1 2;

这里的limit表示从第二个开始输出(mysql从0开始计数),输出两个记录。

40,修改密码
set password for 'root'@'localhost'=password('123456');
root :代表要修改密码的用户
localhost: 表示安装mysql的机器
123456 :表示为用户设置的密码


41,添加新用户
create user elsie
identified by '123456';

42,授予权限
grant select on table_name to elsie;
让elsie有对table_name的select权限。

43,特殊权限
grant select on table_name to elsie with grant option;
让elsie有对table_name的select权限,并且可以把权限赋与别人。


44,撤销权限
revoke select on table_name from elsie;
把elsie对table_name的select权限收回。

45,撤销特殊权限
revoke with grant option on select on table_name to elsie ;
让elsie仍有对table_name的select权限,但是不可以把权限赋与别人。

46,精确撤销权限
revoke select on table_name from elsie CASCADE;
elsie有把权限给别人,如果已经给了别人,那么此时去除权限时,哪个被elsie赋与select权限的账户的select权限也就没有了。

revoke select on table_name from elsie RESTRICT;
elsie有把权限给别人,如果已经给了别人,那么此时去除权限时,就会报错。

47,创建角色
create role data_entry;

48,赋与角色权限
grant select,insert on table to data_entry;

使用角色:
grant data_entry to doc;

卸除角色
drop role data_entry;

49,可以把角色授予他人的权限
grant data_entry to doc WITH ADMIN OPTION;
类似与with grant option;


50,撤销角色
revoke data_entry from doc CASCADEL
这个就类似与去除权限时的操作,导致被doc赋与角色的人的角色也没有了。

revoke data_entry form doc RESTRICT;
这个就类似与去除权限时的操作,如果doc用户赋与别人角色了,那就报错。



原创粉丝点击