一、服务器端常用命令
# 本地连接数据库
# mysql -u root -p
Enter password:
也可以直接写成
# mysql -uroot -p'niu123456'
# 远程连接数据库(如在118.24.241.124上连接106.12.2.195上的)
# mysql -u root -p -h106.12.2.195 -P3306 //-h用于指定登录主机的IP地址,-P(大写)用于指定远程主机的端口
Enter password:
mysql> show databases; //显示所有数据库
mysql> use mysql; //选择mysql数据库
mysql> select database(); //查看当前是哪个数据库
mysql> show tables; //显示当前mysql数据库中的所有数据表
mysql> desc user; //显示user表的所有字段
mysql> show create table user\G; //显示user表的建表语句
mysql> show create database mysql\G; //显示mysql数据库的建库语句
mysql> select version(); //查看当前数据库的版本
mysql> select user(); //查看当前是哪个用户
mysql> show status; //查看mysql当前状态(很多)
mysql> show variables; //查看mysql的参数
mysql> show variables like '%dir';
mysql> show processlist; //查看当前mysql服务器的队列
mysql> show engines;
或者
mysql> show engines\G; //查看存储引擎。
mysql> \h; //显示命令清单(帮助信息)
mysql> \s; //显示mysql信息
mysql> \c;
mysql> \q 或者exit 或者 quit; 退出mysql程序
数据库备份与还原。
1、数据库备份
mysqldump -u root -p 'niu123456' mysql > /mydata/databack/mysql-001.sql; //为名为mysql的数据库做备份。导出sql文件保存到/mydata/databack/mysql-001.sql文件中
2、数据库还原
mysql -u root -p 'niu123456' mysql < /mydata/databack/mysql-001.sql; 还原数据库
二、Mysql常用数据引擎
1、数据库引擎的概念
数据库存储引擎是数据库底层软件组织,数据库管理系统(DBMS)使用数据引擎进行创建、查询、更新和删除数据。不同的存储引擎提供不同的存储机制、索引技巧、锁定水平等功能,使用不同的存储引擎,还可以 获得特定的功能。MySQL的核心就是存储引擎。在同一数数据库中的不同表,可以使用不同的数据引擎。Mysql 支持MYISAM、InnoDB、HEAP、BOB、ARCHIVE、CSV等多种数据表类型,最常用的是MYISAM 和 InnoDB
2、MyISAM 存储引擎
MyISAM基于ISAM存储引擎,并对其进行扩展。它是在Web、数据仓储和其他应用环境下最常使用的存储引擎之一。MyISAM拥有较高的插入、查询速度,但不支持事物。
这种存储引擎在建表的时候,它会创建3个文件。分别是(.frm, .MYD, .MYI):.frm 存储表的定义(也就是表结构啦),.MYD 就是表里面的数据,.MYD存储索引。这样的划分操作系统对大文件的操作是比较慢的,这样将表分为三个文件,那么.MYD这个文件单独来存放数据自然可以优化数据库的查询等操作。
特点:
<1>不支持事务
<2>不支持外键
<3>查询速度很快。如果数据库insert和update的操作比较多的话采用表锁效率低(建议使用innodb)。
<4>对表进行加锁
3、InnoDB 存储引擎
InnoDB是一个事务型的存储引擎,有行级锁定和外键约束,提供了具有提交,回滚和崩溃恢复的事务安全,但是对比MyLSAM引擎,写的效率会比差一些,并且会占用更多的磁盘空间以保持数据和索引。
特点:
<1> 更新多的表,适合处理多重并发的更新请求。
<2> 支持事务。
<3> 可以从灾难中恢复(通过bin-log日志等)。
<4> 外键约束。只有他支持外键。
<5> 支持自动增加列属性auto_increment。
三、Mysql常用数据类型
1、整数类型
数据类型 | 有符号 | 无符号 | 存储需求 | 说明 |
int | -2147483648~2147483647 | 0~4294967295 | 4字节 | 常设11位,用做表的自增类型id |
tinyint | -128~127 | 0~255 | 1字节 | 常设2位,用于设置类别、状态相关的字段 |
smallint | -32768~32767 | 0~65535 | 2字节 | 不常用,可设置6位,用于设置类别、状态相字段 |
mediumint | -8388608~8388607 | 0~16777215 | 3字节 | 不常用 |
bigint | -9223372036854775808 ~9223372036854775807 | 0~18446744073709551615 | 8字节 | 不常用 |
2、浮点数类型
3、字符串型
4、时间日期型
四 常用数据定义语言(DDL)
1、创建与删除数据库
1、创建数据库qinsercmf_db
# create database qinsercmf_db //常用
# create database if not exists qinsercmf_db // (if not exists 防止当新创建的数据库名称存在时出错, 此语句可以省略)
2、删除数据库qinsercmf_db
# drop database qinsercmf_db; //常用
# drop database if exists qinsercmf_db // 如果不存在,忽略错误
2、创建与删除数据表
1、建表语句结构为:
create table 表名(
字段1 类型() [约束条件] [默认值] [备注]
)
2、例,创建qs_admin表
CREATE TABLE `qs_admin` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`username` varchar(30) NOT NULL COMMENT '用户名',
`password` varchar(60) NOT NULL COMMENT '密码',
`sex` enum('男','女') DEFAULT NULL COMMENT '性别',
`ip_address` varchar(20) DEFAULT '' COMMENT 'ip地址',
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
`update_time` datetime DEFAULT NULL COMMENT '更新日期',
`status` tinyint(1) DEFAULT '1' COMMENT '1正常 0不显示',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='表注释'
3、删除数据表
drop table [if exists] 表名 [, 表2, 表3,…];
3、设置主键
4、添加约束
5、更改表结构语法
更改表结构语法:alter table 表名 Action;
Action 语句完成以下功能:
(1) 增加列:Add 列名 建表语句 [comment ‘注释’] [first / after 列名]
例:向Student_info 表中加入 username, sex 两个字段,要求在id之后
Alter table Student_info Add username varchar(20) not null Comment ‘用户名’ After id , Add sex int(1) Comment ‘性别’ After username;
(2) 增加一个主键:Add primary key (列名); (如果此表已经有主键,则会出错)
(3) 增加一个外键:Add foreign key(列名) references 表名(列名);
(4) 更改指定列的默认值:Alter 列名set default新的默认值;
例:修改Student_info 表中address字段的默认值:
Alter table Student_info Alter address set default ‘中国北京’;
(5) 更改列名称:Change 旧列名 新列名 建表语句 [first/after 列名]
例:将Student_info 表中的 postcode字段名修改成 youbian;
Alter table Student_info Change postcode youbian()
(6) 更改列类型:Modify 列名 建表语句 [comment ‘注释’] [first / after 列名];
例子:更改sex列的类型为 char 两个字节长,放在 sname之后
(7) 删除一个列:Drop Column 列名
例:删除Student_info 表中的 testname字段
Alter table Student_info Drop Column testname
(8) 更改表名称: Rename as 新表名
例: 把表 users 重命名为user_info
Alter table users Rename AS user_info
三、常用的SQL—DML 数据操作语言
1、插入表数据
方法一:(常用)
# insert into TableName(title, pid, keywords, content) values('标题一', 1, '关键词,关键词', '正文内容');
方法二:
# insert into TableName set title="标题二", pid=1, keywords="关键词", content="正文内容";
方法三:插入多条
INSERT INTO TableName (title, username) VALUES('标题标题', '作者'),('标题标题', '作者')
注:这里的Values 和Value等效
2、更新记录
公式:
Update 表名 Set 字段a=新值a, 字段b=新值b.... [Where 条件] [Order by 字段 asc/desc] [limit 行数]
例:
例: 将bookid=2的图书 价格修改为24.00元,同时将作者修改为 张三
update books set price=24.00, author='张三' where bookid=2;
例:将 catid=1的类别的图书价格都打八折,
update books set price=price*0.8 where catid=1;
例:将最新录入的五本图书的类别 修改为catid=3
Update book set catid=3 order by bookid desc limit 5;
例:将价格为80.00的书的价格修改为70.00,
update books set price=70.00 where price=80.00
例:将 id>9的所有的school_id字段的值 加18.
UPDATE sci_user_school SET school_id=school_id+18 WHERE id > 9;
例:将last_price 字段为空的 全部修改成与price字段同样的值。
UPDATE books SET last_price = price WHERE last_price IS NULL;
3、高级查询更新
UPDATE tb1 SET f1=REPLACE(f1, 'abc', 'def');
说明:REPLACE(str,from_str,to_str)在字符串 str 中所有出现的字符串 from_str 均被 to_str替换,然后返回这个字符串
例如 我们要修改 l_position表中 url字段里 所有包含http://pifa.chnimport.com的内容 ,修改为http://www.chnimport.com
sql语句为 : UPDATE l_position SET url=REPLACE(url, 'http://pifa.chnimport.com', 'http://www.chnimport.com');
4、删除记录
# Delete From 表名 [Where 条件] [Order by 字段 asc/desc] [limit 行数]
例:delete from books; 清空表中所有数据,
delete from books where bookid=8;
delete from books order by bookid desc limit 3;(删除最后三条)
5、还原表:
Truncate Table 表名;
用于清空表,只保留表结构,效率比使用 delete from 表名 要高,并且能使自动增加字段初始化为1,而delete from 表名则无法使自动增加字段返回到初始状态 。
四、常用SQL—DQL数据查询语言:Seletc
1、基本查询语法:
SELECT 语句的常用语法(子句顺序不能变)
Select .. From .. [Where ..] [Group by ..][ Having ..][Order by..][ Limit..]
2、子查询
3、联合查询