create view 檢視名稱 as select語句;
create view v_stu_score_course as
select
stu.*,cs.courseno,cs.name coursename,sc.score
from
students stu
inner join scores sc on stu.studentno = sc.studentno
inner join courses cs on cs.courseno = sc.courseno
show tables;
drop view 檢視名稱;
例:drop view v_stu_score_course;
select * from v_stu_score_course;
select concat(12,34,'ab');
select length('abc');
select substring('abc123',2,3);
select ltrim(' bar ');
select lower('abcd');
select round(1.6);
select pow(2,3);
select pi();
select rand();
例1:隨機取一條資料
select * from students order by rand() limit 1;
select current_date();
select current_time();
select now();
%y 獲取年,返回完整年份
%y 獲取年,返回簡寫年份
%m 獲取月,返回月份
%d 獲取日,返回天值
%h 獲取時,返回24進製的小時數
%h 獲取時,返回12進製的小時數
%i 獲取分,返回分鐘數
%s 獲取秒,返回秒數
select date_format('2016-12-21','%y %m %d');
case 值 when 比較值1 then 結果1 when 比較值2 then 結果2 ... else 結果 end
例:select case 1 when 1 then 'one' when 2 then 'two' else 'zero' end as result;
建立
delimiter $$
create function 函式名稱(引數列表) returns 返回型別
begin
sql語句
end$$
delimiter ;
示例
delimiter $$
create function my_trim(str varchar(100)) returns varchar(100)
begin
return ltrim(rtrim(str));
end$$
delimiter ;
使用自定義函式
select ' abc ',my_trim(' abc ')
儲存過程,也翻譯為儲存程式,是一條或者多條sql語句的集合
delimiter //
create procedure 儲存過程名稱(引數列表)
begin
sql語句
end//
delimiter ;
delimiter //
create procedure proc_stu()
begin
select * from students;
end//
delimiter ;
call 儲存過程(引數列表);
呼叫儲存過程proc_stu
call proc_stu();
為什麼要有事務
正常的流程走下來,a賬戶扣了500,b賬戶加了500,皆大歡喜。那如果a賬戶扣了錢之後,系統出故障了呢?a白白損失了500,而b也沒有收到本該屬於他的500。以上的案例中,隱藏著乙個前提條件:a扣錢和b加錢,要麼同時成功,要麼同時失敗。事務的需求就在於此
所謂事務,它是乙個操作序列,這些操作要麼都執行,要麼都不執行,它是乙個不可分割的工作單位。例如,銀行轉帳工作:從乙個帳號扣款並使另乙個帳號增款,這兩個操作要麼都執行,要麼都不執行。所以,應該把他們看成乙個事務。事務是資料庫維護資料一致性的單位,在每個事務結束時,都能保持資料一致性
事務命令
show create table students;
begin;
commit;
rollback;
語法
show index from 表名;
方式一:建表時建立索引
create table create_index(
id int primary key,
name varchar(10) unique,
age int,
key (age)
);
方式二:對於已經存在的表,新增索引
如果指定欄位是字串,需要指定長度,建議長度與定義欄位時的長度一致
字段型別如果不是字串,可以不填寫長度部分
create index 索引名稱 on 表名(欄位名稱(長度))
例:create index age_index on create_index(age);
create index name_index on create_index(name(10));
drop index 索引名稱 on 表名;
建立測試表testindex
create table test_index(title varchar(10));
向表中加入十萬條資料
delimiter //
create procedure proc_test()
begin
declare i int default 0;
while i<100000 do
insert into test_index(title) values(concat('test',i));
set i=i+1;
end while;
end
//
delimiter ;
call proc_test();
查詢
set profiling=1;
select * from test_index where title='test10000';
show profiles;
create index title_index on test_index(title(10));
select * from test_index where title='test10000';
show profiles;
缺點
分析查詢
explain
select * from test_index where title='test10000'
mysql資料庫高階 mysql資料庫高階
一 索引 索引,是資料庫中專門用於幫助使用者快速查詢資料的一種資料結構。類似於字典中的目錄,查詢字典內容時可以根據目錄查詢到資料的存放位置,然後直接獲取即可。分類 普通索引 唯一索引 全文索引 組合索引 主鍵索引 1 普通索引 普通索引僅有乙個功能 加速查詢 建立表時建立索引 create tabl...
資料庫高階
1.預設值 default 值 create table student id int,name varchar 20 address varchar 20 default 江西贛州 預設值 當欄位沒有插入值的時候,mysql自動給該字段分配預設值 注意,預設值的字段允許為空 insert into...
資料庫高階
查詢和更新指令構成了 sql 的 dml 部分 select 從資料庫表中獲取資料 update 更新資料庫表中的資料 delete 從資料庫表中刪除資料 insert into 向資料庫表中插入資料 sql 的資料定義語言 ddl 能建立或刪除 也可以定義索引 鍵 規定表之間的鏈結,以及施加表間的...