需要用用户名和密码(也可设置无需密码登录)登录即连接到服务器
shell> mysql -h host -u user -p
Enter password: ********
连接成功后,可以在mysql>
提示下输入QUIT
(或\q
)随时退出:
mysql> QUIT
Bye
创建数据库:
CREATE DATABASE <数据库名>
CREATE DATABASE IF NOT EXISTS <数据库名>
使用mysqladmin创建 # mysqladmin -u root -p create oss_server
使用数据库:
use <数据库名>
注意:创建并不代表使用,需要明确操作use来指定使用数据库。
查看全部数据库 show databases
查看创建库的详细信息 show create database <数据库名>
drop database <数据库名>
drop database if exists <数据库名>
CREATE TABLE table_name (column_name column_type);
例子:
CREATE TABLE IF NOT EXISTS `user`(
`user_id` INT UNSIGNED AUTO_INCREMENT,
`name` VARCHAR(10) NOT NULL,
`tel` VARCHAR(20) NOT NULL,
`birthday` DATE,
PRIMARY KEY ( `user_id` )
)ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE animals (
id MEDIUMINT NOT NULL AUTO_INCREMENT,
name CHAR(30) NOT NULL,
PRIMARY KEY (id)
);
DROP TABLE table_name
DESCRIBE table_name;
或desc table_name;
DESCRIBE tl_device_info;
INSERT INTO table_name ( field1, field2,...fieldN ) VALUES ( value1, value2,...valueN );
实例:
"INSERT INTO runoob_tbl ".
"(runoob_title,runoob_author, submission_date) ".
"VALUES ".
"('$runoob_title','$runoob_author','$submission_date')";
mysql> LOAD DATA LOCAL INFILE '文件目录' INTO TABLE pet;
SELECT column_name,column_name FROM table_name [WHERE Clause] [LIMIT N][ OFFSET M]
查询全部:select * from ...
where语句中多个条件使用and
或or
来连接,
select * from ... where name = 'wang' and tel='134554654'
and优先级高于or,若需要先执行or部分,可以用小括号来提升其优先级
sql为like子句提供了四种匹配方式:
%
:可以匹配任意长度、类型的字符,若是中文,用两个百分号表示(% %)_
:匹配任意类型的单个字符,相当于占位,限制表达式字符[]
:括号中可以指定一个或多个字符、字符串或者范围,匹配括号内所列字符中的一个,类似正则。[^]
:匹配括号内以外的字符。示例:
-- 搜索name中最后一个字母是m的记录:
select * from user where name like '%m';
-- 搜索name中第二个字符是a的记录:
select * from user where name like '_a%';
连接两个或以上的select语句,将其结果组合到一个结果集合中
select ... from ... UNION [ALL/DISTINCT] select ... from ....
select device_name from tl_device_info
UNION
select device_model from tl_device_type
SELECT field1, field2,...fieldN FROM table_name1, table_name2... ORDER BY field1 [ASC [DESC][默认 ASC]], [field2...] [ASC [DESC][默认 ASC]]
默认为升序排序,降序需要添加关键字DESC
例子:
select * from tl_device_info
order by device_name DESC
SELECT column_name, function(column_name) FROM table_name WHERE column_name operator value GROUP BY column_name;
在分组的列上我们可以使用 COUNT, SUM, AVG,等函数。
例子,按设备id分组,并查询每个设备id出现了几次
select device_id,count(device_id) from tl_device_status_log
group by device_id
跟group by搭配,在分组的基础上对结果进行统计
select device_id,count(device_id) from tl_device_status_log
group by device_id WITH ROLLUP
select coalesce(a,b,c): 该函数为,当a为null时显示b,若b为null显示c
select COALESCE(device_id,'总计'),count(device_id) from tl_device_status_log
group by device_id WITH ROLLUP
查询一列中最大数值
select max(id) from tl_device_info
select min(id) from tl_device_info
SELECT SUM(capacity) from tl_cutting_tool_store_house
如果在没有返回匹配行 SELECT 语句中使用 SUM 函数,则 SUM 函数返回 NULL,而不是 0。
SELECT avg(capacity) from tl_cutting_tool_store_house
INNER JOIN(内连接,或等值连接)
:获取两个表中字段匹配关系的记录。LEFT JOIN(左连接)
:获取左表所有记录,即使右表没有对应匹配的记录。RIGHT JOIN(右连接)
: 与 LEFT JOIN 相反,用于获取右表所有记录,即使左表没有对应匹配的记录。写一个左连接的例子:
设备表的类型id字段对应 类型表的id,即外键
select di.device_name, dt.device_model
from tl_device_info di
left join tl_device_type dt on di.device_type_id = dt.id
SELECT DISTINCT 列名 FROM 表;
UPDATE table_name SET field1=new-value1, field2=new-value2 [WHERE Clause]
update tl_device_info set device_name = 'test1' where id =1
DELETE FROM table_name [WHERE Clause]