MySQL个人学习笔记——基本操作
连接数据库
windows系统使用cmd登入mysql
命令:mysql [-host] [-port] -u用户名 -p密码
直接在-p
后输入密码将显示明文
也可以后续输入密码:
命令:mysql [-host] [-port] -u用户名 -p
省略host
和port
时,host
将默认为本地,port
为安装mysql时设定的端口,一般为3306
。
登出数据库
指令:
1、\q;
2、\quit;
3、exit;
bye表示已成功登出数据库
语句结束符
1、;
2、\g
3、\G
;
与\g
效果一样\G
将结果旋转后显示
当查询数据的字段太多时适合使用\G
修改语句结束符
语法:delimiter 新结束符
注意:该语句本身不需要结束符
只修改;
,不影响\g
和\G
数据库
创建数据库
语法:create database 数据库名称 [库选项];
如:create database mydatabase;
库选项有:
1、字符集(不输入时,为DBMS的默认字符集,安装时选择)
语法:create database 数据库名称 charset 字符集;
如:create database mydatabase2 charset gbk;
2、校对集(跟随字符集)
collate 校对集
显示所有数据库
指令:show databases;
匹配数据库
语法:show databases like '匹配条件';
占位符:_
:当前位置可以匹配为一个字符 如:show databases like 'm_database' ;
将显示所有名字为 m_database 的数据库 (_为任意单个字符)
%
:当前位置可以匹配为多个字符 如:show databases like 'm%database' ;
将显示所有名字为 m%database 的数据库 (%为任意多个字符)
显示数据库创建语句
但显示的不是输入的原始语句,为系统转换后语句
指令:show create database 名称;
圈为显示的创建语句
选择数据库
指令:use 数据库名称
修改数据库
可修改库选项:字符集、校对集,但一般创建后不再修改
语法:alter database 数据库名称 charset 字符集;
ps:只有5.5版本以前的可以改数据库名称,之后的不可以
删除数据库
语法:drop database 数据库名称;
删除前需确保库内数据可以删除,才能删除数据库
表
创建数据表
表的创建必须有字段
语法:create table 表名(字段名 字段类型(字段属性), 字段名 字段类型(字段属性),….)[表选项]
create table mydatabase.person(name varchar(10));
create table mydatabase.person(name varchar(10))charset utf8;
1、创建表前先选择数据库,表将创建在该数据库下
2、create table 数据库名.表名(字段名 字段类型(字段属性), 字段名 字段类型(字段属性),….)[表选项]
将直接在指定数据库下创建表,而无需提前选择数据库
数据库名.表名,可在当前数据库访问其他数据库的表
表选项:
1、engine:存储引擎(存储数据的方式默认innodb)
2、charset:字符集(只针对当前表,优先级比数据库字符集高)
2、collate:校对集(只针对当前表,优先级比数据库字符集高)
复制数据表
只复制已有表的结构,不复制数据
语法:create table 新表名 like 已有表名;
查看当前数据库下所有表
需先选择数据库
语法:show tables;
匹配当前数据库符合条件的表
语法: show tables like ‘匹配条件’;
查看表结构
语法:
1、describe 表名;
2、desc 表名;
3、show columns from 表名;
3条指令显示结果都一样,desc为describe的缩写,常用desc
显示表创建语句
语法:show create table 表名;
(需先选数据库)show create table 数据库.表名;
修改表选项
语法:alter table 表名 表选项 [=] 值;
[]可有可无
如:
alter table mydatabase.person charset gbk;
注意:当数据库已确定有很多数据,不要轻易修改表选项(如存储引擎和校对集,影响可能会很大,字符集影响不大)
修改表名
语法:rename table 旧表名 to 新表名
如:
rename table mydatabase.person to my_person;
ps:一般取数据库前2字母加_加表名,xx_表名
删除表
语法:drop table 表名;
增加字段
语法:alter table 表名 add [column] 字段名 字段类型 [列属性] [位置];
如:
alter table people add age int;
位置:first
(插入到最前面)after 字段名
(插入到字段名之后)
如:
alter table people add habbit int first ;
alter table people add height int after name ;
字段属性(列属性):
alter table 表名 add [column] 字段名 字段类型 [null/not null] [default xx] [位置];
如:alter table people add level int not null default 1;
comment列描述:
用于给开发人员提供注释描述
只能通过查询创建语句进行查看
语法:comment’描述’
修改字段名
语法: alter table 表名 change 旧字段名 新字段名 字段类型 [列属性] [位置];
如:
alter table people change lll aa varchar(12) after height;
ps:新旧字段名可以相同
修改字段
语法:alter table 表名 modify 字段名 字段类型 [新属性] [新位置];
如:
alter table people modify lll varchar(12) after height;
删除字段
语法:alter table 表名 drop 字段名;
如:
alter table people drop name;
插入数据
一次插入一条记录:
语法:
1、insert into 表名 (字段名,字段名,…) values (对应值,对应值,….);
如:
insert into people (name,age,height) values('hi',20,65);
有默认值或者允许为空的字段可以不插入数据
2、insert into 表名 values (对应值,对应值,….);
此时,对应值顺序必须与表结构(字段顺序)对应
一次插入多条记录:
语法: insert into 表名 [字段列表] values (值列表),(值列表),(值列表),…;
查询数据
语法:select 字段列表 from 表名 [where 字段名 = xx];
字段列表可用*代替,*表示所有
字段列表为要提取出来的字段
删除数据
语法:delete from 表名 [where 判断条件] [limit n];
没有[where 判断条件]
和[limit n]
时,将删除表的全部数据
limit n
删除前n条记录
更新(修改)数据
语法:update 表名 set 字段名 = 新值 [where 判断条件] [limit 数量];
没有[判断条件]
和[limit n]
时,表中对应字段名的所有数据都将改为新值
[limit n]
会将前n条记录进行update