#use mysql;
/*
show tables;
select * from user;
use mysql;
show databases;
#create database db1;
#drop database test;
#show engines\g; #存儲引擎
#show engine\G; #"\g,\G友好形式mysql
#show variables like "Storage_engine%"; #系統所有存儲引擎
#default InnoB
#HELP contents; #幫助
#use mysql;
#create table test( id int);
#insert into test values(1),(-1),(10000000000);
#show warnings; #警告sql
#select * from test; 數組
#數據類型
#use mysql;
#create table test2( a float(1,2),b double(1,10));
#insert into test2 values(1.00000,4.00);
#create table test3 (a bit(10));
#insert into test3 values(11,b'11');
#select * from test3;併發
create table date_test(
f_date DATE, #日期類型
f_datetime datetime,
f_timestmp timestamp,
f_time time,
f_year year
);orm
insert into date_test values(curdate(),now(),now(),time(now()),year(now()));排序
select * from date_test;
*/
#字符型
/*
create table date_test_2(
id int,
name char(10),
sex varchar(10),
number binary(3)
);
insert into date_test_2 values(1,"張三","man",0);
insert into date_test_2 values(2,"李四","man",1);
insert into date_test_2 values(3,"吳燕","women",0);
insert into date_test_2 values(4,"趙九","man",1);
*/
#select * from date_test_1;繼承
#use mysql;
#describe example_1; #date_test_2; #定義
#drop table example_1; #刪除
#show create table example_1; #詳細定義索引
#use mysql;
#alter table example RENAME example_2; #修改
#describe example_2;rem
#alter table example_2 add sex varchar(10); #最後增長列it
#describe example_2;
#alter table example_2 add money int first; #在首行增長列
#describe example_2;
#alter table example_2 add weather varchar(10) after name; #指定字段後增減列
#describe example_2;
#alter table example_2 drop sex ; #刪除字段
#alter table example_2 modify name varchar(10); #修改字段數據類型
#alter table example_2 change names name varcharacter(10); #修改字段名稱
#併發修改字段和數據類型
#調至首位,放置其後
#alter table example_2 modify id int first ;
/*
alter table example_2 modify money int after weather;
describe example_2;
*/
#約束
/*
create table example_4(id int not null,name varchar(10),sex char(10));
#非空完整性約束
describe example_4;
*/
#試圖插入數據,遭非空約束屏蔽
#insert into example_4(id,name,sex)values(null,"王明","man");
#字段默認值
#drop table example_4;
#use mysql;
#create table example_6( id int not null, name varchar(20) default '王大牛', sex char(10));
#describe example_6;
#create table example_7(id int not null, name char(10) unique,sex varchar(10) default 'man');
/*drop table example_7;
#惟一約束
create table example_7(id int not null, name char(10) ,
constraint uk_name unique(name)); #約束名:惟一簡寫_字段名
*/ #主鍵約束:非空+惟一
/*
create table example_7( id int primary key,name char(10),sex varchar(20));
describe example_7; #試圖插入重複數據,報錯腳本顯示主建生效
insert into example_7(id,name,sex)values(1,"李蘭","women");
insert into example_7(id,name,sex)values(1,"江山","man");
*/
/*
create table example_7(id int,name char(10),tempature bit(11),
constraint PK_id_tempature primary key(id,tempature) #聯合主鍵
);
*/
/* #自動屬性
drop table example_7;
#create table example_7(id int primary key auto_increment,name char(10),sex varchar(20));
describe example_7;
*/
use mysql;
create table company(
id int primary key,
name char(10),
login time
); #父表註冊主鍵爲id字段
create table employ(
pople varchar(10),
sex char(10),
id int primary key,
constraint FK_id foreign key(id) references company(id) #子表外鍵id字段繼承父表id屬性
);
describe employ;
describe company;
/*
use mysql;
drop table index_test;
create table index_test(
id int,
name char(10),
index index_x(name) #在表的新建過程當中引入索引到name字段
);
show create table index_test;
EXPLAIN #檢驗索引是否是有效
select * from index_test where name=1;
*/
#use mysql; #在原有表的基礎上建立索引
#create index index_test_y on index_test(id);
#show create table index_test;
/*
alter table index_test add sex varchar(20); #經過修改表格時建立索引
alter table index_test add index index_test_z(sex);
explain
select * from index_test where sex=1;
*/
/*
create table index_test1(
id int,
name char(10),
unique index index_test_w(id) #惟一索引{指定自動索引和手動索引}
);
show create table index_test1;
*/
/*
create unique index index_test_q on index_test1(name); #在已存在的表上建立惟一索引
show create table index_test1;
*/
/*
alter table index_test1 add sex varchar(20);
alter table index_test1 add unique index index_test_r(sex); #修改表格的基礎上映射sex字段惟一索引
explain
select * from index_test1 where sex=1;
*/
/*
create table index_test2(
id int,
name varchar(40),
fulltext index index_test2_x(name) #建立表格的同時爲name字段設置全文索引
); #fulltext針對{char,varchar,test}
show create table index_test2;
*/
/*
explain
select * from index_test2 where name=1;
*/
/*
drop table index_test2;
create table index_test2(
id char(10) ,
name varchar(30)
);
#create fulltext index index_test2_y on index_test2(name); #在已有的表格上爲name字段設置全文索引
#show create table index_test2;
alter table index_test2 add fulltext index index_test2_z(id); #修改時增長id字段全文索引
show create table index_test2;
*/
/*
create table index_test3(
id int,
name char(10),
index index_test3_x(id,name)
);
show create table index_test3; #在建立表格的同時,指定id和name字段關聯爲多列索引
*/
/*
create table index_test4(
id int,
name varchar(10)
);/*
create index index_test4_x on index_test4(id,name); #在已存在的表格上爲id和name字段關聯多列索引
show create table index_test4;
*/
/*
drop table index_test5;
create table index_test5( #修改字段的同時爲id和name設置多列索引
id int,
name varchar(10)
);
alter table index_test5 add index index_test_5(id,name);
show create table index_test5;
*/
use mysql;
drop index index_test_5 on index_test5; #刪除索引
use mysql;
drop view view_index5;
create view view_index5
as #把id,name字段當作別名做爲視圖的特定查詢
select id,name from index_test5;
select * from view_index5;
describe view_index5;
#視圖封裝
drop view view_x;
create view view_x
as
select 3.1415926; #封裝數據類型視圖
select * from view_x;
insert into index_test5 values(1,"xm");
insert into index_test5 values(4,"wu");
insert into index_test5 values(3,"zl");
drop view view_y;
create view view_y #封裝按統計id行數的視圖
as
select count(id) from index_test5 ;
select * from view_y;
drop view view_z;
create view view_z
as
select * from index_test5 order by id asc; #desc; #封裝按id字段升序|降序的視圖
select * from view_z;
*/
drop table view_test_x;
create table view_test_x(
id int,
name char(10)
);
/*
insert into view_test_x values(1,"xm");
insert into view_test_x values(4,"zw");
insert into view_test_x values(10,"lt");
drop table view_test_y;
create table view_test_y(
number int,
sex char(10)
);
insert into view_test_x values(1,"man");
insert into view_test_x values(5,"women");
insert into view_test_x values(10,"women");
*/
# drop view view_f;
create view view_f
as
select * from view_test_x; #封裝聯合表view_test_x和view_test_y的視圖
/*
union all
select * from view_test_y;
select * from view_f;
show tables; #可用來顯示視圖名
show table status from mysql like "view_f"; #來自mysql庫內的視圖狀態
#like通配查詢
*/
show create view view_f; #顯示視圖的詳細信息
desc view_f;
show databases;
use information_schema;
desc views;
select * from views where TABLE_NAME="view_f"; #經過系統庫的全局映射查詢指定視圖
USE mysql;
#爲庫建立兩張表
CREATE TABLE tb_x(
id INT,
NAME CHAR(10)
);
CREATE TABLE tb_y(
times DATE,
weather VARCHAR(20)
);
#建立觸發器
CREATE TRIGGER tri_x
BEFORE INSERT
#在insert前觸發
ON tb_x FOR EACH ROW #指定在下一條語句生效後當即觸發
INSERT INTO tb_y VALUES(TIME(NOW()),"sun");
#試圖向x表插入數據,以引發y表使用觸發條件
INSERT INTO tb_x VALUES(1,"約翰");
#檢驗觸發效果
SELECT * FROM tb_x;
SELECT * FROM tb_y;
SHOW TRIGGERS;
DELIMITER $$ #爲語句的結束設置別名
CREATE TRIGGER tri_a #營造觸發
BEFORE INSERT #在insert後觸發
ON tb_x FOR EACH ROW #選擇觸發表
BEGIN #開始
INSERT INTO tb_y VALUES(NOW(),"傑克"); #多條觸發條件
INSERT INTO tb_y VALUES(NOW(),"李向");
END$$ #結束
DELIMITER;
#在tb_x中insert以觸發tri_a
INSERT INTO tb_x VALUES(10,"jk");
#檢驗觸發
SELECT * FROM tb_y;
SHOW TRIGGERS; #全局顯示觸發器
SHOW DATABASES; #在系統表內顯示觸發器
USE information_schema;
SHOW TABLES;
SELECT * FROM TRIGGERS;
DROP TRIGGER tri_a; #刪除出觸發器
USE mysql;
DROP TABLE test_x;
CREATE TABLE test_x
(
id INT,
NAME CHAR(10)
);
CREATE TABLE test_y
(
id INT,
NAME CHAR(10)
);
#多插
INSERT INTO test_x VALUES(NULL,NULL),(NULL,NULL),(NULL,NULL);
INSERT INTO test_y(id,NAME)
SELECT id,NAME FROM test_x;
#將查詢結果插入記錄
SELECT * FROM test_y;
UPDATE test_y
SET id=1
WHERE NAME="wd";
DELETE FROM test_y
WHERE id=2;
SELECT DISTINCT * FROM test_x;
#distinct 排除重複的字段
SELECT (id+10)/(10*9-1) AS math_id,NAME FROM test_x;
#支持四則運算,「AS」做爲別名
SELECT CONCAT(id,NAME) total
FROM test_x; #同時爲多列合併成新列
SELECT DISTINCT * FROM test_x #邏輯運算和比較運算符篩選字段 #where id=2 and name="wd"; #where id=2 && name="wd"; #where id=2 || name="wd"; #where id!=10 and id>2&&id<110; #where id not between 5 and 10;#between | not between關鍵字篩選 #where id is not null; #null| not null關鍵字篩選 #where not id is null; #where id not in(5,10); #in | not in:關鍵字查詢 #where name like "_p%"; #where name not like "%t%"; /*like關鍵字模糊匹配{%:特定字符開頭; _:特定字符; %char_name%:包含字符; %%:《=》*; */ #where id in(2,10) order by id asc limit 2;#desc; WHERE id BETWEEN 2 AND 10 LIMIT 2,3; #排序{asc:升序;desc:降序}; #limit:限制顯示字段的條目數量{數組起始值,步數};