这一篇主要记录了登陆连接选择数据库以及从数据库简单检索数据的操作
连接登陆MySql
连接MySql接受一组命令行参数,如下:
mysql -u username -p -h myserver -p 9999
其中 -u 是指定用户名 -p是指定密码 -h获得帮助 -p是指定端口,如果想获得完整命令行选项或者参数列表可使用指令:
mysql --help #完整命令行选和参数列表,不需要登陆可以直接在command运行
help select; #获得SELECT语句的帮助信息
选择数据库
数据库必须选择了才可以访问里面的数据,使用如下命令:
USE DatabaseName; #选择DataBase数据库
显示数据里面的信息
如果我们忘了数据库名称或者表名称可以使用下列命令来显示:
SHOW DATABASES; #显示所有的数据库名称
SHOW TABLES; #显示选择的数据库里面所有表的名称
SHOW COLUMNS FROM tablename; #显示tablename表里面所有的列的信息
SHOW STATUS; #显示广泛的服务器信息
创建表以及数据库
数据库以及表的创建使用如下命令:
CREATE DATABASE database_name; #创建database_name数据库
sourse file.sql #执行file.sql文件里面的sql语句,注意file要使用绝对路径
检索数据
检索数据主要是使用SEELCT语句,可以检索单个列也可以同时检索多个列,也可以使用绝对限定的数据库名和表名具体命令如下:
SELECT column_name, column_name1 FROM table_name; #检索table_name里面的column_name和column_name1列
SELECT * FROM table_name; #检索table_name里面所有的列,*是通配符
SELECT DISTINCT value FROM table_name; #检索table_name表里面value列里面不同的行(即如果value列有很多行的值一致,那么只会返回一行。)值得注意的是DISTINCT关键字作用于给出所有的列
SELECT column FROM table_name LIMIT 3,5; #添加限制,只返回行3之后的5行(包括第3行,注意行是从0开始的。)
SELECT table.column FROM databaseName.table; #检索databaseNane数据库里面table表里面的column行
排序检索数据
SQL语句是由子句构成,有些是必须的有些是可选的,子句是由关键字和提供的数组构成。排序的话使用 ORDER BY子句,命令如下:
SELECT column FROM table_name ORDER BY column1; #检索table_name表中column列,并按column1列的值来排序
SELECT * FROM table_name ORDER BY column1,column2 LIMIT 3,5; #检索table_name表中所有列的数据然后按column1和column2来排序,然后找出行3之后的5行
SELECT * FROM table_name ORDER BY column1 DEAC cloumn2; #使用关键字DEAC针对column1这一列进行降序排序,注意这个关键字只作用于位于其前面的一个列名。
上面需要注意的是L使用关键字DESC只作用于关键字前面单独一列的列命,如果多列都要进行降序排序,那么就需要在每个需要进行降序排序的列都指定DESC关键字。
过滤数据
过滤数据一般采用 WHERE子句,在语句中给定条件进行过滤,它一般是在表名之后给出,命令如下:
SELECT column FROM table_name WHERE column1=5; #检索table_name表中column列并且column1列的值等于5的所有行
SELECT column FROM table_name WHERE cloumn1 BETWEEN 5 AND 10; #检索table_name表中column列并且column1列的值位于5-10之间所有行
SELECT column FROM table_name WHERE cloumn1 IS NULL; #检索table_name表中column列并且column1列为空的所有行。
SELECT * FROM table_name WHERE column>5 AND column1>20 #检索table_name表中column列的值大于5和column1列中值大于20的所有行的数据
SELECT * FROM table_name WHERE column>5 OR column1>20 #检索table_name表中column列的值大于5或者column1列中值大于20的所有行的数据
上面需要注意的是Mysql的计算次序是AND优先级更高,所以我们如果要进行比较复杂的数据过滤的时候尽量使用圆括号明确的分组,SQL会优先计算圆括号里面的的条件如下:
SELECT column1,column2 FROM table_name WHERE (column4 = 2 OR colunm4=5) AND column5= 'name'
#上面这条语句是检索table_name表中column1以及column2列中的数据,并根据条件:column4等于2或者5 column5等于'name'进行过滤
SELECT column1,column2 FROM table_name WHERE column4 IN (4,5) AND column5= 'name'
#等同上一句
SELECT column,column1 FROM tableName WHERE column1 NOT IN (2002,2003)
WEHRE子句支持下列操作符:
操作符 | 说 明 |
---|---|
= | 等于 |
<> | 不等于 |
!= | 不等于 |
< | 小于 |
<= | 小于等于 |
> | 大于 |
>= | 大于等于 |
BETWEEN | 在指定的两个值之间 |
OR | 两个过滤条件的或关系 |
AND | 两个过滤条件之间的并关系 |
IN | 等同于OR,不过更为直观,后面所有的条件使用圆括号括起来 |
NOT | 否定它之后的任何条件,用在关键字前面。 |