1、複製表結構 將表hello的結構複製一份為表hello3
#2、複製資料
a、如果兩個表的結構一樣且你要複製所有欄位的資料
mysql> insert into hello3 select * from hello;
b、兩個表結可能不一樣且你只要複製部分列的資料
mysql> insert into hello3 (name,sex,degree) select name,sex,degree from hello;
二、索引
1、create 建立索引(只能建立普通索引和唯一索引)
建立普通索引:mysql> create index in_name on hello(name); 給表hello中的name列會建立名為in_name的索引。
建立唯一索引:mysql> create unique index un_name on hello(name); 為表hello中的name列建立唯一索引名為 un_name的索引。
檢視索引:mysql> show index from hello; 檢視表格 hello的索引。
刪除索引:mysql> drop index in_name on hello; 刪除hello表中名為in_name的索引。
2、alter 建立索引(建立索引的通用方式)
建立普通索引:mysql> alter table hello add index in_name(name); 為表hello中的name列建立名為in_name的索引。
刪除(普通/唯一)索引:mysql> alter table hello drop index in_name; 刪除表hello中名為in_name的普通索引。
刪除自增:mysql> alter table hello modify id int unsigned not null;刪除表hello中 id列(int型別) 的自增特性。
刪除主鍵索引:mysql> alter table hello drop PRIMARY KEY;
建立唯一索引:mysql> alter table hello add unique(name); 為hello表的name建立唯一索引名是預設的。
建立主鍵索引:mysql> alter table hello add primary key(id); 為hello表的id欄位建立主鍵索引。
將主鍵索引設為自增:mysql> alter table hello modify id int unsigned not null auto_increment;將hello表中的主鍵id列設定為自增。
主表資料的變化,檢視會時時做相對應的變更。如果視圖所依賴的資料表出現錯誤(已刪除)則視圖也會發生錯誤。
建立視圖:mysql> create view v_hello as select * from hello where id >5;
# 刪除視圖:mysql> drop 問題 v_hello;
刪除視圖:mysql> drop #_hello;#hello;
## 查看視圖的建立過程:mysql> show create view v_hello; 查看視圖v_hello 的建立過程。字函數
1、CONCAT(str1,str2, ................ ; select lcase("MYSQL"); 3、UCASE(str1) 轉大寫 mysql> select UCASE("MysqlTH");##mysql> select UCASE("MysqlTH");
## 、 ) str的長度 mysql> select length('mysql'); 5、LTRIM(Str) 移除前段空格" my my 〕sql); ; 6、RTRIM(str) 移除後端空格 mysql> select RTRIM(' my空格# 7、REPEAT( mycount '); 7、REPEAT(str. mysql> select repeat('mysql',2); 8、REPLACE(str,search_str,replcae_str) 替換為中的search_str replac_strstr,search_str,replcae_str) 將中的search_str 合子 select REPLACE('mysql','m','M'); 9、SUBSTRING(str,postion,length) 從str的postion開始取length個字元 mysql> substring('mysql',1,2); 從1開始 10、SPACE(count) 產生count個空格 mysql> select concat(space(3),'mysql') ;數學函數
1、BIN(decimal number): 將十進位轉為二進位
#2、 CEILING(number) 向上取整 mysql> select ceiling(10.12); 結果:11
3、FLOOR(number) 向下取整 mysql> select ceiling(10.12); 结果:10
4、MAX(column) 获取 最大列
5、MIN(column) 获取最小列
6、SQRT(num) 开平方
7、RAND() 返回0-1之间的随机数值
日期函数
1、CURDATE() 返回当前日期格式 yyyy-MM-dd
2、CURTIME()返回档期时间 12:11:56
3、NOW()返回当前时间 2017-05-12 21:12:34
4、UNIX_TIMESTAMP(date) 返回当前date的时间戳
5、FROM_UNIXTIME()返回UNIX时间戳的日期值
6、WEEK(date)返回当前时间date为一年中的第几周
7、YEAR(data)返回当前时间date的年份
8、DATEDIFF(expr1,expr2) 返回expr1与expr2之间的天数
无变量:
创建预处理语句:mysql> prepare stmt1 from 'select * from hello where id>5';创建一个名为stmt1的预处理语句
执行预处理语句:mysql> execute stmt1;执行stmt1预处理语句
带变量:
创建带参数的预处理语句:mysql> prepare stmt1 from 'select * from hello where id>?'
设置变量:mysql> set @i=6;
执行预处理语句:mysql> execute stmt2 using @i;
删除预处理语句:mysql> drop prepare stmt2; #mysql> DEALLOCATE PREPARE stmt2;
注意:每一次执行完EXECUTE时,养成好习惯,须执行DEALLOCATE PREPARE … 语句,这样可以释放执行中使用的所有数据库资源(如游标)。
不仅如此,如果一个session的预处理语句过多,可能会达到max_prepared_stmt_count的上限值。
mysql默认事务是自动提交的。在做mysql事务处理时请将数据库或者表的ENGINE 设置为InnoDB
将表的存储引擎设置为INNODB:mysql> alter table hello engine=innodb;
设置mysql为非自动提交:mysql> set autocommit=0;
产生事务:mysql> delete from hello where id>7;
事务回滚:mysql> rollback;
事务提交:mysql> commit;
关于事务中的还原点:
创建一个事务:mysql> insert into hello (sex,degree,name) values(1,12312.32,'HHH');
对该事务设置还原点:mysql> savepoint p1;
回滚到指定的还原点:mysql> rollback to p1; 此时事务恢复到p1,也就是p1之后的事务p2 ,p3..这些还原点将失效。
回滚到原始的还原点:mysql> rollback;
<!-- 创建存储过程 hello1()--> CREATE PROCEDURE hello1() BEGIN SET @i=0; WHILE @i<100 DO insert INTO hello (sex,degree,name) VALUES(1,@i,CONCAT('name',@i)); SET @i=@i+1; END WHILE; end; <!-- 查看存储--> SHOW PROCEDURE STATUS; <!-- 查看hello1()存储过程--> show CREATE PROCEDURE hello1; <!-- 执行存储过程--> CALL hello1;
mysql中我们的主键id如果设置为主键自增策略,那我们如何清空表,并且恢复自增列id的值。
方式一:使用truncate table tableName; 该方式在清空表的同时恢复auto_increment 的值。
方式二:
1、mysql> delete from hello3; 清空表 (该方式效率较低)
2、mysql> alter table hello3 auto_increment=1; 恢复auto_increment 的起始值为1
以上是詳細了解Mysql的基礎操作的詳細內容。更多資訊請關注PHP中文網其他相關文章!