数据库基础语句
-
连接数据库
mysql -u root -p;
-
查看数据库
show databases;
-
选择一个数据库
USE 数据库名称;
-
查看当前打开的数据库
select database();
-
创建一个基本的表
create table [IF not exists] table_name (column_name data_type,...);
-
查看数据库表列表
show tables [from db_name] [like 'patter' | where expr];
-
查看表接口
desc table_name;
show columns from tbl_name;
-
插入记录
INSERT [into] tbl_name [(col_name,...)] values(val,...);
-
查找记录
select expr ,... from tbl_name;
-
数据库约束
not null 非空约束
primary key 主键约束
unique key 唯一约束
default 默认约束
foreign key() peferences 外键约束
外键约束要求: - 父表和字表必须使用相同的存储引擎 禁止使用临时表 - 存储引擎只能为 __InnoDB__ - 外键列和参照列必须具有相似的数据类型,其中数字的长度或是否有符号为必须相同;而字符的长度则可以不同 - 外键列和参照列必须创建索引,如果外键列不存在索引MySQL自动创建索引 外键约束的参照操作: - CASCADE:从父表删除或更新且自动删除或更新字表中匹配的行 - SET NULL:从父表删除或更新行,并设置子表中的外键列为NUll。如果使用该项,必须保证子表列没有指定not null - RESTRICT:拒绝对父表的删除或更新操作 - NO ACTION:标准的SQL关键字,在MySQL中与RESTRICT相同
-
主键自增
primary key auto_increment
-
创建表时列为无符号
unsigned
-
查看创建一个表的SQL语句
show create table tbl_name;
-
查看表的索引
show Indexes from tbl_name/G;
-
添加单列
alter table tbl_name add [column] col_name column_definition [first | after col_name];
-
添加多列
ALTER TABLE tb1_name ADD[COLUMN] (col_name column_definition,...);
-
删除列 以逗号分割删除多个
ALTER TABLE tb1_name DROP[COLUMN] col_name;
-
修改列
alter table tble_name modify [column] col_name column_definition [first | after col_name];
-
修改列名称
ALTER TABLE tb1_name change old_col_name new_col_name column_deinition [first | after col_name];
-
修改数据表
ALTER TABLE tb1_name rename [TO|AS] new_tbl_name;
rename TABLE tb1_name rename TO new_tbl_name[,tbl_name2 to new_tbl_name2]...;
-
插入记录
insert [INTO] tbl_name [(col_name)] {values | value} ({expr | default},..),(...),...;
-
插入记录
insert [info] tb1_name set col_name={expr|default},...;
-
插入记录
insert [info] tb1_name [(col_name,...)] select ...;
-
更新记录(单表更新)
UPDATE [low_priority] [ignore] table_reference set col_name1={expr|default}[,col_name2={expr|default}]...[where where_condition];
-
删除记录(单表删除)
delete from tbl_name [where where_condition];
-
查询记录-多条件
select select_expr[,select_expr ...][from table_references[where where_condition][group by{col_name | position}[ASC|DESC],...][having where_condition][order by{col_name|expr|position}[ASC|DESC],...][limit {[offset,] row_count | row_count offset offset}]]
;查询表达式 select_expr - 每个表达式表示想要的一列,必须有至少一个。 - 多个列之间以英文逗号分隔 - 星号(*)表示所有列。tbl_name.*可以表示命名表的所有列。 - 查询表达式可以使用[AS] alias_name 为其赋予别名。 - 别名可用于group by ,order by 或 having 字句。
-
创建自定义函数
create function function_name returns {string | integer | real | decimal} routine_body;
-
删除定义函数
drop function function_name;
自定义函数两个必要条件: - 参数(可以包含0个或多个参数) - 返回值(必须包含一个返回值) - 具有复合结构的函数体需要使用BEGIN...end 来包含
-
修改mysql的结束符号
delimiter 符号;
-
存储过程
——————;
存储过程是SQL语句和控制语句的预编译集合,以一个名称存储并作为一个单元处理,用户调用执行,接收多个参数,返回多个参数。 存储过程优点: - 增强了SQL语句的功能和灵活性 - 实现较快的执行速度 - 减少了网络流量
-
创建存储过程
create [definer = {user | current_user}] procedure sp_name ([proc_parameter[,...]]) [characteristic..] routine_body;
proc_parameter: [IN |OUT|INOUT] param_name type
- IN:表示该参数的值必须在调用存储过程时指定 - OUT:表示该参数的值可以被存储过程改变,并且可以返回 - INOUT:表示该参数的调用时指定,并且可以被改变和返回 - 特性 - comment:注释 - contains sql:包含SQL语句,但不包含读或写数据的语句 - no sql:不包含sql语句 - reads sql data:包含读数据的语句 - modifies sql data:包含写数据的语句 - sql security {definer|invoker} : 指明谁有权限来执行 - 过程体 - 由合法的SQL语句组成 - 可以是任意的SQL语句 - 复合结构则使用BEGIN..END - 可以包含声明、循环、控制语句 - 结语 - 存储过程:是SQL语句和控制语句的预编译集合,以一个名称存储作为一个单元处理 - 参数:输入类型、输出类型、输入&输出类型 - 创建:create...procedure... - 注意事项 - 创建存储过程或自定义函数需要用delimiter语句修改定界符 - 如果自定义函数或存储过程复合体要用begin..end 进行包裹 - 存储过程用call来调用
-
调用存储过程
CALL sp_name([parmater[,...]]);
CALL sp_name[()];
-
修改存储过程
ALTER procedure sp_name [characteristic...] comment 'string' |{contains SQL |NO SQL|reads sql data|modifies sql data} |sql security{definer|invoker};
-
删除存储过程
drop procedure sp_name;
-
设置用户变量 只在当前的客户端生效
set @par_name;
-
返回通过增删改查操作成功的记录数
SELECT row_count();
-
存储引擎
--;
MySQL可以将数据以不同的技术存储在文件(内存)中,这种技术就称为存储引擎。 - MySQL支持的存储引擎 - MyISAM:不支持事务,支持表锁,支持索引,最大256TB,支持数据压缩,支持外键 - InnoDB:支持事务,支持行锁,支持索引,最大64TB,不支持数据压缩,支持外键 - Memory:不支持事务,表锁,支持索引,不支持数据压缩,支持外键 - CSV: - Archive:不支持事务,支持行锁以及索引,支持数据压缩,支持外键 - 共享锁(读锁) - 在同一时间段内,多个用户可以读取同一个资源,读取过程数据不会发生任何变化 - 排它锁(写锁) - 在任何时候只能有一个用户写入资源,当进行写锁时会阻塞其他的读锁或者写锁操作 - 锁颗粒 - 表锁:开销最小锁策略 - 行锁:开销最大的锁策略(支持最大并发) - 事务的四大特性 - 原子性(A),一致性(C),隔离性(I),持久性(D)
-
修改存储引擎
create table tbl_name(...)engine = engine;