1、服務(wù)器mysql進(jìn)入
1、啟動mysql服務(wù)器
net start mysql
2、關(guān)閉
net stop mysql
3、進(jìn)入
mysql -h 主機地址 -u 用戶名 -p 用戶密碼
4、退出
exit
2、查詢語句
1、查詢a表
select a,b,c from a;
2、in
select a,b,c from a where a IN (1,2,3);
3、BETWEEN操作
SELECT f_name, f_price FROM fruits WHERE f_price BETWEEN 2 AND 10;
4、左連接LEFT JOIN
select a.a, a.b, a.c, b.c, b.d, b.f from a LEFT JOIN b ON a.a = b.c
5、右連接right JOIN
select a.a, a.b, a.c, b.c, b.d, b.f from a right JOIN b ON a.a = b.c
6、查詢以b開頭的記錄
SELECT f_name FROM fruits WHERE f_name LIKE 'b%';
7、查詢f_name字段為NULL的記錄
SELECT f_name FROM fruits WHERE f_name IS NULL;
8、ORDER BY DESC/ASC: 降序/升序排序
SELECT f_name FROM fruits ORDER BY f_name DESC;
9、根據(jù)s_id對記錄進(jìn)行分組:
SELECT s_id, COUNT(*) AS Total FROM fruits GROUP BY s_id;
10、顯示每個分組中的字段值
SELECT s_id, GROUP_COUNT(f_name) AS names FROM fruits GROUP BY s_id;
11、顯示f_name數(shù)量大于1的分組信息。
SELECT s_id, s_name FROM friuts GROUP BY s_id HAVING COUNT(f_name) > 1;
12、顯示分組后數(shù)據(jù)的所有記錄
SELECT s_id, COUNT(*) FROM fruits GROUP BY s_id WITH ROLLUP;
13、內(nèi)連接查詢(INNER JOIN):
SELECT t_1.name, s_name FROM fruits, t_1 WHERE fruits.s_id = t_1.s_id;
SELECT t_1.name, s_name FROM fruits INNER JOIN t_1
? ? ON fruits.s_id = t_1.s_id;
14、自連接查詢。
SELECT f1.f_name, f1.s_id FROM fruits AS f1, fruits AS f2 WHERE
? ? f1.s_id = f2.s_id;
15、大于子查詢結(jié)果中最小值的所有記錄
MYSQL> SELECT * FROM fruits WHERE s_id > ANY(SELECT s_id FROM t2);
16、大于子查詢結(jié)果中最大值的所有記錄
SELECT * FROM fruits WHERE s_id > ALL(SELECT s_id FROM t2);
17、子查詢是否有記錄
SELECT * FROM fruits WHERE EXISTS(SELECT s_id FROM t2);
18、如果子查詢沒有返回行則符合條件
SELECT * FROM fruits WHERE NOT EXISTS(SELECT s_id FROM t2);
19、IN/NOT IN:
MYSQL> SELECT * FROM fruits WHERE s_id IN(SELECT s_id FROM t2);
20、<、<=、=、>=、!=:
SELECT * FROM fruits WHERE s_id = (SELECT s_id FROM t2 WHERE s_id = 1);
21、UNION 不刪除重復(fù)行,
SELECT s_id FROM fruits WHERE f_price < 9 UNION SELECT s_id
? ? WHERE s_id IN(10,11);
22、UNION ALL刪除重復(fù)行
SELECT s_id FROM fruits WHERE f_price < 9 UNION ALL SELECT s_id
? ? WHERE s_id IN(10,11);
3、插入語句
1、指定字段
insert into table_name(column1,column2)values(value1,value2);
2、所有字段
insert into table_name values(value1,value2);
3、批量插入數(shù)據(jù)
insert into table_name values (value1,value2),(value1,value2);
4、指定插入批量數(shù)據(jù)
insert into table_name(column1,column2) values(value1,value2),(vae1,vae2)
5、滿足了指定條件時才插入數(shù)據(jù)
insert into dept(deptno,dname,loc) select 11,dept.dname,dept.loc from
? ? dept where deptno=22;
4、更新語句
1、更新一個字段,將users表中id等于123的記錄的age改為24
UPDATE users SET age = 24 WHERE id = 123;
2、更新多個字段的值
UPDATE users SET age = 24, name = 'Mike' WHERE id = 123;
3、修改表名(將數(shù)據(jù)表 testalter_tbl 重命名為 alter_tbl)
ALTER TABLE testalter_tbl RENAME TO alter_tbl;
4、表tb_test01增加 增加字段 id_01 類型限制 int(10)
ALTER TABLE tb_test01 add id_01 int(10);
5、 增加字段 id_02 并且放在第一個字段
ALTER TABLE tb_test01 add id_02 int(10) FIRST
6、 增加字段 id_03 并且放在id 后面
ALTER TABLE tb_test01 add id_03 int(10) AFTER id
5、刪除語句
1、刪除表test,并釋放空間,將test刪除的一干二凈。
DROP TABLE test;
2、刪除表test里的內(nèi)容,并釋放空間,但不刪除表的定義,表的結(jié)構(gòu)還在
TRUNCATE test;
3、刪除表test內(nèi)的所有內(nèi)容,保留表的定義,不釋放空間。
DELETE FROM table1;
DELETE FROM table1 WHERE id=1;
6、視圖創(chuàng)建,表復(fù)制
1、視圖創(chuàng)建
create view v as (select * from table1) union all (select * from table2);
2、表復(fù)制
CREATE TABLE xinbiao SELECT * FROM jiubiao
7、索引創(chuàng)建
1.添加PRIMARY KEY(主鍵索引)?
ALTER TABLE `table_name` ADD PRIMARY KEY ( `column` )?
2.添加UNIQUE(唯一索引)?
ALTER TABLE `table_name` ADD UNIQUE (?`column`?)?
3.添加INDEX(普通索引)?
ALTER TABLE `table_name` ADD INDEX index_name ( `column` )?
4、添加FULLTEXT(全文索引)?
mysql>ALTER TABLE `table_name` ADD FULLTEXT ( `column`)?
5.添加多列索引?
mysql>ALTER TABLE `table_name` ADD INDEX index_name ( `column1`,
? ? `column2`, `column3` )
8、事務(wù)使用
9、賬戶權(quán)限添加修改
1、賦予所有特殊權(quán)限給root用戶,可以從任何IP地址遠(yuǎn)程登錄,密碼為abc123,
? ? 且擁有g(shù)rant賦予權(quán)限的權(quán)限
grant all privileges on *.* to 'root'@'%' identified by 'abc123' with
? ? grant option;
flush privileges;
10、Cast函數(shù)用法
Cast(字段名 as 轉(zhuǎn)換的類型 )
例如表table1
? ? date
? ? 2015-11-03 15:31:26
select cast(date as signed) as date from ?table1;
? ? date
? ? 20151103153126
select cast(date as char) as date from ?table1;
? ?? date
? ? 2015-11-03 15:31:26
select cast(date as datetime) as date from ?table1;
? ? date
? ? 2015-11-03 15:31:26
select cast(date as date) as date from ?table1;
? ? date
? ? 2015-11-03
select cast(date as time) as date from ?table1;
? ? date
? ? 15:31:26
select unix_timestamp(now())?? 現(xiàn)在的時間戳
? ? 1586412498
11、case when
1、條件判斷
? ? SELECT NAME '英雄',
? ? ? ? ? ? CASE NAME? WHEN '德萊文' THEN?? '斧子'
? ? ? ? ? ? WHEN '德瑪西亞-蓋倫' THEN?? '大寶劍'
? ? ? ? ? ? WHEN '暗夜獵手-VN' THEN? ? ? '件'
? ? ? ? ? ? ELSE? ? '無'
? ? ? ? ? ? END '裝備' FROM? user_info;
2、行轉(zhuǎn)列
? ? SELECT id,idd,
? ? ? ? ? ? sum( CASE name WHEN '大學(xué)語文' THEN scores
? ? ? ? ? ? ELSE? 0 END ) '大學(xué)語文',?
? ? ? ? ? ? sum( CASE co.name WHEN '高等數(shù)學(xué)' THEN scores
? ? ? ? ? ? ELSE? 0? END ) '高等數(shù)學(xué)'
? ? ? ? ? ? FROM edu_student
? ? ? ? ? ? GROUP BY id
? ? ? ? ? ? ORDER BY? NULL;
12、?date_sub()函數(shù):
select now(); 表示獲取當(dāng)前時間
今天是2013年5月20日。
date_sub('2012-05-25',interval 1 day) 表示 2012-05-24
date_sub('2012-05-25',interval 0 day) 表示 2012-05-25
date_sub('2012-05-25',interval -1 day) 表示 2012-05-26
date_sub('2012-05-31',interval -1 day) 表示 2012-06-01
date_sub(curdate(),interval 1 day) 表示 2013-05-19
date_sub(curdate(),interval -1 day) 表示 2013-05-21
date_sub(curdate(),interval 1 month) 表示 2013-04-20
date_sub(curdate(),interval -1 month) 表示 2013-06-20
date_sub(curdate(),interval 1 year) 表示 2012-05-20
date_sub(curdate(),interval -1 year) 表示 2014-05-20
13、?date_add()函數(shù)
set @dt = now();
select date_add(@dt, interval 1 day); -- add 1 day
select date_add(@dt, interval 1 hour); -- add 1 hour
select date_add(@dt, interval 1 minute); -- ...
select date_add(@dt, interval 1 second);
select date_add(@dt, interval 1 microsecond);
select date_add(@dt, interval 1 week);
select date_add(@dt, interval 1 month);
select date_add(@dt, interval 1 quarter);
select date_add(@dt, interval 1 year);
select date_add(@dt, interval -1 day); -- sub 1 day
14、dayofweek(), dayofmonth(), dayofyear():在一周、一月、一年中的位置。
set @dt = '2008-08-08';
select dayofweek(@dt); -- 6
select dayofmonth(@dt); -- 8
select dayofyear(@dt); -- 221
#日期 '2008-08-08' 是一周中的第 6 天(1 = Sunday,
2 = Monday, ..., 7 = Saturday);一月中的第 8 天;一年中的第 221 天
15、dayname(), monthname()函數(shù)
set @dt = '2008-08-08';
select dayname(@dt); -- Friday
select monthname(@dt); -- August
16、 last_day() 函數(shù):
select last_day('2008-02-01'); -- 2008-02-29
select last_day('2008-08-08'); -- 2008-08-31
MySQL last_day() 函數(shù)表示當(dāng)前月份中有多少天,
17、日期時間轉(zhuǎn)換函數(shù)
1. MySQL (時間、秒)轉(zhuǎn)換函數(shù):time_to_sec(time), sec_to_time(seconds)
select time_to_sec('01:00:05'); -- 3605
select sec_to_time(3605); -- '01:00:05'
2. MySQL (日期、天數(shù))轉(zhuǎn)換函數(shù):to_days(date), from_days(days)
select to_days('0000-00-00'); -- 0
select to_days('2008-08-08'); -- 733627
select from_days(0); -- '0000-00-00'
select from_days(733627); -- '2008-08-08'
3. MySQL Str to Date (字符串轉(zhuǎn)換為日期)函數(shù):str_to_date(str, format)
select str_to_date('08/09/2008', '%m/%d/%Y'); -- 2008-08-09
select str_to_date('08/09/08' , '%m/%d/%y'); -- 2008-08-09
select str_to_date('08.09.2008', '%m.%d.%Y'); -- 2008-08-09
select str_to_date('08:09:30', '%h:%i:%s'); -- 08:09:30
select str_to_date('08.09.2008 08:09:30', '%m.%d.%Y %h:%i:%s');
-- 2008-08-09 08:09:30
測試工作軟件包下載,要不知道下載哪個就都下載下
軟件包:https://pan.baidu.com/s/1NxB2HaGRrRs9ERVu9w3SvQ
提取碼:nn5j