断开数据库连接时输入:QUIT或者EXIT或按Ctrl+D,MySQL数据库不区分大小写。
先设置环境变量,将路径加入到path中
进入MySQL时:mysql -u root -p
创建数据库:create database firstdb;(;不能省,所有的MySQL命令结尾都以分号结束)
创建表:create table sales_rep(
employee_number int,
surname varchar(40),
first_name varchar(30),
commission tinyint);
use firstdb 指定数据库
INT表示整数,通常在-2147483648到2147483647的范围内,有4个字符;
VARCHAR(30):VARCHAR表示可变长字符,括号中的数字表示字符串的最大长度;
Commission TINYINT:TINYINT表示小整数,通常在-128到127范围内,有11个字符,Commission字段是一个百分比值,不可能超过100%,所以用小整数就足够了
show tables;列出当前数据库中所有的表。
describe sales_rep;显示表的结构(sales_rep是表名)
向表中插入数据方法如下:(字符串字段VARCHAR的值要用单引号括起来,数字字段不需要)
insert into sales_rep(employee_number,surname,first_name,commission) values(1,'Rive','Sol',10);(surname:姓;commission:佣金)
或insert into sales_rep values(1,'Rive','Sol',10);(必须按顺序)
或者可以同时插入多条记录,每一条记录用逗号隔开。
如:insert into sales_rep(employee_number,surname,first_name,commission) values
(1,'Rive','Sol',10),
(2,'Gordimer','Charlene',15),
(3,'Serote','Mike',10);
用LOAD DATA从文本文件插入大量数据:
LOAD DATA LOCAL INFILE "sales_rep.sql" INTO TABLE sales_rep;数据文件的格式一定要正确,没有异常。在这种情况下,如果使用默认设置,文本文件中的每一条记录占一行,每个字段有TAB键来分隔,每一行以换行符结束。
从表中检索信息:select commission from sales_rep where surname = 'Gordimer';
(返回字段commission)
select commission,employee_number from sales_rep where surname = 'Gordimer';
(返回字段commission,employee_number)
select * from sales_rep where surname = 'Gordimer';(通配符*返回所有字段)
条件可以有多个,用and或or,或者两者都需要,and运算在or之前
select *from sales_rep where surname like 'Sero%';查找姓以Sero开头的所有,%是一个通配符,类似于*,但只能在select条件中使用,它的含义是0个或多个字符。可以使用多个,%e%,姓里面带有e的。%e%e表示任何位置有一个e,并且以e结尾
分类:按字母顺序列出雇员表:select * from sales_rep order by surname;
默认从低到高,在末尾加上desc将从高到低;limit 后有1个参数,表示返回的数量,有2个参数的话,第一个表示偏移量,第二个是所限制的行数,默认偏移量是0。如果指定偏移量为1,就从第二条显示;limit常用于MySQL的搜索引擎,如每页显示10条结果,第一页的结果使用limit 0,10;第二页的结果使用limit 10,10;
如:select first_name,surname,commission from sales_rep order by commission desc limit 1;(返回佣金最高的一个first_name,surname,commission)
max()函数返回最大值;函数是应用与括号中的参数的。如:select max(commission) from sales_rep; 返回佣金最高的,查询时应注意空格。
返回唯一清单用distinct,让重复的只出现一次。如:select distinct surname from sales_rep order by surname;
count()函数返回结果的数目,如:select count(surname) from sales_rep;
计数不重复的数目时,将count()与distinct 结合使用,如:select count(distinct surname) from sales_rep;
avg()函数,min()函数,sum()函数返回平均数,最小值,总数;将要处理的字段放到括号中。
select first_name,surname,commission+1 from sales_rep;查询commission+1之后的;
删除记录:delete语句,类似于select,由于要删除整个记录,所以不需要指定任何的列,只需要表名和条件。在删除时应用唯一字段作为条件,delete from sales_rep;这会将表中的所有记录删除。
更改表中的记录:update语句 ,如update sales_rep set commission = 12 where employee_number = 1;
删除表和数据库:drop语句,如drop table sales_rep; drop database firstdb;
改变表结构
添加列:alter语句add,如在sales_rep表中创建一个列,用于存储该员工加入公司的日期。
ALTER TABLE sales_rep ADD date_joined DATE;(DATE是一个列类型,以-年-月-日的格式存储(YYYY-MM-DD))
YEAR也是一个列类型。
更改列定义:alter语句change(modify) ALTER TABLE sales_rep CHANGE year_born birthday DATE;(CHANGE后面是旧的列名称,然后是新的列名称及其定义);要改变定义,而不改变列名,只需简单的使名称与前面一样,如:
ALTER TABLE tablename CHANGE oldname oldname new_column_definition;或者,用MODIFY从句,它不要求重复名称,ALTER TABLE tablename MODIFY oldname new_column_definition;
为表重新命名:alter语句rename,如将表名sales_rep改为cash_flow_specialist
ALTER TABLE sales_rep RENAME cash_flow_specialist;
将表名恢复原样:alter语句rename to,如
ALTER TABLE cash_flow_specialist RENAME TO sales_rep;
或者:RENAME old_tablename TO new_tablename;
删除列:alter语句drop,如:
ALTER TABLE sales_rep DROP enhancemant_value;
指定日期格式:date_format()函数,如:
SELECT DATE_FORMAT(date_joined,'%m/%d/%Y') FROM sales_rep WHERE employee_number=1;('%m/%d/%Y'叫做格式化字符串,%m返回月份(01-12),%d返回日期(01-31),%Y返回四位数的年份,%W返回星期日期,%M返回月份的名字,%e返回日期(1-31),%y返回两位数的年份,%a是缩写的星期日期,%D是带后缀的日期,%b是缩写的月份名字)
返回当前日期和时间:current_date()函数返回日期,now()函数返回日期和时间;
month()和dayofmonth()返回日期的一部分