最近在学习叶梓老师的R语言数据分析预数据挖掘的课程,这里记录一下MySQL的一些基本语句。
MySQL数据库有增、删、改、查四个基本操作,其基本语句如下:
1、增:插入数据
insert语句可以用来讲一行数据查到数据库表中,形式如下;
insert [into] 表名 [(列名1,列名2,……)] values (值1,值2,……);
其中 [] 是可选内容。
例如:
insert into mytable(name,sex,birth) values ("小张","1","1993-11-11");2、删:删除数据(列)
语法:alter table 表名 drop 列名称;
例如,删除tel列:
alter table mytable drop tel;3、改:修改数据(列)
语法:alter table 表名 change 列名称 列新名称 新数据类型;
例如,将tel列改名为telphone:
alter table mytable change tel telphone varchar(20) default "-";default后为数据初值,注意,此赋初值的操作仅对用insert into语句新加的数据有效,对原数据没有作用(在Navicat中使用该语句)。
效果如下图:


上一行为表中原有数据,在进行修改列名称修改后,本已赋初值,可以第一行并没有初值,而第二行为新插入的数据,此时就有了初值。
当然以上所有操作可以在Navicat直接选中表,然后选择设计表去快捷修改,这里为了熟悉数据库命令行操作,如下图:

4、查:查询数据
MySQL数据库使用SELECT语句来查询数据。
通用的SELECT语法:SELECT col_name1,col_name2,…… FROM table_name [WHERE Clause] [OFFSET M] [LIMIT N]
其中,col_nameN为你要选择的字段,这里可以是 *,表示选择表里的所有字段。WHERE语句其实就是一个组合的限制条件,比如[WHERE condition1 [AND /OR] condition...]
比如,从以下表中选出性别代号为1的行,这里为了显示所有的字段,所有是SELECT *。

然后执行语句,我这里是在Navicat中执行的,也可以到命令行中去执行,Navicat中语句以及执行效果如下:

5、update查询
如果需要修改或更新MySQL中的数据,可以使用UPDATE命令来操作。
语法:
UPDATE table_name SET field1=new-value1, field2=new-value2,……[WHERE Clause]
当需要更新数据表中特定行的数据时,可用WHERE字句。
可以同事更新一个或多个字段。
例如,在之前的表中,将地址address中值为Null的修改为'未知',则执行以下语句:
update mytable set address='未知' where address is null;结果如下图:

6、DELETE删除语句
用3中的删除会把整个表的数据删掉,而DELETE FROM命令可以用来删除MySQL数据表中的特定记录。
语法:DELETE FROM table_name [WHERE Clause]
例如,删除之前表中telephone中为“-”的数据:
delete from mytable where telphone="-";结果就是含有telphone的那一行的数据都没有了:

7、LIKE子句
在SELECT语句中,使用WHERE子句获取指定记录时,其用作“=”来使用,而有时需获取字段含有某字符的所有记录,这时我们就需要在WHERE子句中使用LIKE子句,字面意思,就是获取和该子句后面内容相近的记录。
比如要获取字段中含有“张”的记录,可以使用如下语句:
select * from mytable where name like "%张%";这里注意,LIKE子句中使用百分号%字符来表示任意数量的任意字符,如果没有用百分号,则和“=”是一样的效果。结果如下:

8、UNION操作符
UNION操作符用于连接两个以上的SELECT语句的结果组合到一个结果集合中,多个SELECT语句回删除重复的数据。
语法:
SELECT expression1, expreesion2,……,expressionn FROM table_name [WHERE conditions] UNION [ALL | DISTINCT] SELECT expression1, expreesion2,……,expressionn FROM table_name [WHERE conditions]
两个或两个以上的SELECT可以是在一个表中SELECT,也可以在不同的表中SELECT。举个在一个表中的组合例子。
在之前的表中选择带有“李”和“张”的字段的记录,代码如下:
select * from mytable where name like "%张%"
UNION ALL
select * from mytable where name like "%李%";结果是把表中的带有李和张的字段的记录组合在一起:

9、排序
如果我们需要对读取的数据进行排序,我们可以使用MySQL的order by子句来设定排序规则,具体语法为:
SELECT field1, field2,……,fieldn FROM table_name ORDER BY field1, [field2...] [ASC DESC]
其中,ASC和DESC是规定升序还是降序,默认不写为升序,即ASC。
比如还是这个表,按生日大小排序的化,在查询里新建查询:
SELECT birth from mytable ORDER BY birth这里默认不写排序规则,按升序规则排序,结果为:

这里由于数据库数据区分不大,所以效果不是很明显,但是仔细看,1995的两条数据互换,表示已进行排序。
如果规定降序排序的话,可以写成。
SELECT birth from mytable ORDER BY birth DESC此时的结果为:

















