mysql学习笔记
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql学习笔记相关的知识,希望对你有一定的参考价值。
/**创建数据库**/
create database testdata;
/**
返回query OK; 则表示创建成功.
**/
/**删除数据库**/
drop database testdata;
/**
返回query OK; 表示创建成功
**/
/**展示mysql所支持的引擎**/
show engines;
/**
如果列数太多用;结尾 不是太过美观,所以可以用\G结尾.
support为default表示数据库默认是innodb引擎.
**/
/**查看默认的引擎**/
show variables like ‘storage_engine%‘;
/**
要修改默认引擎,则在配置文件里修改default-storage-engine为你想要的引擎名字即可
**/
/**
myisam默认支持表锁
innodb默认支持行锁,但是有时候会锁表
**/
/**
浮点存储注意的地方:
float double存储的是近似值,比如123131309307461630.010 用float double 存储 值为123131309307461630.000
decimal 内部存储的是字符串,所以精度高 123131309307461630.010 存储值为123131309307461630.010
**/
/**
char varchar nvarchar
char
char是定长的,也就是当你输入的字符小于你指定的数目时,char(8),你输入的字符小于8时,它会再后面补空值。当你输入的字符大于指定的数时,它会截取超出的字符。
nvarchar(n)
包含 n 个字符的可变长度 Unicode 字符数据。n 的值必须介于 1 与 4,000 之间。字节的存储大小是所输入字符个数的两倍。所输入的数据字符长度可以为零。
varchar[(n)]
长度为 n 个字节的可变长度且非 Unicode 的字符数据。n 必须是一个介于 1 和 8,000 之间的数值。存储大小为输入数据的字节的实际长度,而不是 n 个字节。所输入的数据字符长度可以为零。
varchar 适合存一些数字和字母 nvarchar 适合存汉子
**/
/**创建mysql数据表语句**/
create TABLE test (
id INT(11) AUTO_INCREMENT,
name varchar(55),
year char(4)
) engine=‘myisam‘ default CHARSET=utf8;
/**
字段类型后面可以增加约束:
NOT NULL 字段不能为空
DETAULT 默认值 给字段设置默认值
**/
describe table_name;/**查看表单位结构,可简化为desc table_name**/
show create table test;/**查看创建表时的sql语句**/
drop table test;/**删除数据表**/
alter table old_tablename rename new_tablename;/**修改表的名字**/
alter table test1 add age char(4);/**增加字段,如果想字段在第一个,末尾加上first关键字 如果要在制定字段后面加,可以在末尾加上after 字段名 即可**/
alter table test1 drop 字段名;/**删除指定字段**/
alter table test1 modify age int(2);/**修改指定字段 可以用first或者after调整字段顺序**/
alter table test1 change agf address char(4);/**修改字段的名字 char(4)是旧字段的数据类型 如果改变成varchar(4) 那么新字段的数据类型就变为后者 可以用first或者after调整字段顺序**/
/**
注:
CHANGE 对列进行重命名或更改列的类型,需给定旧的列名称和新的列名称、当前的类型
MODIFY 可以改变列的类型,此时不需要重命名(不需给定新的列名称) 还可以修改列的顺序
**/
/**索引笔记 test4为表名**/
innodb myisam 引擎都支持btree 索引,memory 支持hash存储
/**索引操作**/
alter table test1 add primary key (id);/**添加主键索引 括号里可为多列**/
alter table test1 drop primary key;/**删除主键索引**/
alter table test1 add ‘索引类型‘ ‘索引名‘ (字段) /*添加非主键索引,字段可以为多个,用逗号隔开*/
alter table test1 drop index ‘索引名‘;/*删除非主键索引,索引名为创建时指定的名字*/
show index from 表名;/*查看索引*/
/**
查看语句是否用到索引
EXPLAIN sql语句 如果possible_key不为空,则说明使用到了索引
**/
/*普通索引开始*/
/**创建表时创建普通索引**/
create table test4 (
id int(11) primary key auto_increment,
name varchar(55) NOT NULL DEFAULT ‘‘,
index 索引名 (属性名)
);
/**给已存在的表创建普通索引**/
create index 索引名 on test4 (属性名);
/**alter语句创建普通索引**/
alter table test4 add index 索引名 (属性名);
/**alter语句删除普通索引**/
alert table test4 drop index 索引名;
/*普通索引结束*/
/**唯一索引开始**/
/**创建表时创建唯一索引**/
create table test4 (
id int(11) primary key auto_increment,
name varchar(55) NOT NULL DEFAULT ‘‘,
UNIQUE INDEX 索引名 (属性名);
);
/**给已存在的表创建唯一索引**/
create unique index 索引名 on test4 (属性名)
/**alter语句创建普通索引**/
alter table test4 add unique index 索引名 (属性名);
/**删除方法同普通索引**/
/**唯一索引结束**/
/**全文索引 把唯一索引里的unique换成fulltext就是全文索引的创建方法**/
/**删除索引开始**/
/**删除索引的语法形式**/
drop index 索引名 on test4;/*删除索引*/
/**alter语句删除普通索引**/
alert table test4 drop index 索引名;
/**删除主键 因为主键只会有一个,所以不用指定名字**/
alert table test4 drop primary key;
/**删除索引结束**/
/**视图**/
/**创建视图语法 sql语句规范中,视图命名前缀一般为view_xxx or v_xxx来命名**/
create view 视图名 as sql语句;
/**使用视图**/
select * from 视图名
/**查看创建视图时候的语句**/
show create view 试图名;
/**查看视图结构**/
desc 视图名
/**删除视图**/
drop view 视图名1,视图名2
/**修改视图**/
create or replace view 视图名 as sql语句
/**alter创修改视图方法**/
alter view 视图名 as sql语句;
/**
视图算是一张虚拟表,通过指定sql查出表里的字段和值 放入视图虚表,视图和基本表是互相影响的,相当于基本表内容的快照 如果视图来自多个基本表,则添加删除不起效
**/
/*触发器*/
/*
能够使用触发器的三个操作:
insert
delete
update
*/
/*创建触发器语法*/
-- create trigger insert1 before insert on user for each row insert into nickname (name) values (‘rocky‘);
-- 基本语法:create trigger 触发器名字 触发时间(after/before) 触发事件(insert/delete/update) on 表名 for each row 触发时候执行的语句;
/*
对于insert 只有new
对于delete 只有old
对于update old new都通用
*/
/*delimiter &&
create trigger insert2 after insert
on user for each row
begin
insert into nickname (nickname) values (new.uid);
insert into nickname (nickname) values (new.uid);
end
&& delimiter;*/
-- 这里的new.uid 是插入后所生成的主键
/*触发器多条语句 delimiter 结束符号 修改结束符号*/
/*查看触发器*/
show triggers;
/*删除触发器*/
drop trigger 触发器名;
/**创建数据库**/
create database testdata;
/**
返回query OK; 则表示创建成功.
**/
/**删除数据库**/
drop database testdata;
/**
返回query OK; 表示创建成功
**/
/**展示mysql所支持的引擎**/
show engines;
/**
如果列数太多用;结尾 不是太过美观,所以可以用\G结尾.
support为default表示数据库默认是innodb引擎.
**/
/**查看默认的引擎**/
show variables like ‘storage_engine%‘;
/**
要修改默认引擎,则在配置文件里修改default-storage-engine为你想要的引擎名字即可
**/
/**
myisam默认支持表锁
innodb默认支持行锁,但是有时候会锁表
**/
/**
浮点存储注意的地方:
float double存储的是近似值,比如123131309307461630.010 用float double 存储 值为123131309307461630.000
decimal 内部存储的是字符串,所以精度高 123131309307461630.010 存储值为123131309307461630.010
**/
/**
char varchar nvarchar
char
char是定长的,也就是当你输入的字符小于你指定的数目时,char(8),你输入的字符小于8时,它会再后面补空值。当你输入的字符大于指定的数时,它会截取超出的字符。
nvarchar(n)
包含 n 个字符的可变长度 Unicode 字符数据。n 的值必须介于 1 与 4,000 之间。字节的存储大小是所输入字符个数的两倍。所输入的数据字符长度可以为零。
varchar[(n)]
长度为 n 个字节的可变长度且非 Unicode 的字符数据。n 必须是一个介于 1 和 8,000 之间的数值。存储大小为输入数据的字节的实际长度,而不是 n 个字节。所输入的数据字符长度可以为零。
varchar 适合存一些数字和字母 nvarchar 适合存汉子
**/
/**创建mysql数据表语句**/
create TABLE test (
id INT(11) AUTO_INCREMENT,
name varchar(55),
year char(4)
) engine=‘myisam‘ default CHARSET=utf8;
/**
字段类型后面可以增加约束:
NOT NULL 字段不能为空
DETAULT 默认值 给字段设置默认值
**/
describe table_name;/**查看表单位结构,可简化为desc table_name**/
show create table test;/**查看创建表时的sql语句**/
drop table test;/**删除数据表**/
alter table old_tablename rename new_tablename;/**修改表的名字**/
alter table test1 add age char(4);/**增加字段,如果想字段在第一个,末尾加上first关键字 如果要在制定字段后面加,可以在末尾加上after 字段名 即可**/
alter table test1 drop 字段名;/**删除指定字段**/
alter table test1 modify age int(2);/**修改指定字段 可以用first或者after调整字段顺序**/
alter table test1 change agf address char(4);/**修改字段的名字 char(4)是旧字段的数据类型 如果改变成varchar(4) 那么新字段的数据类型就变为后者 可以用first或者after调整字段顺序**/
/**
注:
CHANGE 对列进行重命名或更改列的类型,需给定旧的列名称和新的列名称、当前的类型
MODIFY 可以改变列的类型,此时不需要重命名(不需给定新的列名称) 还可以修改列的顺序
**/
/**索引笔记 test4为表名**/
innodb myisam 引擎都支持btree 索引,memory 支持hash存储
/**索引操作**/
alter table test1 add primary key (id);/**添加主键索引 括号里可为多列**/
alter table test1 drop primary key;/**删除主键索引**/
alter table test1 add ‘索引类型‘ ‘索引名‘ (字段) /*添加非主键索引,字段可以为多个,用逗号隔开*/
alter table test1 drop index ‘索引名‘;/*删除非主键索引,索引名为创建时指定的名字*/
show index from 表名;/*查看索引*/
/**
查看语句是否用到索引
EXPLAIN sql语句 如果possible_key不为空,则说明使用到了索引
**/
/*普通索引开始*/
/**创建表时创建普通索引**/
create table test4 (
id int(11) primary key auto_increment,
name varchar(55) NOT NULL DEFAULT ‘‘,
index 索引名 (属性名)
);
/**给已存在的表创建普通索引**/
create index 索引名 on test4 (属性名);
/**alter语句创建普通索引**/
alter table test4 add index 索引名 (属性名);
/**alter语句删除普通索引**/
alert table test4 drop index 索引名;
/*普通索引结束*/
/**唯一索引开始**/
/**创建表时创建唯一索引**/
create table test4 (
id int(11) primary key auto_increment,
name varchar(55) NOT NULL DEFAULT ‘‘,
UNIQUE INDEX 索引名 (属性名);
);
/**给已存在的表创建唯一索引**/
create unique index 索引名 on test4 (属性名)
/**alter语句创建普通索引**/
alter table test4 add unique index 索引名 (属性名);
/**删除方法同普通索引**/
/**唯一索引结束**/
/**全文索引 把唯一索引里的unique换成fulltext就是全文索引的创建方法**/
/**删除索引开始**/
/**删除索引的语法形式**/
drop index 索引名 on test4;/*删除索引*/
/**alter语句删除普通索引**/
alert table test4 drop index 索引名;
/**删除主键 因为主键只会有一个,所以不用指定名字**/
alert table test4 drop primary key;
/**删除索引结束**/
/**视图**/
/**创建视图语法 sql语句规范中,视图命名前缀一般为view_xxx or v_xxx来命名**/
create view 视图名 as sql语句;
/**使用视图**/
select * from 视图名
/**查看创建视图时候的语句**/
show create view 试图名;
/**查看视图结构**/
desc 视图名
/**删除视图**/
drop view 视图名1,视图名2
/**修改视图**/
create or replace view 视图名 as sql语句
/**alter创修改视图方法**/
alter view 视图名 as sql语句;
/**
视图算是一张虚拟表,通过指定sql查出表里的字段和值 放入视图虚表,视图和基本表是互相影响的,相当于基本表内容的快照 如果视图来自多个基本表,则添加删除不起效
**/
/*触发器*/
/*
能够使用触发器的三个操作:
insert
delete
update
*/
/*创建触发器语法*/
-- create trigger insert1 before insert on user for each row insert into nickname (name) values (‘rocky‘);
-- 基本语法:create trigger 触发器名字 触发时间(after/before) 触发事件(insert/delete/update) on 表名 for each row 触发时候执行的语句;
/*
对于insert 只有new
对于delete 只有old
对于update old new都通用
*/
/*delimiter &&
create trigger insert2 after insert
on user for each row
begin
insert into nickname (nickname) values (new.uid);
insert into nickname (nickname) values (new.uid);
end
&& delimiter;*/
-- 这里的new.uid 是插入后所生成的主键
/*触发器多条语句 delimiter 结束符号 修改结束符号*/
/*查看触发器*/
show triggers;
/*删除触发器*/
drop trigger 触发器名;
以上是关于mysql学习笔记的主要内容,如果未能解决你的问题,请参考以下文章
kitti之ros可视化_学习笔记--第5课:相机视野指示线添加