操作mysql的笔记

来源:互联网 发布:存储卡数据修复 编辑:程序博客网 时间:2024/06/16 20:29
------//////创建数据库//////------:
CREATE {DATABASE|SCHEMA} [IF NOT EXISTS] db_name [DEFAULT] CHARACTER SET [=] charset_name;




show databases; --//显示数据库
show tables [FROM databasename]; --//显示数据库的表
describe tablename; --//查看数据表结构
show columns from tablename; --//查看数据表结构
create table tablename( --//创建表  unsigned,not null,auto_increment(必须与primary key一起使用,赋值时可以采用null或者default),primary key(唯一约束),unique key(唯一约束)
'username' tinyint unsigned not null,
'age' varchar(20) not null,
'salary' float(8.2) unsigned not null
);
create table tb6(
id smallint unsigned auto_increment primary key,
username varchar(20) not null unique key,
sex enum('1','2','3') default '3' --//默认选择3 //enum枚举例子
);


-------///////INSERT插入记录//////------


方法一(INSERT):INSERT [INTO] table_name [('columnname1','columnname2'....)] {VALUES|VALUE} ({exper|DEFAULT},……),(……),……--//表中插入表达式或者数据或者default
方法二(INSERT SET):INSERT [INTO] table_name SET column_name={expr|DEFAULT},…… --///与第一种方法的区别在于,此方法可以使用子查询(SubQuery)
方法三(INSERT SELECT):INSERT [INTO] table_name [(column_name,……] SELECT…… --///此方法可以将查询的结果插入到指定的数据表


-------///////UPDATE更新记录(表单更新)///////-------


UPDATE [LOW_PRIORITY] [IGNORE] table_reference_name SET column_name1={expr|DEFAULT}[,column_nmae2={expr2|DEFAULT}]……[WHERE where_condition]




-------//////DELETE表单删除记录//////------


DELETE FROM table_name [WHERE where_condition];


-------///////SELECT查找记录//////------


SELECT select_expr [,select_expr]                 --//select_expr 是查询表达式
[
FROM table_references
[WHERE where_condition]
[GROUP BY {column_name|position} [ASC|DESC],……]
[HAVING where_condition]
[ORDER BY {column_name|expr|position} [ASC|DESC],……]
[LIMIT {[offset,] row_count|row_count OFFFSET offset}]
]
------select_expr查询表达式
  每一个表达式表示想要的一列,必须有至少一个。
  多个列之间以英文逗号分隔。
  星号(*)表示所有的列。table_name.*可以表示命名表的所有列。
  查询表达式可以使用[AS] alias_name 为其赋予别名。
  别名可以用于GROUP BY,ORDER BY 或HAVING子句。
------WHERE 条件表达式
  对记录进行过滤,如果没有指定WHERE子句,则显示所有记录。
  在WHERE表达式中,可以使用MySQL支持的函数或运算符。
------GROUP BY 查询结果分组
[GROUP BY{column_name|position}[ASC|DESC],……]
------HAVING 分组条件
[HAVING where_condition]
------ORDER BY 对查询结果排序
[ORDER BY {column_name|expr|position} [ASC|DESC],……]
------LIMIT 限制查询结果返回的数量
[LIMIT {[offset,]row_count|row_count OFFSET offset}] ---////offset偏移值












约束:
1、约束保证数据的完整性和一致性。
2、约束分为表级约束和列级约束。
3、约束类型包括:
NOT NULL(非空约束)
PRIMARY KEY(主键约束)
UNIQUE KEY(唯一约束)
DEFAULT(默认约束)
FOREIGN KEY(外键约束)
外键约束的要求:
1、父表和子表必须使用相同的存储引擎,而且禁止使用临时表。
2、数据表的存储引擎只能为InnoDB。 // show create table table_name;查看数据表的存储引擎;MySQL配置文件中设置默认的存储引擎  default-storage-engine=INNODB
3、外键列和参照列必须具有相似的数据类型。其中数字的长度或是否有符号位必须相同;而字符的长度则可以不同。
4、外间列和参照列必须创建索引。如果外键列不存在索引的话,MySQL将自动创建索引。
---///---外键约束例子:
mysql> create table provinces(
    -> id smallint unsigned primary key auto_increment,   //创建一个省份(父表),省份名称对应唯一id,id为主键、smallint unsigned;
    -> name VARCHAR(20) NOT NULL
    -> );
    mysql> create table users(
    -> id smallint primary key auto_increment,//创建一个用户表(子表),关联到省份表
    -> username VARCHAR(10) NOT NULL,
    -> pid SMALLINT UNSIGNED,//关联到省份的pid(外键列)与省份表的id(参照列)字符类型相同smallint unsigned;
    -> FOREIGN KEY(pid) REFERENCES provinces(id)//设置外键(pid)关联到省份表中的(id);
    -> );




修改数据表:
---///添加单列///---//可以指定位置关
 ALTER TABLE table_name ADD [COLUMN] column_name column_definition [FIRST|AFTER col_name];
---///添加多列///---//不能指定位置关系
 ALTER TABLE table_name ADD (column_name column_definition,……);
---///删除列///---
 ALTER TABLE table_name DROP [COLUMN] column_name;
---///添加主键约束///---
 ALTER TABLE table_nmae ADD [CONSTRAINT[symbol]] PRIMARY KEY [index_type] (index_column_name,……);
---///添加唯一约束///---
 ALTER TABLE table_name ADD [CONSTRAINT[symbol]] UNIQUE [INDEX|KEY] [index_name] [index_type] (index_column_name,……)
---///添加外键约束///---
 ALTER TABLE table_name ADD [CONSTRAINT[symbol]] POREIGN KEY [index_name] (index_column_name,……) reference_definition
---///添加/删除默认约束///---
 ALTER TABLE table_name ALTER [COLUMN] column_name {SET DEFAULT literal|DROP DEFAULT}
---///删除主键约束///---
 ALTER TABLE table_name DROP PRIMARY KEY;
---///删除唯一约束///---
 ALTER TABLE table_name DROP {INDEX|KEY} index_name;
---///删除外键约束///---
 ALTER TABLE table_name DROP FOREIGN KEY fk_symbol;//如果没有写外键表示符CONSTRAINT fk_symbo,则将fk_symbo改为table_name+_ibfk_1;
---///修改列定义///---
 ALTER TABLE table_name 
 MODIFY [COLUMN] column_name column_definition [FIRST|AFTER column_name];
---///修改列名称///---
 ALTER TABLE table_name 
 CHANGE [COLUMN] old_column_name new_column_name columne_definition [FIRST|AFTER column_name];
---///数据表更名///---
 ALTER TABLE table_name 
 RENAME [TO|AS] new_table_name; --//////------方法一


 RENAME TABLE table_name TO new_table_name [,table_name2 TO new_table_name2] …… ;  --///////------方法二




多表更新:
UPDATE table_references
SET column_name1={expr2|DEFAULT}
[,column_nmae2={expr2|DEFAULT}]……
[WHERE where_condition]
连接:
MySQL在 SELECT 语句、多表更新、多表删除语句中支持 JOIN 操作。


table_references
{[INNER|CROSS] JOIN | {LEFT|RIGHT} [OUTER] JOIN}
table_references
ON conditional_expr;


INNER JOIN ,内连接
在MySQL中,JOIN,CROSS JOIN 和 INNER JOIN是等价的。
LEFT [OUTER] JOIN,左外连接
REGHT [OUTER] JOIN,右外连接
自身连接
同一个数据表对其自身进行连接。


多表删除
DELETE table_name [.*] [,table_name[.*]]……
FROM table_references
[WHERE where_condition]






MySQL函数
1、字符函数
2、数值运算符与函数
3、比较运算符与函数
4、日期时间函数
5、信息函数
6、聚合函数
7、加密函数


字符函数:
CONCAT('连接体1','连接体2'); 字符连接
CONCAT_WS('指定连接符','连接体1','连接体2 ');使用指定的分隔符进行字符连接
FORMAT(); 数字格式化
LOWER(); 转换成小写字母
UPPER(); 转换成大写字母
LEFT('指定字符串','位数');获取左侧字符
RIGHT('指定字符串','位数');获取右侧字符
LENGTH() 获取字符串长度
LTRIM() 删除前导空格
RTRIM() 删除后续空格
TRIM() 删除前导和后续空格   eg:LEADING , TRAILING , BOTH 前导、后续、两者都;SELECT TRIM(LEADING '?' FROM '??MySQL???');
SUBSTRING() 字符串截取
[NOT] LIKE 模式匹配
REPLACE() 字符串替换




数值运算符与函数:
CEIL() 进一取整数
DIV 整数除法
FLOOR() 舍一取整
MOD 取余数(取模)
POWER() 幂运算
ROUND() 四舍五入
TRUNCATE() 数字截取


比较运算符与函数:
[NOT] BETWEEN……AND…… [不]在范围之内
[NOT] IN() [不]在列出值范围内
IS [NOT] NULL [不]为空


日期时间函数:
NOW() 当前日期和时间
CURDATE() 当前日期
CURTIME() 当前时间 
DATE_ADD() 日期变化
DATEDIFF() 日期差值
DATE_FORMAT() 日期格式化


信息函数:
CONNECTION_ID()连接ID
DATEBASE() 当前数据库
LAST_INSERT_ID()最后插入记录的ID号
USER() 当前用户
VERSION() 版本信息


聚合函数:
AVG() 平均值
COUNT() 计数
MAX() 最大值
MIN() 最小值
SUM() 求和


加密函数:
MD5()   信息摘要算法
PASSWORD() 密码算法




创建自定义函数
CREATE FUNCTION function_name 
RETURNS         --//返回值类型
{STRING|INTEGER|REAL\DECIMAL}
routine_body    --//函数体
  函数体:
    1、函数体由合法的SQL语句构成;
    2、函数体可以是简单的SELECT或INSERT语句;
    3、函数体如果为复合结构则使用BEGIN……END语句;
    4、复合结构可以包含申明,循环,控制结构;
  删除函数:
    DROP FUNCTION [IF EXISTS] function_name
0 0
原创粉丝点击