MySQL基础操作

来源:互联网 发布:python中iteritems 编辑:程序博客网 时间:2024/06/15 10:27
1.MySQL表复制
(1)复制表结构 create table t2 like t1;
mysql>desc t1;//查看表结构
mysql>show create table t1;//显示创建表语句
(2)复制表数据 insert into t2 select * from t1;//t2表与t1表的结构完全一致,若不一致需要在两个表指明字段
2.MySQL索引
有以下两种方式,推荐使用第一种,第二种方式不支持主键索引
(1)ALTER TABLE用来创建和删除普通索引、唯一索引(UNIQUE)和主键索引(PRIMARY KEY)
ALTER TABLE table_name ADD INDEX index_name (column_list) //index_name 索引名
ALTER TABLE table_name ADD UNIQUE unique_name (column_list) // unique_name 唯一索引名
ALTER TABLE table_name ADD PRIMARY KEY (column_list) //若table_name表有主键索引,则不能再创建
删除
ALTER TABLE table_name DROP INDEX index_name //删除索引、唯一索引 index_name 索引名
ALTER TABLE table_name DROP PRIMARY KEY //删除主键索引
注意:若主键为自增则无法删除,需要先取消自增 mysql>ALTER TABLE table_name MODIFY id int unsigned not null;
(2)CREATE INDEX index_name ON table_name (column_list) //index_name 索引名
CREATE UNIQUE INDEX table_name ON table_name (column_list) //若column_list列存在相同数据,在唯一索引创建不成功
删除
DROP INDEX index_name ON table_name //删除索引、唯一索引
查看索引
SHOW INDEX FROM table_name或者SHOW KEYS FROM table_name;
3.MySQL视图
(1)创建视图
CREATE VIEW view_name AS SELECT * FROM table_name WHERE id>1 and id<5;//view_name 视图名 table_name 表名
(2)查看视图
SHOW TABLES;//显示所有表名(含视图名)
(3)从视图查询数据
SELECT * FROM view_name;//从视同查询数据,若视图依赖的表出现问题,则会报错
(4)删除视图
DROP VIEW view_name;
4.MySQL内置函数
(1)字符串函数
CONCAT(string [,...]) //连接字符串
SELECT CONCAT('hello',',world') as name;

LCASE(string) //转成小写
SELECT LCASE(name) AS name FROM table_name;//name为table_name中的一个字段

UCASE(string) //转成大写
SELECT UCASE(name) AS name FROM table_name;//name为table_name中的一个字段

LENGTH(string) //求长度
SELECT name,LENGTH(name) as length FROM table_name;//length为别名,可随便命名

LTRIM(string) //去掉左侧空格
SELECT LTRIM(name) as name FROM table_name;

RTRIM(string) //去掉右侧空格
SELECT RTRIM(name) as name FROM table_name;

REPEAT(string,count) //重复count次
SELECT name,REPEAT('*',6) as rep FROM table_name;

REPLACE(str,search_str,replace_str) //将str中的search_str用replace_str替换掉
SELECT REPLACE(name,'HUANG','huang') from table_name;

SUBSTRING(str,position [,length]) //在str中,从position开始,取length个字符
SELECT SUBSTRING(name,2,5) from table_name;

SPACE(count) //生成count个空格
SELECT id,SPACE(10),name from table_name;
(2)数学函数
BIN(decimal_number)//十进制转二进制
CEILING(number)//向上取整
FLOOR(number)//向下取整
MAX(col)//取最大值
MIN(col)//取最小值
SQRT(number)//求平方根
RAND() //返回0-1之间的随机数
SELECT * FROM table_name ORDER BY RAND();//随机排序
(3)日期函数
CURDATE() //返回当前日期
CURTIME() //返回当前时间
NOW() //返回当前日期时间
UNIX_TIMESTAMP(date) //返回date的UNIX时间戳
FROM_UNIXTIME() //返回UNIX时间戳的日期
WEEK(date) //返回date为一年中的第几周
YEAR(date) //

DATEDIFF(expr,expr2) //expr和expr2的间隔天数

5.MySQL预处理语句
6.MySQL事务处理
mysql>set autocommit=0;
mysql>delete from t1 where id=11;
mysql>savepoint p1;
mysql>delete from t1 where id=10;
mysql>savepoint p2;
mysql>rollback to p1;
mysql>rollback;
7.MySQL存储
(1)存储过程:类似于函数,就是把一段代码封装起来,当要执行这段代码的时候,可以通过调用该存储过程来实现。
在封装的语句体里面,可以用if/else,case,while等控制结构
可以进行SQL编程
(2)存储过程相关操作
a.查看现有的存储过程
mysql>show procedure status;
b.删除存储过程
mysql>drop procedure 存储过程名
c.创建存储过程
mysql>delimiter ## //修改语句结束符为## 也可以使用\d ## 进行修改
create procedure p1()
begin
select * from t1;
end;
##

mysql>\d ##
create procedure p2()
begin
set @i = 7;
while @i<=100 do
insert into t1(name) values(concat('huang',@i));
set @i = @i+1;
end while;
end;
##

mysql>\d ##
create procedure p3(n int)
begin
select * from t1 where id = n;
end;
##
d.调用存储过程
call p1();
8.MySQL触发器
mysql>\d ##
mysql>create trigger tg1 before/after insert/update/delete on table_name for each row
>begin
>sql语句;
>end
>##
查看所有的触发器
mysql>show triggers\G;

删除触发器
mysql>drop trigger tg1;
9.MySQL重排auto_increment值
delete from table_name;
alter table table_name auto_increment=1;
或者truncate table table_name;


1 0