基础

1.1 mysql表复制

复制表结构+复制表数据

mysql>create table t3 like t1;

mysql>insert into t3 select * from t1;

1.2 mysql 索引

1.ALTER TABLE用来创建普通索引,UNIQUE索引或PRIMARY KEY索引

ALTER TABLE table_name ADD INDEX index_name(column_list)

ALTER TABLE table_name ADD UNIQUE(column_list)

ALTER TABLE table_name ADD PRIMARY KEY(column_list)

2.create index

CREATE INDEX index_name ON table_name(column_list)

CREATE UNIQUE INDEX index_name ON table_name(column_list)

3.drop index

DROP INDEX index_name ON table_name

4.alter table table drop

ALTER TABLE table_name DROP INDEX index_name

ALTER TABLE table_name DROP PRIMARY KEY

1.3mysql视图

mysql>create view v_t1 as select * from t1 where id>4 and id<11;

mysql> ? view //view视图的帮助信息

ALTER VIEW

CREATE VIEW

DROP VIEW

mysql>show tables; //查看视图

mysql>drop view v_t1; //删除视图v_t1

1.4mysql内置函数

字符串函数:

CONCAT(string2[,...]) //连接字符串

LCASE(string2) //转换成小写

UCASE(string2) //转换成大写

LENGTH(string) //string长度

LTRIM(string2) //去除前端空格

RTRIM(string2) //去除后端空格

REPEAT(string2,count) //重复count次

REPLACE(str,search_str,replace_str) //在str中用replace_str替换search_str

SUBSTRING(str,position[,length]) //从str的position开始,取length个字符

SPACE(count) //生成count个空格

数学函数:

BIN(decimal_number) //十进制转二进制

CEILING(number2) //向上取整

FLOOR(number2) //向下取整

MAX(col) //取最大值,聚合时使用

MIN(col) //取最小值,聚合时使用

SORT(number2) //开平方

RAND() //返回0-1内的随机值

日期函数:

CURDATE() //返回当前日期

CURTIME() //返回当前时间

NOW() //返回当前的日期时间

UNIX_TIMESTAMP(date) //返回当前date的UNIX时间戳

FROM_UNIXTIME() //返回UNIX时间戳的日期值

WEEK(date) //返回日期date为一年中的第几周

YEAR(date) //返回日期date的年份

DATEDIFF(expr,expr2) //返回起始时间expr和结束时间expr2间天数

1.5mysql预处理语句

设置stmt1预处理,传递一个数据作为一个where判断条件

mysql>prepare stmt1 from 'select * from t1 where id>?';

mysql>set @i=1; //设置一个变量

mysql>execute stmt1 using @i; //执行stmt1预处理

mysql>set@i=5; //设置@i为5

mysql>execute stmt1 using @i; //再次去执行stmt1

mysql>drop prepare stmt1: //如何删除预处理stmt1

1.6mysql事务处理

mysql>set autocommit=0; //关闭自动提交功能

mysql>delete from t1 where id=11; //从表t1中删除了一条记录

mysql>savepoint p1; //此时做一个p1还原点

mysql>delete from t1 where id=10; //再次从表t1中删除一条记录

mysql>savepoint p2; //再次做一个p2还原点

mysql>rollback to p1; //此时恢复到p1还原点,即p2自动失效

mysql>rollback; //退回到最原始的还原点

1.7mysql存储

创建一个存储p1();

mysql>d //改变语句界定符

mysql>create procedure p1()

->begin

->set @i=0;

->while @i<10 do

->select @i;

->set @i=@i+1;

->end while;

->end;

->//

mysql>d;

mysql>call p1(); //执行存储p1();

mysql>show procedurestatusG //查看procedure p1()的status信息

mysql>show create procedure p1G //查看procedure p1()的具体信息

1.8mysql触发器 (用于增删改)

创建一个名字为tg1的触发器,当向t1表中插入数据时,就向t2表中插入一条数据

修改delimiter为//

mysql>d //

mysql>create trigger tg1 before insert on t1 for each row

>begin

>insert into t2(id) values(new.id);

>end//

准备两个空表t1和t2

mysql>select * from t1;

mysql>select * from t2;

向t1表中插入多条数据:

mysql>insert into t1 values(1),(2),(3),(4);

mysql>create trigger t2 before delete on t1 for each row

-> begin

-> delete from t2 where id=old.id;

-> end//

如何制作删除表t1后t2表中的记录也会跟着删除呢?

mysql>create trigger tg3 before delete on t1 for each row

>begin delete from t2 where id=old.id;

>end//

如何制作更改表t1后t2表也跟着修改呢?

mysql>create trigger tg4 before update on t1 for each row

>begin update t2 set id=new.id where id=old.id;

>end//

改回语句界定符为分号

mysql>d;

查看触发器:

mysql>show triggers;

1.9重排auto_increment值

MYSQL数据库自动增长的ID如何恢复

清空表的时候,不能用delete from tablename;

而是要用:truncate table tablename;

这样auto_increment就恢复成1了

或者

清空内容后直接ALTER命令修改表:

alter table tablename auto_increment=1;

常见SQL技巧

2.1 正则表达式的使用 (? regexp)

使用正则表达式“$”和“[…]”进行匹配:

mysql>select name,email from t where email REGEXP “@163[.,]com$”

使用like方式查询:

mysql>select name,email from t where email like “%@163.com” or email like “%@163,com”

2.2 巧用RAND()提取随机行

MYSQL数据库中有一个随机函数rand()是获取一个0-1之间的数,利用这个函数一起和order by能够把数据随机排序。

mysql>select * from stu order by rand();

下面是通过limit随机抽取了3条数据样本

mysql>select * from stu order by rand() limit3;

2.3 利用GROUP BY的WITH ROLLUP子句统计

使用group by 的 with rollup子句可以检索出更多的分组聚合信息

对demo表按照cname、pname列分组对pname列进行聚合计算如下

同样使用with rollup 关键字后,统计出更多的信息,如下(注意:with rollup不可以和order by同时使用)

2.4 利用BIT GROUP FUNCTIONS做统计

在使用group by语句时可以同时用使用bit_and、bit_or函数来完成统计工作。这两个函数的作用主要是做数值之间的逻辑位运算

mysql>select id,bit_or(kind) from order_rab group by id;

对order_rab表中id分组时对kind做位与和或计算。

mysql>select id,bit_and(kind) from order_rab group by id;

2.5 使用外键需要注意的问题

创建外键的方式如下

mysql>create table temp(id int,name char(20),foreign key(id) references outTable(id) on delete cascade on update cascade);

注意:Innodb类型的表支持外键,myisam类型的表,虽然创建外键可以成功,但是不起作用,主要原因是不支持外键。

2.6 mysql中help的使用

在mysql中那么多的命令如何才能记得住是个问题,这里有一个特别好的获得帮助的好方法,当然是在mysql》的提示下的操作:

? %

可以获得所有的mysql>里的命令,这个是最多的,那么这里的东西如何去进一步获得帮助呢?

?create

? opti%

因为记不住optimize的全称,这个时候可以用%来替代

? reg%

获得了记不住了的regexp用法

查看所有用? contents可以得到所有的帮助大纲,通过这个目录再用?继续往下细查。

mysql+create+table+index_mysql------基础及常见SQL技巧相关推荐

  1. MySQL Create Table创建表

    表的创建命令需要: 表的名称 字段名称 定义每个字段(类型.长度等) 语法 下面是通用的SQL语法用来创建MySQL表: CREATE TABLE table_name (column_name co ...

  2. MySQL 性能优化:8 种常见 SQL 错误用法!

    声明:转载自 MySQL 性能优化:8 种常见 SQL 错误用法! 1.LIMIT 语句 分页查询是最常用的场景之一,但也通常也是最容易出问题的地方.比如对于下面简单的语句,一般 DBA 想到的办法是 ...

  3. mysql create table select from_mysql create table select复制表结构和数据实例讲解

    比如现在有一张表,我们要将该表复制一份,以备以后使用,那么如何使用mysql语句来实现呢?其实我们可以直接使用create ... select ... from语句来实现,具体实现方法请看下面实例. ...

  4. mysql create table 语法详解

    create table 可以分成三类 一.一般create table 语句: 1 语法 create [temporary] table [if not exists] tbl_name(crea ...

  5. mysql create table()_MySQL Create Table创建表

    表的创建命令需要: 表的名称 字段名称 定义每个字段(类型.长度等) 语法 下面是通用的SQL语法用来创建MySQL表: CREATE TABLE table_name (column_name co ...

  6. mysql create table 报错near '`id` int(11) NOT NULL AUTO_INCREMENT

    You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version ...

  7. MySQL create table as与create table like对比

    对于mysql的复制相同表结构方法,有create table as 和create table like 两种,区别是什么呢? create table t2 as select * from t1 ...

  8. MySQL Create Table

    CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name(create_definition,...)[table_options][partition_op ...

  9. MySQL create table语法中的key与index的区别

    在create table的语句中,key和index混淆在一起,官方手册中的解释是这样: KEY is normally a synonym for INDEX. The key attribute ...

最新文章

  1. ios android安全性分析,Android与iOS的对比分析及Android安全技术的设计与实现
  2. iPhone浏览器性能测试
  3. Docker安装mysql容器
  4. 21_异常_第21天(异常、企业面试题,思维导图下载)
  5. [css] 说说你对css盒子模型的理解
  6. antimalware可以关闭吗_“对方正在输入...”什么时候会出现?可以关闭吗?
  7. api pdo php,从PHP Mysql API转换为PDO时如何处理数据类型
  8. 不是 group by 表达式_12正则表达式
  9. mybatis 关联查询 延迟加载
  10. 二项式法在负荷计算机的应用,7.5二项式法确定计算负荷
  11. 数字图像处理与python实现 pdf_python数字图像处理的学习路线?
  12. [转载] 远程方法调用(RMI)与远程过程调用(RPC)
  13. 两款专业卸载软件 Revo Uninstaller Pro 专业版 + msi专业卸载工具
  14. 如何使用笔记本无线网卡创建无线热点?
  15. 30天学习一部无字幕美剧-《老友记》
  16. 通过rgb值判断颜色深浅
  17. php get defined,php中get_defined_constants函数用法实例分析
  18. 同花顺股票交易接口 正确用法
  19. html5中的 hr定位,被大家遗忘的 hr 标签元素
  20. 稳压、调压、监控、DC/DC电路大全2

热门文章

  1. Redis的哨兵机制 或者心跳机制 模式 原理详解
  2. 深入理解 Java 垃圾回收机制
  3. 分别从资源管理,服务用户,进程交互,系统实现的角度分析操作系统的作用
  4. Effective Java之注解优于命名模式(三十五)
  5. AMD和CMD出生的背景和它们解决的问题
  6. MySQL中count(1),count(*),count(某字段)等用法联系和区别
  7. 解题报告——2017年C/C++ A组第五题 字母组串(递归)
  8. 快速pow算法c语言_嵌入式必知基础算法(二)
  9. 专科学历事业单位工资计算机,事业单位人来告诉你:学历跟入编之后待遇关系有多大!很直接...
  10. 只有本地用户才能安装sql_为何只有安装了新风换气机才能打造好的家居环境?听听厂家怎么说...