从Ubuntu进入mysql 命令行(登录mysql服务器):
mysql -uroot -p # 这是本地登录,然后输入登录密码即可
mysql -uroot -P # 这是通过端口号登录,如果用了默认的可不用这样登录
mysql h
ip地址 -uroot
-p/-P (大P为端口号方式登录)
# 重启mysql服务器
service mysql restart
老版本(5.0之前)是mysqld
查看实时时间: select now();
查看当前数据库服务器的
版本号信息:
select version();
查看所在服务器中的
所有
数据库:
show databases;
查看
当前正在用的
数据库:
select database();
查看所在数据库中
所有的
表:
show tables;
查看指定表的结构:
desc 表名;
查看指定表的创建语句(信息):
show create table 表名;
查看指定表内的数据:
select * from 表名;
创建新的数据库:
create database 数据库名 charset=utf8;
创建表: create table 表名(列及类型);
create table test (
id int unsigned auto_increment primary key not null,
name varchar(10) not null,
age int not null
);
# 一般这一句都会有, aoto_increment 表示自增长。
切换/进入 数据库:
use 数据库名;
修改表:
alter table 表名 add(增)|change(修类型) | drop(删) 列名 类型;
例:alter table students add birthday datetime;
修改表名:
rename table 原表名 to 新表名;
删除数据库:
drop database 数据库名;
删除表:
drop table 表名; # 物理删除
数据操作:
增:
在表内增加数据:
insert into students values(0, 'wang', ……); # 全列插入,按表的关键字顺序填写,0为占位(id不用人工填写)
增加单个属性;
insert into students(name) values("sheng");
同时增加多个单属性:
inset into students(name) values("杨过"),("小龙女").....;
删((语句):
delete from students; # 清空数据库
delete from students where id = 5; # 物理删除
update students set isDelete=1 where id=5; # 逻辑删除,isDlete 是人为添加进去的属性列,表删除状态(0,1).实则修改
改:
update students set name=yong, age=67 where id=3;
同步数据:
update students as s inner join classes as c on s.clsid=c.name set s.clsid=c.id;
查:(重点) 条件筛选
select * from students where isDelete=0;
alter 的用法:
通过alter table语句修改表结构
alter table goods
change 原名 新名 int unsigned not null # 新名后面为新的属性 ,不用写旧的属性(重命名版)
alter table t_book_info
drop column book_type; # 删除book_type字段
alter table students
add birthday datetime; # 添加birthday字段
alter table students
modify birthday date; # 修改表-修改字段:不重命名版, alter taleb 表名 modify 列名 类型及约束;
ALTER
TABLE
table_name
RENAME
TO
new_table_name # 修改表名
关于添加外键以及删除(取消)外键:
alter table students add foreign key(clsid) references classes(id);
-- 数据库的备份
在mysql 后台服务器开启的状态下: (linux终端),没有指定表名的话会备份整个数据库
$ mysqldump -uroot -p 数据库名 [表名] > 数据库名.sql # 导出备份,导出到当前文件夹下。root 为用户名
注意(实践经验):在备份数据的时候可以将一个打标中的数据拆分成几块,以免恢复时会报临时缓存表达到上限,可以临时设置但是很吃系统内存。
(# 临时设置以及查看上限值的sql语句:
set
session tmp_table_size
=
1024
*
1024
*
1024
;
set
session max_heap_table_size
=
1024
*
1024
*
1024
;
show variables
like
'%max_heap%'
;
show variables
like
'%tmp_table%'
;
)
还有退出mysql服务器的时候,不要ctrl+z,应使用exit; 退出。前者是中断进程,后者才是mysql服识别的流程化退出。
# 从外界导入列表到数据库
$ mysqldump -u用户名 -p 数据库名 < 数据库名.sql
# 在数据库内部导入外界当前登录路径下的列表数据
source sql文件名
在数据库内部添加.sql文件(这个sql文件可能是单个列表结构以及数据也可能是整个数据库的列表结构及数据,就看怎么备份的了,整个数据库的那就是数据库整体备份/还原)----->
source stock_db.sql
进入数据库再输入,注意源文件一定要在登录数据库时的路径下。
遍历字典,for temp in info_dict.items(): # 返回的temp为元组的形式 # 不加item只能遍历出字典的键出来。