小笔记-mysql基础
来源:互联网 发布:npm 淘宝镜像 安装 编辑:程序博客网 时间:2024/06/08 16:34
SET NAMES GBK//就可以在mysql中显示以gbk的形式显示 \G网格形式显示\\''单引号中可以写入字符串
DESC tb_name/查看数据表的机构
· tb_name1 AS tb_name2//更新别名
declare 声明得是局部得变量 ,在begin end 中使用
select 。。into 变量 和 @变量 都是全局变量,用户变量,只对当前用户所使用的客户端有效
创建数据库
create database db_name;
查看数据库
show databases;
查看正在使用的数据库
select databases;
使用某数据库
use database;
创建表
create table t_name(
列名 数据类型(size) Null or not Null,//默认为null
...
)
查看数据表
show tables;
show tables from db_name;
show tables from mysql;
查看数据表结构
show columns from tb_name;
插入记录
insert [into] tb_name [(col_name,..)]values(val,...);[]代表可以省略,如果省略就要全部都要赋值
记录的查找
select 。。。。from tb_name;//*代表全部的字段,也就是列。
自动编号 必须和主键(自动为not null)一起使用,默认起始值为一。
create table tb(
id smallint ussigned Auto_increment [primary] key;
.....)
唯一约束unique key(可以存在null,保证记录的唯一性,可以存在多个唯一约束)//也是保证了记录的不重复,null特别
create table tb(
id smallint ussigned Auto_increment [primary] key;
username varchar(20) not null unique key;
.....)
默认约束 default//如果没有复制,系统赋予默认值
create table tb(
id smallint ussigned Auto_increment [primary] key;
username varchar(20) not null unique key;
sex Enum('nan','nv') default 'nan';
.....)
外键约束的要求解析(foreign key)
test pro users
添加(单列,不需要添加小括号)多列必须添加小括号,切不能指顶位置
alter table tb_name ADD [column] col_name int nut null [first|after col_name1(在谁之后)] 默认在最后
添加主键约束
alter table tb_name ADD [constraint [symbol]] primary key[index_type](col_name)
添加唯一约束
alter table tb_name ADD [constraint [symbol]] UNIQUE[index_type](col_name)
添加唯一约束
alter table tb_name ADD [constraint [symbol]] FOREIGN KEY[index_type](col_name) REFERENCES table_name(col_name);//参照得那个字段
添加/删除默认约束
alter table tb_name alter [column] col_name{set default literal(默认值)| Drop default}
删除主键约束
alter table tb_name Drop primary key;
删除唯一约束
首先得查一下 show indexes from Table_name\G(网格状查看)
alter table tb_name Drop index col_name;
删除外键约束
show create table table_name;
alter table tb_name Drop foreign key 外键约束得名字;
删除列
alter table tb_name drop col_name//单列
alter table tb_name drop col_name1,col_name2..;//多列
修改数据表
修改列定义
alter table tb_name modify [column] col_name 数据类型 nut null frist||after col_name;//改变列得位置,类型也可以修改,但是可能造成数据得丢失
修改类名称
alter table tb_name change old_col_name new_col_name 数据类型(也可以改变)
修改数据表得名字
alter table tb_name rename new_table_name;
rename table ta_name to new_tab_name[...]//可以修改多个表名
插入insert
1.insert tb_name(clo_name,..)VALUES(value1,value2,.。。。,表达式,值都可以,与前面相匹配)//在这个列中,可以一次性插入多个,
当给auto_increment 可以赋值null或则default
给default 可以赋予default
2.insert tb_name1(col_name,....) select ..from tb_name2;
3.insert tb_name set col_name="";
更改记录(单表更新)
update tb_name set col_name="",...更新一列或者多列
删除记录,单表删除
delect from tb_name where ...
查询表达式可以使用AS alias_name作为别名
select 表名.列名 ...多表链接得时候,这样不会出现错。
group by col_name 或者在select语句中列得位置(数字)【asc默认上升||desc下降】having where (要么 是个聚合函数,要么在select中有这个字段(列名))
AVG()平均 ROUND四舍五入
order by col_name,col_name2....可以多个判断
limit 限制记录所返回得数量
LIMIT 2||limit 3,2;//但是默认从0开始
LIMIT 数值||从那一行开始,数值(多少个)
子查询
SET NAMES GBK//就可以在mysql中显示以gbk的形式显示 \G网格形式显示\\''单引号中可以写入字符串
DESC tb_name/查看数据表的机构
>ANY 其中任意一个,比最小值小就行<比最大值小
>SOME 其中任意一个,比最小值小就行<比最大值小
ANY SOME 是一样的
>All 满足其全部的条件 ,!=任意值
in /not in 等价于any some运算 ()满足其中至少一个
Exists //not exists
***参照一个表更新另一个表,多表更新
inner join 用on来链接两个表的条件//只能显示两个表共有的
left join 左表中,以左表为标准,显示全部有的 右表不存爱呈现不出来的null取代
right join 右表中,以右表为标准,显示全部有的 左表不存爱呈现不出来的null取代
inner join
update tb_name [连接类型(inner left right)] INNER JOIN tb_name2
->ON tb_name.列名=tb_name2.列名
->SET tb_name.列名=。。。;//但是列的数据类型并没有改变要想改变数据类型
***** UPDATE TABLE tb_name
->CHANGE old.col_name new.col_name1 数据类型 not null||null
CREATE ....SELECT
CREATE TABLE[IF NOT EXISTS] tb_name
->(
-> col_name1 (数据类型) primary key auto_increment,
->col_name2.....
->)
->select .....;//aotu_increment 的不用管了,只要把其他的添加进去就行
***三个表的链接
SELECT col_name1,col_name2...from tb_name1 AS 别名
->INNER JOIN tb_name2 ON 条件
->INNER JOIN tb_name3 ON 条件
自身链接 5-13
将自己看成两个表,一个为字表,一个为父表,一定要起一个别名,别名可以写在声明前面
例如 table table_name
` select p.col_name,p.col_name2,s.col_name FROM tb_name AS p LEFT(RIGHT,INNER) JOIN
tb_name AS s
->ON 条件 GROUP BY p.col_name ORDER BY p.coi_name;
多表的删除 (5-14)
首先要判断一下,表中重复的东西,例如,运用分组和聚合函数
SeleCT col_name from tb_name GROUP BY col_name HAVING count(col_name)>1;
//也要有别名,子查询可以设置一个别名
DELETE t1 FROM tb_name AS t1 LEFT JOIN (
SeleCT col_name from tb_name GROUP BY col_name HAVING count(col_name)>1)
AS t2 ON t1.col_name=t2.col_name WHERE t1.col_ID>t2.col_ID;
//这个列子的含义是 删除一个表中 某项东西重复的(名字)并且保留 ID小的
字符函数
concat('',''....)//可以连接多个字符串
CONCAT_WS('分隔符’,‘’,‘’,...)//使用指定的分隔符进行字符链接
` 出现(‘’分隔符‘’分隔符。。。)
FORMAT(数字,小数点几位)
FORMAT(1235.69,0)保留到整数
LOWER();//小写
UPPER();//大写
LEFT('',INT)//保留几个字符
RIGHT('',INT)//右边开始保留几个字符
TRIM('')删除空格,前导和后导的,中间的删除不了
TRIM(LEADING '前导字符'FROM '字符串');//前导
TRIM(TRAILING '前导字符'FROM '字符串');//后续
TRIM(BOTH '前导字符'FROM '字符串');//前导,后续,中间的删除不了
REPLACE('字符串','要被代替的字符','代替成什么东西')//替换
LIKE‘’ESCEPT 1 (意思是1之后的那个%不再是通配符了)//模式匹配 %0-多个字符 _一个字符
SUBSTRING(‘字符串’,‘冲那一位开始截取int从1||-1(正,反)开始’,'截取几位')
select connection_id() //链接id
· select database()//当前锁打开的数据库
user()
LAST_INSERT_ID()//最后插入的id
VERSION()//当前版本信息
DELIMITRT //分界符
自定义函数(user-defined function,UDF)
参数 返回值
·CREATE FUNCTION FUNCTION_NAME
RETURNS
函数体
删除函数DROP FUNCTION 函数名();
·不带参数的函数
日期转换 DATE_FORMAT(NOW(),'%Y年%m月%d日’);
·CREATE FUNCTION F1() RETURNS VARCHAR(30)
· RETURN DATE_FORMAT(NOW(),'%年%月%日');
·有参数得函数
存储过程
·CREATE PROCEDURN sp_name()
调用 存储过程 CALL sp_name();
存储过程中 类型 IN OUT 分别代表输入的,返回的
ROW_COUNT();显示变化得行数
DELIMITER //分界符
CREATE PROCEDURE p_name( IN p_age smallint unsigned,OUT p_delect smallint unsigned,OUT p_username smallint unsigned)
->begin
->DELETE FROM tb_name WHERE age=p_age;
->SELECT ROW_COUNT() INTO p_delect; //将查找出来的值赋予p_delect
->SELECT COUNT(id) from tb_name INTO p_username;
->end
->//
DELIMITER ;
CALL p_name(20,@a,@b);
declare 声明得是局部得变量 ,在begin end 中使用
select 。。into 变量; @变量 是全局变量,用户变量,只对当前用户所使用的客户端有效
存储引擎
查看数据表 show tables;
查看数据表得创建 show create table tb_name;
并发控制 修改时保证数据一致性和完整性
*锁
·共享锁(读锁):在同一时间段,多个用户可以读取同一个资源,读取过程中数据不会发生任何变化
·排他锁(写锁):在任何时候只能有一个用户可以写入资源,当进行写锁时会阻塞其他得读锁或者写锁操作
*锁颗粒
-表锁,是一种开销最小的锁策略(当用户,打开表,用户就会获得这个权限)
-行锁,是一种开销最大得锁策略
事务:用于保证数据库的完整性
外键 : 保证数据一致性
索引:是对数据表中一列或者多列的值进行排序的一种结构
1
存储引擎包括:
·MyISAM
·InnoDB
·Memory
·CSV
·Archive
`
****修改存储引擎的方法。
·第一种方法
修改配置文件 -dafault-storage-engine=engine(默认);
·第二种方法
CREATE TABLE tb_name(
->..
->)ENGINE=MyISAM;
查看 show CREATE TABLE tb_name;查看引擎的方式
·第三种方法
ALTER TABLE tb_name RNGINE=InnoDB;修改了数据表的存储引擎
DESC tb_name/查看数据表的机构
· tb_name1 AS tb_name2//更新别名
declare 声明得是局部得变量 ,在begin end 中使用
select 。。into 变量 和 @变量 都是全局变量,用户变量,只对当前用户所使用的客户端有效
创建数据库
create database db_name;
查看数据库
show databases;
查看正在使用的数据库
select databases;
使用某数据库
use database;
创建表
create table t_name(
列名 数据类型(size) Null or not Null,//默认为null
...
)
查看数据表
show tables;
show tables from db_name;
show tables from mysql;
查看数据表结构
show columns from tb_name;
插入记录
insert [into] tb_name [(col_name,..)]values(val,...);[]代表可以省略,如果省略就要全部都要赋值
记录的查找
select 。。。。from tb_name;//*代表全部的字段,也就是列。
自动编号 必须和主键(自动为not null)一起使用,默认起始值为一。
create table tb(
id smallint ussigned Auto_increment [primary] key;
.....)
唯一约束unique key(可以存在null,保证记录的唯一性,可以存在多个唯一约束)//也是保证了记录的不重复,null特别
create table tb(
id smallint ussigned Auto_increment [primary] key;
username varchar(20) not null unique key;
.....)
默认约束 default//如果没有复制,系统赋予默认值
create table tb(
id smallint ussigned Auto_increment [primary] key;
username varchar(20) not null unique key;
sex Enum('nan','nv') default 'nan';
.....)
外键约束的要求解析(foreign key)
test pro users
添加(单列,不需要添加小括号)多列必须添加小括号,切不能指顶位置
alter table tb_name ADD [column] col_name int nut null [first|after col_name1(在谁之后)] 默认在最后
添加主键约束
alter table tb_name ADD [constraint [symbol]] primary key[index_type](col_name)
添加唯一约束
alter table tb_name ADD [constraint [symbol]] UNIQUE[index_type](col_name)
添加唯一约束
alter table tb_name ADD [constraint [symbol]] FOREIGN KEY[index_type](col_name) REFERENCES table_name(col_name);//参照得那个字段
添加/删除默认约束
alter table tb_name alter [column] col_name{set default literal(默认值)| Drop default}
删除主键约束
alter table tb_name Drop primary key;
删除唯一约束
首先得查一下 show indexes from Table_name\G(网格状查看)
alter table tb_name Drop index col_name;
删除外键约束
show create table table_name;
alter table tb_name Drop foreign key 外键约束得名字;
删除列
alter table tb_name drop col_name//单列
alter table tb_name drop col_name1,col_name2..;//多列
修改数据表
修改列定义
alter table tb_name modify [column] col_name 数据类型 nut null frist||after col_name;//改变列得位置,类型也可以修改,但是可能造成数据得丢失
修改类名称
alter table tb_name change old_col_name new_col_name 数据类型(也可以改变)
修改数据表得名字
alter table tb_name rename new_table_name;
rename table ta_name to new_tab_name[...]//可以修改多个表名
插入insert
1.insert tb_name(clo_name,..)VALUES(value1,value2,.。。。,表达式,值都可以,与前面相匹配)//在这个列中,可以一次性插入多个,
当给auto_increment 可以赋值null或则default
给default 可以赋予default
2.insert tb_name1(col_name,....) select ..from tb_name2;
3.insert tb_name set col_name="";
更改记录(单表更新)
update tb_name set col_name="",...更新一列或者多列
删除记录,单表删除
delect from tb_name where ...
查询表达式可以使用AS alias_name作为别名
select 表名.列名 ...多表链接得时候,这样不会出现错。
group by col_name 或者在select语句中列得位置(数字)【asc默认上升||desc下降】having where (要么 是个聚合函数,要么在select中有这个字段(列名))
AVG()平均 ROUND四舍五入
order by col_name,col_name2....可以多个判断
limit 限制记录所返回得数量
LIMIT 2||limit 3,2;//但是默认从0开始
LIMIT 数值||从那一行开始,数值(多少个)
子查询
SET NAMES GBK//就可以在mysql中显示以gbk的形式显示 \G网格形式显示\\''单引号中可以写入字符串
DESC tb_name/查看数据表的机构
>ANY 其中任意一个,比最小值小就行<比最大值小
>SOME 其中任意一个,比最小值小就行<比最大值小
ANY SOME 是一样的
>All 满足其全部的条件 ,!=任意值
in /not in 等价于any some运算 ()满足其中至少一个
Exists //not exists
***参照一个表更新另一个表,多表更新
inner join 用on来链接两个表的条件//只能显示两个表共有的
left join 左表中,以左表为标准,显示全部有的 右表不存爱呈现不出来的null取代
right join 右表中,以右表为标准,显示全部有的 左表不存爱呈现不出来的null取代
inner join
update tb_name [连接类型(inner left right)] INNER JOIN tb_name2
->ON tb_name.列名=tb_name2.列名
->SET tb_name.列名=。。。;//但是列的数据类型并没有改变要想改变数据类型
***** UPDATE TABLE tb_name
->CHANGE old.col_name new.col_name1 数据类型 not null||null
CREATE ....SELECT
CREATE TABLE[IF NOT EXISTS] tb_name
->(
-> col_name1 (数据类型) primary key auto_increment,
->col_name2.....
->)
->select .....;//aotu_increment 的不用管了,只要把其他的添加进去就行
***三个表的链接
SELECT col_name1,col_name2...from tb_name1 AS 别名
->INNER JOIN tb_name2 ON 条件
->INNER JOIN tb_name3 ON 条件
自身链接 5-13
将自己看成两个表,一个为字表,一个为父表,一定要起一个别名,别名可以写在声明前面
例如 table table_name
` select p.col_name,p.col_name2,s.col_name FROM tb_name AS p LEFT(RIGHT,INNER) JOIN
tb_name AS s
->ON 条件 GROUP BY p.col_name ORDER BY p.coi_name;
多表的删除 (5-14)
首先要判断一下,表中重复的东西,例如,运用分组和聚合函数
SeleCT col_name from tb_name GROUP BY col_name HAVING count(col_name)>1;
//也要有别名,子查询可以设置一个别名
DELETE t1 FROM tb_name AS t1 LEFT JOIN (
SeleCT col_name from tb_name GROUP BY col_name HAVING count(col_name)>1)
AS t2 ON t1.col_name=t2.col_name WHERE t1.col_ID>t2.col_ID;
//这个列子的含义是 删除一个表中 某项东西重复的(名字)并且保留 ID小的
字符函数
concat('',''....)//可以连接多个字符串
CONCAT_WS('分隔符’,‘’,‘’,...)//使用指定的分隔符进行字符链接
` 出现(‘’分隔符‘’分隔符。。。)
FORMAT(数字,小数点几位)
FORMAT(1235.69,0)保留到整数
LOWER();//小写
UPPER();//大写
LEFT('',INT)//保留几个字符
RIGHT('',INT)//右边开始保留几个字符
TRIM('')删除空格,前导和后导的,中间的删除不了
TRIM(LEADING '前导字符'FROM '字符串');//前导
TRIM(TRAILING '前导字符'FROM '字符串');//后续
TRIM(BOTH '前导字符'FROM '字符串');//前导,后续,中间的删除不了
REPLACE('字符串','要被代替的字符','代替成什么东西')//替换
LIKE‘’ESCEPT 1 (意思是1之后的那个%不再是通配符了)//模式匹配 %0-多个字符 _一个字符
SUBSTRING(‘字符串’,‘冲那一位开始截取int从1||-1(正,反)开始’,'截取几位')
select connection_id() //链接id
· select database()//当前锁打开的数据库
user()
LAST_INSERT_ID()//最后插入的id
VERSION()//当前版本信息
DELIMITRT //分界符
自定义函数(user-defined function,UDF)
参数 返回值
·CREATE FUNCTION FUNCTION_NAME
RETURNS
函数体
删除函数DROP FUNCTION 函数名();
·不带参数的函数
日期转换 DATE_FORMAT(NOW(),'%Y年%m月%d日’);
·CREATE FUNCTION F1() RETURNS VARCHAR(30)
· RETURN DATE_FORMAT(NOW(),'%年%月%日');
·有参数得函数
存储过程
·CREATE PROCEDURN sp_name()
调用 存储过程 CALL sp_name();
存储过程中 类型 IN OUT 分别代表输入的,返回的
ROW_COUNT();显示变化得行数
DELIMITER //分界符
CREATE PROCEDURE p_name( IN p_age smallint unsigned,OUT p_delect smallint unsigned,OUT p_username smallint unsigned)
->begin
->DELETE FROM tb_name WHERE age=p_age;
->SELECT ROW_COUNT() INTO p_delect; //将查找出来的值赋予p_delect
->SELECT COUNT(id) from tb_name INTO p_username;
->end
->//
DELIMITER ;
CALL p_name(20,@a,@b);
declare 声明得是局部得变量 ,在begin end 中使用
select 。。into 变量; @变量 是全局变量,用户变量,只对当前用户所使用的客户端有效
存储引擎
查看数据表 show tables;
查看数据表得创建 show create table tb_name;
并发控制 修改时保证数据一致性和完整性
*锁
·共享锁(读锁):在同一时间段,多个用户可以读取同一个资源,读取过程中数据不会发生任何变化
·排他锁(写锁):在任何时候只能有一个用户可以写入资源,当进行写锁时会阻塞其他得读锁或者写锁操作
*锁颗粒
-表锁,是一种开销最小的锁策略(当用户,打开表,用户就会获得这个权限)
-行锁,是一种开销最大得锁策略
事务:用于保证数据库的完整性
外键 : 保证数据一致性
索引:是对数据表中一列或者多列的值进行排序的一种结构
1
存储引擎包括:
·MyISAM
·InnoDB
·Memory
·CSV
·Archive
`
****修改存储引擎的方法。
·第一种方法
修改配置文件 -dafault-storage-engine=engine(默认);
·第二种方法
CREATE TABLE tb_name(
->..
->)ENGINE=MyISAM;
查看 show CREATE TABLE tb_name;查看引擎的方式
·第三种方法
ALTER TABLE tb_name RNGINE=InnoDB;修改了数据表的存储引擎
阅读全文
0 0
- 小笔记-mysql基础
- MySQL基础小知识
- 小笔记-java基础
- mysql事物小笔记
- MySQL 应用小笔记
- mysql小笔记
- mysql小知识笔记
- 笔记-mysql 基础
- mysql基础笔记
- mysql 基础笔记
- mysql基础学习笔记
- Mysql基础笔记
- MYSQL基础笔记
- MySQL基础笔记
- 基础MySQL笔记
- Mysql基础学习笔记
- Mysql学习-基础笔记
- Mysql基础学习笔记
- .net中数据存入数据库时中文变?
- 算法(第四版) --代码运行环境的搭建(Mac版本)
- 编写类String的构造函数、析构函数和赋值函数
- rbac数据库错误
- 《python核心编程》学习笔记
- 小笔记-mysql基础
- 【Python】高级特性之生成器
- Django中favicon.ico文件的配置
- 实现Singleton模式
- 阅读小结:Unsupervised Learning of Visual Representations using Videos
- Oracle常用sql
- 算法设计与应用基础系列5
- 有关【学过该课程的同学还学过】的一段代码
- SpringMVC + Freemarker 模版的使用