å®è£ ï¼åºäºcentosï¼
yum -y install mariadb mariadb-server # centos7çæ¬
yum -y install mysql mysql-server #centos7以ä¸çæ¬
å¯å¨
service mysqld start #å¼å¯ centos7以ä¸çæ¬
chkconfig mysqld on #è®¾ç½®å¼æºèªå¯
OR
systemctl start mariadb #centos7
systemctl enable mariadb
设置å¯ç
1 mysqladmin -u root -p123 password '1234' #ä¿®æ¹rootç¨æ·å¯ç
2. è¿å
¥mysqlåºä¿®æ¹user表
mysql>use mysql;
mysql>update user set password=password('ä½ çå¯ç ') where user='root';
mysql>flush privileges;
ç»å½
mysql #æ¬å°ç»å½ï¼é»è®¤ç¨æ·rootï¼ç©ºå¯ç ï¼ç¨æ·ä¸º[email protected]
-- mysql -uroot -p1234 #æ¬å°ç»å½ï¼æå®ç¨æ·ååå¯ç ï¼ç¨æ·ä¸º[email protected]
-- mysql -uroot P端å£å· -h 192.168.31.95 -på¯ç #è¿ç¨ç»å½ï¼ç¨æ·ä¸º[email protected]
æ¥ç
ps aux |grep mysqld #æ¥çè¿ç¨
netstat -an |grep 3306 #æ¥ç端å£
mysqlç常ç¨å½ä»¤
--
-- å¯å¨mysqlæå¡ä¸åæ¢mysqlæå¡å½ä»¤ï¼
--
-- net start mysql
-- net stop mysql
--
--
-- ç»éä¸éåºå½ä»¤ï¼
--
-- mysql ï¼h æå¡å¨IP -P 端å£å· -u ç¨æ·å -p å¯ç ï¼ï¼prompt å½ä»¤æç¤ºç¬¦ ï¼ï¼delimiter æå®åé符
-- mysql ï¼h 127.0.0.1 -P 3306 -uroot -p123
-- quit------exit----\q;
--
--
-- \s; ------my.iniæä»¶ï¼[mysql] default-character-set=gbk [mysqld] character-set-server=gbk
--
-- prompt å½ä»¤æç¤ºç¬¦ï¼\D:å½åæ¥æ \d:å½åæ°æ®åº \u:å½åç¨æ·ï¼
--
-- \T(å¼å§æ¥å¿) \t(ç»ææ¥å¿)
--
-- show warnings;
--
-- help() ? \h
--
-- \Gï¼
--
-- select now();
-- select version();
-- select user;
--
-- \c åæ¶å½ä»¤
--
-- delimiter æå®åé符
å¿è®°å¯ç
æ¹æ³ä¸ï¼å¯å¨mysqlæ¶ï¼è·³è¿ææè¡¨
[root@controller ~]# service mysqld stop
[root@controller ~]# mysqld_safe --skip-grant-table &
[root@controller ~]# mysql
mysql> select user,host,password from mysql.user;
+----------+-----------------------+-------------------------------------------+
| user | host | password |
+----------+-----------------------+-------------------------------------------+
| root | localhost | *A4B6157319038724E3560894F7F932C8886EBFCF |
| root | localhost.localdomain | |
| root | 127.0.0.1 | |
| root | ::1 | |
| | localhost | |
| | localhost.localdomain | |
| root | % | *23AE809DDACAF96AF0FD78ED04B6A265E05AA257 |
+----------+-----------------------+-------------------------------------------+
mysql> update mysql.user set password=password("123") where user="root" and host="localhost";
mysql> flush privileges;
mysql> exit
[root@controller ~]# service mysqld restart
[root@controller ~]# mysql -uroot -p123
sqlåå ¶è§è
<1> 卿°æ®åºç³»ç»ä¸ï¼SQLè¯å¥ä¸åºå大å°å(建议ç¨å¤§å) ãä½å符串常éåºå大å°åã建议å½ä»¤å¤§åï¼è¡¨ååºåå°åï¼
<2> SQLè¯å¥å¯åè¡æå¤è¡ä¹¦åï¼ä»¥â;âç»å°¾ãå
³é®è¯ä¸è½è·¨å¤è¡æç®åã
<3> ç¨ç©ºæ ¼åç¼©è¿æ¥æé«è¯å¥çå¯è¯»æ§ãåå¥é常ä½äºç¬ç«è¡ï¼ä¾¿äºç¼è¾ï¼æé«å¯è¯»æ§ã
2
SELECT * FROM tb_table
WHERE NAME="YUAN";
<4> 注éï¼åè¡æ³¨éï¼--
å¤è¡æ³¨éï¼/*......*/
<5>sqlè¯å¥å¯ä»¥æè¡æä½
åºå¤ä»½
dbnameåæ°è¡¨ç¤ºæ°æ®åºçåç§°ï¼
table表示å¤ä»½é£ä¸ªæ°æ®åºç表å
backupnameå¤ä»½æ°æ®åºåå
第ä¸ç§ï¼å¤ä»½ä¸ä¸ªæ°æ®åºçé£äºè¡¨
mysqldump -u username -p dbname table1 table2 ...-> BackupName.sql
第äºç§ï¼å¤ä»½å¤ä¸ªæ°æ®åº
mysqldump -u username -p --databases dbname2 dbname2 > Backup.sql
å ä¸äº--databasesé项ï¼ç¶ååé¢è·å¤ä¸ªæ°æ®åº
第ä¸ç§ï¼å¤ä»½ææåº
mysqldump -u username -p -all-databases > BackupName.sql
第åç§ï¼å°±æ¯å°MySQLä¸çæ°æ®åºæä»¶ç´æ¥å¤å¶åºæ¥ãè¿æ¯æç®åï¼é度æå¿«çæ¹æ³ã
ä¸è¿å¨æ¤ä¹åï¼è¦å
å°æå¡å¨åæ¢ï¼è¿æ ·æå¯ä»¥ä¿è¯å¨å¤å¶æé´æ°æ®åºçæ°æ®ä¸ä¼åçååã
妿å¨å¤å¶æ°æ®åºçè¿ç¨ä¸è¿ææ°æ®åå
¥ï¼å°±ä¼é ææ°æ®ä¸ä¸è´ãè¿ç§æ
åµå¨å¼åç¯å¢å¯ä»¥ï¼
使¯å¨ç产ç¯å¢ä¸å¾é¾å
许å¤ä»½æå¡å¨ã
ããæ³¨æï¼è¿ç§æ¹æ³ä¸éç¨äºInnoDBåå¨å¼æç表ï¼è对äºMyISAMåå¨å¼æçè¡¨å¾æ¹ä¾¿ã
åæ¶ï¼è¿åæ¶MySQLççæ¬æå¥½ç¸åã
第äºç§ï¼ç¬¬ä¸æ¹client软件å¤ä»½
è¿ååº
mysql -u root -p dbname< BackupName.sql
dbname æ¯å¯é项 ï¼æ¯ç¨äºæäºè¡¨è¿åå°é£äºåºæéè¦ç¨å°dbname
ç´æ¥è¿ååºä¸ç¨å ä¸dbname,ä¹å°±æ¯æ°æ®åºå
SQLè¯å¥
åºæä½
åºåçå½ä»¤è§åï¼é¦å符æ¯åæ¯ï¼å ¶ä½é¨åå¯ä»¥æ¯åæ¯ãæ°åãä¸å线ã@ã$
ä¸è½æ¯å ³é®åï¼å¦create database create
æé¿128ä½
ä¸è½æ¯çº¯æ°å
æ¥è¯¢æææåº
show databases;
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema | #èæåºï¼ä¸å ç¨ç£ç空é´ï¼åå¨çæ¯æ°æ®åºå¯å¨åçä¸äºåæ°ï¼ç¨æ·è¡¨ä¿¡æ¯ï¼åä¿¡æ¯ï¼æéä¿¡æ¯ï¼å符信æ¯ï¼ï¼åæ¾äºå
åä¸
| mysql | #ææåºï¼åæ¾mysqlææçææä¿¡æ¯
| performance_schema | #åæ¾mysqlæå¡çæ§è½åæ°
| test | #æµè¯åº
+--------------------+
5 rows in set (0.00 sec)
å建åº
create database dbname
æ¥çæä¸ä¸ªæ°æ®åº
show create database dbname
mysql> create database xixi; #å建
Query OK, 1 row affected (0.00 sec)
mysql> show create database xixi; #æ¥ç
+----------+------------------------------------------------------------------+
| Database | Create Database |
+----------+------------------------------------------------------------------+
| xixi | CREATE DATABASE `xixi` /*!40100 DEFAULT CHARACTER SET utf8mb4 */ |
+----------+------------------------------------------------------------------+
1 row in set (0.00 sec)
ä½¿ç¨æ°æ®åº
use åºåï¼
ççå½åuseäºåªä¸ªåº
select database()
mysql> use xixi;
Database changed
mysql> select database();
+------------+
| database() |
+------------+
| xixi |
+------------+
1 row in set (0.00 sec)
ä¿®æ¹ï¼alter
å é¤åº
drop database æ°æ®åºåï¼
mysql> drop database xixi; #å é¤åº
Query OK, 0 rows affected (0.01 sec)
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| test |
+--------------------+
4 rows in set (0.00 sec)
mysqlæ°æ®åºç±»å
æ°å¼ç±»å
ä¸é¢ç表æ¾ç¤ºäºéè¦çæ¯ä¸ªæ´æ°ç±»åçåå¨åèå´ã

æ¥æ ï¼æ¶é´ç±»å
å符串类å
å符串类åæCHARãVARCHARãBINARYãVARBINARYãBLOBãTEXTãENUMåSETã该èæè¿°äºè¿äºç±»åå¦ä½å·¥ä½ä»¥åå¦ä½å¨æ¥è¯¢ä¸ä½¿ç¨è¿äºç±»åã
CHARåVARCHARç±»å类似ï¼ä½å®ä»¬ä¿ååæ£ç´¢çæ¹å¼ä¸åãå®ä»¬çæå¤§é¿åº¦åæ¯å¦å°¾é¨ç©ºæ ¼è¢«ä¿ççæ¹é¢ä¹ä¸åãå¨å卿æ£ç´¢è¿ç¨ä¸ä¸è¿è¡å¤§å°å转æ¢ã
BINARYåVARBINARY类类似äºCHARå
ï¼ä¸åçæ¯å®ä»¬å å«äºè¿å¶å符串èä¸è¦éäºè¿å¶å符串ãä¹å°±æ¯è¯´ï¼å®ä»¬å å«åèå符串è䏿¯å符å符串ã
BLOBæ¯ä¸ä¸ªäºè¿å¶å¤§å¯¹è±¡ï¼å¯ä»¥å®¹çº³å¯åæ°éçæ°æ®ãæ4ç§BLOBç±»åï¼TINYBLOBãBLOBãMEDIUMBLOBåLONGBLOBãå®ä»¬åªæ¯å¯å®¹çº³å¼çæå¤§é¿åº¦ä¸åã
æ4ç§TEXTç±»åï¼TINYTEXTãTEXTãMEDIUMTEXTåLONGTEXTãè¿äºå¯¹åº4ç§BLOBç±»åï¼æç¸åçæå¤§é¿åº¦ååå¨éæ±ã
ä¸é¢è¿äºçæ°æ®ç±»åé½åæ¾å¨æ°æ®è¡¨éé¢ç,ç°å¨ä»ç»æ°æ®è¡¨æä½
æ°æ®è¡¨æä½
1 æä»¬éè¦è¿å
¥æä¸ä¸ªåºéæè½å建表
2 ä¸å¼ 表å¿
é¡»å±äºä¸ä¸ªåº
3 表åæï¼å段+è®°å½
å建表
è¯æ³
create table 表å (
åæ®µå1 ç±»å (宽度) çº¦ææ¡ä»¶,
åæ®µå2 ç±»å(宽度) çº¦ææ¡ä»¶,
åæ®µå3 ç±»å(宽度) çº¦ææ¡ä»¶,
.......
);
注 :
åä¸å¼ 表ä¸ï¼å段åä¸è½ç¸å
åæ®µååç±»åå¿
é¡»æå®½åº¦åçº¦ææ¡ä»¶ä¸ºå¯é项
```
```
mysql> create table host (
-> id int(10),
-> hostname char(20),
-> port int(5)
-> );
Query OK, 0 rows affected (0.11 sec)
æ¥ç表
æ¥çæä¸ªåºæå¤å°è¡¨
show tables;
æ¥çæä¸ªæ°å»ºè¡¨ä¿¡æ¯
show create table 表å;
æ¥çè¡¨ç»æ
desc 表å;
æ¥ç表记å½
æ¥çè¡¨çææåæ®µå
容*
select * from 表å;
mysql> select * from host;
Empty set (0.00 sec)
5.æ¥ç表å
容
æ¥ç表çæäºå段çå
容
select id from host; #æ¥çhost表çidåæ®µçå
容
select id,port from host; #æ¥çhost表çidåæ®µåportåå
¸çå
容
mysql> show tables;
+----------------+
| Tables_in_xixi |
+----------------+
| host |
+----------------+
1 row in set (0.00 sec)
mysql> show create table host;
+-------+-------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table | Create Table |
+-------+-------------------------------------------------------------------------------------------------------------------------------------------------------------+
| host | CREATE TABLE `host` (
`id` int(10) DEFAULT NULL,
`hostname` char(20) DEFAULT NULL,
`port` int(5) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 |
+-------+-------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
mysql>
mysql> desc host;
+----------+----------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------+----------+------+-----+---------+-------+
| id | int(10) | YES | | NULL | |
| hostname | char(20) | YES | | NULL | |
| port | int(5) | YES | | NULL | |
+----------+----------+------+-----+---------+-------+
3 rows in set (0.01 sec)
field ä»£è¡¨åæ®µå
typeä»£è¡¨è¯¥åæ®µç±»åï¼
Null è¯¥åæ®µæ¯å¦å¯ä»¥ä¸ºç©º
default è¯¥åæ®µçé»è®¤è®¾ç½®
extra é¢å¤ç设置
mysql> select * from xixi.host;
Empty set (0.00 sec) #emptyè¿é表示ä¸å¼ 空表
mysql> select id,port from xixi.host;
Empty set (0.00 sec)
create table employee(
id int primary key auto_increment ,
name varchar(20),
gender bit default 1, -- gender char(1) default 1 ----- æè
TINYINT(1)
birthday date,
entry_date date,
job varchar(20),
salary double(4,2) unsigned,
resume text -- 注æï¼è¿éä½ä¸ºæåä¸ä¸ªå段ä¸å éå·
);
/* 约æ:
primary key (é空ä¸å¯ä¸) :è½å¤å¯ä¸åºååºå½åè®°å½çåæ®µç§°ä¸ºä¸»é®ï¼
unique
not null
auto_increment 主é®å段å¿
é¡»æ¯æ°åç±»åã
å¤é®çº¦æ foreign key */
ä¿®æ¹è¡¨ç»æ(åæ®µ)
ä¿®æ¹ä¸åç±»å
alter table tab_name modify åå ç±»å [宿´æ§çº¦ææ¡ä»¶]ï¼»firstï½after åæ®µåï¼½;
alter table users2 modify age tinyint default 20;
alter table users2 modify age int after id;
ä¿®æ¹åå
alter table tab_name change [column] åå æ°åå ç±»å [宿´æ§çº¦ææ¡ä»¶]ï¼»firstï½after åæ®µåï¼½;
alter table users2 change age Age int default 28 first;
å é¤ä¸å
alter table tab_name drop [column] åå;
-- æèï¼å é¤å¤åå¢ï¼å ä¸ä¸ªå¡«ä¸ä¸ªå¢ï¼
alter table users2
add salary float(6,2) unsigned not null after name,
drop addr;
ä¿®æ¹è¡¨å
rename table 表å to æ°è¡¨å;
修该表æç¨çå符é
alter table student character set utf8;
å é¤è¡¨
drop table tab_name;
æ·»å 主é®ï¼å é¤ä¸»é®
alter table tab_name add primary key(åæ®µåç§°,...)
alter table users drop primary key;
eg:
mysql> create table test5(num int auto_increment);
ERROR 1075 (42000): Incorrect table definition; there can be only one auto column and it must be defined as a key
create table test(num int primary key auto_increment);
-- æèï¼å¦ä½å é¤ä¸»é®ï¼
alter table test modify id int; -- auto_increment没äºï¼ä½è¿æ ·å主é®ä¾ç¶åå¨ï¼æä»¥è¿è¦å ä¸ä¸é¢è¿å¥
alter table test drop primary key;-- ä»
ä»
ç¨è¿å¥ä¹æ æ³ç´æ¥å é¤ä¸»é®
-- å¯ä¸ç´¢å¼
alter table tab_name add unique [index|key] [ç´¢å¼åç§°](åæ®µåç§°,...)
alter table users add unique(name)-- ç´¢å¼å¼é»è®¤ä¸ºå段åshow create table users;
alter table users add unique key user_name(name);-- ç´¢å¼å¼ä¸ºuser_name
-- æ·»å èåç´¢å¼
alter table users add unique index name_age(name,age);#show create table users;
-- å é¤å¯ä¸ç´¢å¼
alter table tab_name drop {index|key} index_name
表记å½å¢ï¼å ï¼æ¹
-- 1.å¢å 䏿¡è®°å½insert
/*insert ï¼»intoï¼½ tab_name (field1,filed2,.......) values (value1,value2,.......);*/
create table employee_new(
id int primary key auto_increment,
name varchar(20) not null unique,
birthday varchar(20),
salary float(7,2)
);
insert into employee_new (id,name,birthday,salary) values
(1,'yuan','1990-09-09',9000);
insert into employee_new values
(2,'alex','1989-08-08',3000);
insert into employee_new (name,salary) values
('xialv',1000);
-- æå
¥å¤æ¡æ°æ®
insert into employee_new values
(4,'alvin1','1993-04-20',3000),
(5,'alvin2','1995-05-12',5000);
-- setæå
¥: insert ï¼»intoï¼½ tab_name set åæ®µå=å¼
insert into employee_new set id=12,name="alvin3";
-- 2.ä¿®æ¹è¡¨è®°å½ update tab_name set field1=value1,field2=value2,......[where è¯å¥]
/* UPDATEè¯æ³å¯ä»¥ç¨æ°å¼æ´æ°åæè¡¨è¡ä¸çååã
SETåå¥æç¤ºè¦ä¿®æ¹åªäºååè¦ç»äºåªäºå¼ã
WHEREå奿å®åºæ´æ°åªäºè¡ã妿²¡æWHEREåå¥ï¼åæ´æ°ææçè¡ã*/
update employee_new set birthday="1989-10-24" WHERE id=1;
--- å°yuançèªæ°´å¨åæåºç¡ä¸å¢å 1000å
ã
update employee_new set salary=salary+4000 where name='yuan';
-- 3.å é¤è¡¨çºªå½
delete from tab_name [where ....]
/* 妿ä¸è·whereè¯å¥åå 餿´å¼ 表ä¸çæ°æ®
deleteåªè½ç¨æ¥å é¤ä¸è¡è®°å½
deleteè¯å¥åªè½å é¤è¡¨ä¸çå
容ï¼ä¸è½å é¤è¡¨æ¬èº«ï¼æ³è¦å é¤è¡¨ï¼ç¨drop
TRUNCATE TABLEä¹å¯ä»¥å é¤è¡¨ä¸çæææ°æ®ï¼è¯è¯å¥é¦å
æ§æ¯è¡¨ï¼åæ°å»ºè¡¨ãæ¤ç§æ¹å¼å é¤çæ°æ®ä¸è½å¨
äºå¡ä¸æ¢å¤ã*/
-- å é¤è¡¨ä¸å称为âalexâçè®°å½ã
delete from employee_new where name='alex';
-- å é¤è¡¨ä¸ææè®°å½ã
delete from employee_new;-- 注æauto_increment没æè¢«éç½®:alter table employee auto_increment=1;
-- 使ç¨truncateå é¤è¡¨ä¸è®°å½ã
truncate table emp_new;
表记å½ä¹æ¥
CREATE TABLE ExamResult(
id INT PRIMARY KEY auto_increment,
name VARCHAR (20),
JS DOUBLE ,
Django DOUBLE ,
Database DOUBLE
);
INSERT INTO ExamResult VALUES (1,"yuan",98,98,98),
(2,"xialv",35,98,67),
(3,"alex",59,59,62),
(4,"wusir",88,89,82),
(5,"alvin",88,98,67),
(6,"yuan",86,100,55);
-- ï¼1ï¼select [distinct] *|field1ï¼field2ï¼...... from tab_name
-- å
¶ä¸fromæå®ä»åªå¼ 表çéï¼*è¡¨ç¤ºæ¥æ¾ææåï¼ä¹å¯ä»¥æå®ä¸ä¸ªå
-- 表æç¡®æå®è¦æ¥æ¾çåï¼distinctç¨æ¥åé¤éå¤è¡ã
-- æ¥è¯¢è¡¨ä¸ææå¦ççä¿¡æ¯ã
select * from ExamResult;
-- æ¥è¯¢è¡¨ä¸ææå¦ççå§åå对åºçè±è¯æç»©ã
select name,JS from ExamResult;
-- è¿æ»¤è¡¨ä¸é夿°æ®ã
select distinct JS ,name from ExamResult;
-- ï¼2ï¼select ä¹å¯ä»¥ä½¿ç¨è¡¨è¾¾å¼ï¼å¹¶ä¸å¯ä»¥ä½¿ç¨: åæ®µ as å«åæè
:åæ®µ å«å
-- 卿æå¦çåæ°ä¸å 10åç¹é¿åæ¾ç¤ºã
select name,JS+10,Django+10,Database+10 from ExamResult;
-- ç»è®¡æ¯ä¸ªå¦ççæ»åã
select name,JS+Django+Database from ExamResult;
-- 使ç¨å«å表示å¦çæ»åã
select name as å§å,JS+Django+Database as æ»æç»© from ExamResult;
select name,JS+Django+Database æ»æç»© from ExamResult;
select name JS from ExamResult; //what will happen?---->è®°å¾å éå·
-- ï¼3ï¼ä½¿ç¨whereåå¥ï¼è¿è¡è¿æ»¤æ¥è¯¢ã
-- æ¥è¯¢å§å为XXXçå¦çæç»©
select * from ExamResult where name='yuan';
-- æ¥è¯¢è±è¯æç»©å¤§äº90åçåå¦
select id,name,JS from ExamResult where JS>90;
-- æ¥è¯¢æ»å大äº200åçææåå¦
select name,JS+Django+Database as æ»æç»© from
ExamResult where JS+Django+Database>200 ;
-- whereåå¥ä¸å¯ä»¥ä½¿ç¨ï¼
-- æ¯è¾è¿ç®ç¬¦ï¼
> < >= <= <> !=
between 80 and 100 å¼å¨10å°20ä¹é´
in(80,90,100) 弿¯10æ20æ30
like 'yuan%'
/*
patternå¯ä»¥æ¯%æè
_ï¼
妿æ¯%å表示任æå¤åç¬¦ï¼æ¤ä¾å¦åå§,åå½å¼º
妿æ¯_å表示ä¸ä¸ªå符å_ï¼åªæåå§ç¬¦åã
*/
-- é»è¾è¿ç®ç¬¦
å¨å¤ä¸ªæ¡ä»¶ç´æ¥å¯ä»¥ä½¿ç¨é»è¾è¿ç®ç¬¦ and or not
-- ç»ä¹
-- æ¥è¯¢JSåæ°å¨ 70ï¼100ä¹é´çåå¦ã
select name ,JS from ExamResult where JS between 80 and 100;
-- æ¥è¯¢Djangoåæ°ä¸º75,76,77çåå¦ã
select name ,Django from ExamResult where Django in (75,98,77);
-- æ¥è¯¢ææå§ççå¦çæç»©ã
select * from ExamResult where name like 'ç%';
-- æ¥è¯¢JSå>90ï¼Djangoå>90çåå¦ã
select id,name from ExamResult where JS>90 and Django >90;
-- æ¥æ¾ç¼ºèæ°å¦çå¦ççå§å
select name from ExamResult where Database is null;
-- ï¼4ï¼Order by æå®æåºçåï¼æåºçåå³å¯æ¯è¡¨ä¸çååï¼ä¹å¯ä»¥æ¯select è¯å¥åæå®çå«åã
-- select *|field1,field2... from tab_name order by field [Asc|Desc]
-- Asc ååºãDesc éåºï¼å
¶ä¸asc为é»è®¤å¼ ORDER BY åå¥åºä½äºSELECTè¯å¥çç»å°¾ã
-- ç»ä¹ ï¼
-- 对JSæç»©æåºåè¾åºã
select * from ExamResult order by JS;
-- 对æ»åæåºæä»é«å°ä½ç顺åºè¾åº
select name ,(ifnull(JS,0)+ifnull(Django,0)+ifnull(Database,0))
æ»æç»© from ExamResult order by æ»æç»© desc;
-- 坹姿çå¦çæç»©æåºè¾åº
select name ,(ifnull(JS,0)+ifnull(Django,0)+ifnull(Dababase,0))
æ»æç»© from ExamResult where name like 'a%'
order by æ»æç»© desc;
-- ï¼5ï¼group by åç»æ¥è¯¢ï¼
-- 注æ,æåç»æ¡ä»¶åç»åæ¯ä¸ç»åªä¼æ¾ç¤ºç¬¬ä¸æ¡è®°å½
-- group byåå¥ï¼å
¶åå¯ä»¥æ¥å¤ä¸ªååï¼ä¹å¯ä»¥è·havingåå¥,对group by çç»æè¿è¡çéã
-- æä½ç½®å段çé
select * from ExamResult group by 2;
-- ç»ä¹ ï¼å¯¹æç»©è¡¨æåååç»åï¼æ¾ç¤ºæ¯ä¸ç±»ååçJSçåæ°æ»å
select NAME ,SUM(JS)from ExamResult group by name;
-- ç»ä¹ ï¼å¯¹æç»©è¡¨æåååç»åï¼æ¾ç¤ºæ¯ä¸ç±»ååçDjangoçåæ°æ»å>150ç
-- ç±»ååådjangoæ»å
--INSERT INTO ExamResult VALUES (12,"alex",90,90,90);
select name,sum(Django) from ExamResult group by name
having sum(Django)>150;
/*
having å where两è
é½å¯ä»¥å¯¹æ¥è¯¢ç»æè¿è¡è¿ä¸æ¥çè¿æ»¤ï¼å·®å«æï¼
<1>whereè¯å¥åªè½ç¨å¨åç»ä¹åççéï¼havingå¯ä»¥ç¨å¨åç»ä¹åççéï¼
<2>使ç¨whereè¯å¥çå°æ¹é½å¯ä»¥ç¨havingè¿è¡æ¿æ¢
<3>havingä¸å¯ä»¥ç¨èå彿°ï¼whereä¸å°±ä¸è¡ã
*/
-- ç»ä¹ :对æç»©è¡¨æåååç»åï¼æ¾ç¤ºé¤äºyuanè¿ä¸ç»ä»¥å¤çæ¯ä¸ç±»ååçDjango
-- çåæ°æ»å>150çç±»ååådjangoæ»å
select name,sum(Django) from ExamResult
WHERE name!="yuan"
group by name
having sum(Django)>130;
-- GROUP_CONCAT() 彿°
SELECT id,GROUP_CONCAT(name),GROUP_CONCAT(JS) from ExamResult GROUP BY id;
-- ï¼6ï¼èå彿°ï¼ å
ä¸è¦ç®¡èå彿°è¦å¹²åï¼å
æè¦æ±çå
容æ¥åºæ¥åå
ä¸èå彿°å³å¯ã
-- (ä¸è¬ååç»æ¥è¯¢é
å使ç¨)
--<1> ç»è®¡è¡¨ä¸ææè®°å½
-- COUNT(åå)ï¼ç»è®¡è¡ç个æ°
-- ç»è®¡ä¸ä¸ªç级å
±æå¤å°å¦çï¼å
æ¥åºææçå¦çï¼åç¨countå
ä¸
select count(*) from ExamResult;
-- ç»è®¡JSæç»©å¤§äº70çå¦çæå¤å°ä¸ªï¼
select count(JS) from ExamResult where JS>70;
-- ç»è®¡æ»å大äº280çäººæ°æå¤å°ï¼
select count(name) from ExamResult
where (ifnull(JS,0)+ifnull(Django,0)+ifnull(Database,0))>280;
-- 注æ:count(*)ç»è®¡ææè¡; count(åæ®µ)ä¸ç»è®¡nullå¼.
-- SUM(åå)ï¼ç»è®¡æ»¡è¶³æ¡ä»¶çè¡çå
容å
-- ç»è®¡ä¸ä¸ªç级JSæ»æç»©ï¼å
æ¥åºææçJSæç»©ï¼åç¨sumå
ä¸
select JS as JSæ»æç»© from ExamResult;
select sum(JS) as JSæ»æç»© from ExamResult;
-- ç»è®¡ä¸ä¸ªç级åç§åå«çæ»æç»©
select sum(JS) as JSæ»æç»©,
sum(Django) as Djangoæ»æç»©,
sum(Database) as Databaseæ»æç»© from ExamResult;
-- ç»è®¡ä¸ä¸ªç级åç§çæç»©æ»å
select sum(ifnull(JS,0)+ifnull(Django,0)+ifnull(Database,0))
as æ»æç»© from ExamResult;
-- ç»è®¡ä¸ä¸ªç级JSæç»©å¹³åå
select sum(JS)/count(*) from ExamResult ;
-- 注æï¼sumä»
对æ°å¼èµ·ä½ç¨ï¼å¦å伿¥éã
-- AVG(åå)ï¼
-- æ±ä¸ä¸ªç级JSå¹³ååï¼å
æ¥åºææçJSåï¼ç¶åç¨avgå
ä¸ã
select avg(ifnull(JS,0)) from ExamResult;
-- æ±ä¸ä¸ªç级æ»åå¹³åå
select avg((ifnull(JS,0)+ifnull(Django,0)+ifnull(Database,0)))
from ExamResult ;
-- MaxãMin
-- æ±ç级æé«ååæä½åï¼æ°å¼èå´å¨ç»è®¡ä¸ç¹å«æç¨ï¼
select Max((ifnull(JS,0)+ifnull(Django,0)+ifnull(Database,0)))
æé«å from ExamResult;
select Min((ifnull(JS,0)+ifnull(Django,0)+ifnull(Database,0)))
æä½å from ExamResult;
-- 注æï¼null åææçæ°è®¡ç®é½æ¯nullï¼æä»¥éè¦ç¨ifnullå°null转æ¢ä¸º0ï¼
-- -----ifnull(JS,0)
-- with rollupç使ç¨
--<2> ç»è®¡åç»åçç»è®°å½
-- ï¼7ï¼ éç¹ï¼Select from where group by having order by
-- Mysql卿§è¡sqlè¯å¥æ¶çæ§è¡é¡ºåºï¼from where select group by having order by
-- åæ:
select JS as JSæç»© from ExamResult where JSæç»© >70; ---- 䏿å
select JS as JSæç»© from ExamResult having JSæç»© >90; --- æå
select JS as JSæç»© from ExamResult group by JSæç»© having JSæç»© >80; ----æå
select JS as JSæç»© from ExamResult order by JSæç»©;----æå
select * from ExamResult as æç»© where æç»©.JS>85; ---- æå
-- (8) limit
SELECT * from ExamResult limit 1;
SELECT * from ExamResult limit 1,5;
å¤é®çº¦æ
å建å¤é®
--- æ¯ä¸ä¸ªç主任ä¼å¯¹åºå¤ä¸ªå¦ç , èæ¯ä¸ªå¦çåªè½å¯¹åºä¸ä¸ªç主任
----主表
CREATE TABLE ClassCharger(
id TINYINT PRIMARY KEY auto_increment,
name VARCHAR (20),
age INT ,
is_marriged boolean -- show create table ClassCharger: tinyint(1)
);
INSERT INTO ClassCharger (name,age,is_marriged) VALUES ("å°å°",12,0),
("丹丹",14,0),
("æªæª",22,0),
("å§å§",20,0),
("å°é¨",21,0);
----å表
CREATE TABLE Student(
id INT PRIMARY KEY auto_increment,
name VARCHAR (20),
charger_id TINYINT, --åè®°:ä½ä¸ºå¤é®ä¸å®è¦åå
³è主é®çæ°æ®ç±»åä¿æä¸è´
-- [ADD CONSTRAINT charger_fk_stu]FOREIGN KEY (charger_id) REFERENCES ClassCharger(id)
) ENGINE=INNODB;
INSERT INTO Student(name,charger_id) VALUES ("alvin1",2),
("alvin2",4),
("alvin3",1),
("alvin4",3),
("alvin5",1),
("alvin6",3),
("alvin7",2);
DELETE FROM ClassCharger WHERE name="å°å°";
INSERT student (name,charger_id) VALUES ("yuan",1);
-- å é¤å±
ç¶æå,坿¯ alvin3æ¾ç¤ºè¿æ¯æç主任id=1çå°å°ç;
-----------å¢å å¤é®åå é¤å¤é®---------
ALTER TABLE student ADD CONSTRAINT abc
FOREIGN KEY(charger_id)
REFERENCES classcharger(id);
ALTER TABLE student DROP FOREIGN KEY abc;
innodbæ¯æçonè¯å¥
--å¤é®çº¦æå¯¹å表çå«ä¹: 妿å¨ç¶è¡¨ä¸æ¾ä¸å°åéé®,åä¸å
许å¨å表ä¸è¿è¡insert/update
--å¤é®çº¦æå¯¹ç¶è¡¨çå«ä¹: å¨ç¶è¡¨ä¸è¿è¡update/deleteä»¥æ´æ°æå é¤å¨åè¡¨ä¸æä¸æ¡æå¤æ¡å¯¹
-- åºå¹é
è¡çåé鮿¶,ç¶è¡¨çè¡ä¸ºåå³äºï¼å¨å®ä¹å表çå¤é®æ¶æå®ç
-- on update/on deleteåå¥
-----------------innodbæ¯æçåç§æ¹å¼---------------------------------------
-----cascadeæ¹å¼ å¨ç¶è¡¨ä¸update/deleteè®°å½æ¶ï¼åæ¥update/deleteæå表çå¹é
è®°å½
-----å¤é®ç级èå é¤ï¼å¦æç¶è¡¨ä¸çè®°å½è¢«å é¤ï¼åå表ä¸å¯¹åºçè®°å½èªå¨è¢«å é¤--------
FOREIGN KEY (charger_id) REFERENCES ClassCharger(id)
ON DELETE CASCADE
------set nullæ¹å¼ å¨ç¶è¡¨ä¸update/deleteè®°å½æ¶ï¼å°å表ä¸å¹é
è®°å½çå设为null
-- è¦æ³¨æå表çå¤é®åä¸è½ä¸ºnot null
FOREIGN KEY (charger_id) REFERENCES ClassCharger(id)
ON DELETE SET NULL
------Restrictæ¹å¼ :æç»å¯¹ç¶è¡¨è¿è¡å 餿´æ°æä½(äºè§£)
------No actionæ¹å¼ å¨mysqlä¸åRestrict,妿åè¡¨ä¸æå¹é
çè®°å½,åä¸å
许对ç¶è¡¨å¯¹åºåéé®
-- è¿è¡update/deleteæä½ï¼äºè§£ï¼
å¤è¡¨æ¥è¯¢
-- åå¤ä¸¤å¼ 表
-- company.employee
-- company.department
create table employee(
emp_id int auto_increment primary key not null,
emp_name varchar(50),
age int,
dept_id int
);
insert into employee(emp_name,age,dept_id) values
('A',19,200),
('B',26,201),
('C',30,201),
('D',24,202),
('E',20,200),
('F',38,204);
create table department(
dept_id int,
dept_name varchar(100)
);
insert into department values
(200,'人äºé¨'),
(201,'ææ¯é¨'),
(202,'éå®é¨'),
(203,'è´¢æ¿é¨');
mysql> select * from employee;
+--------+----------+------+---------+
| emp_id | emp_name | age | dept_id |
+--------+----------+------+---------+
| 1 | A | 19 | 200 |
| 2 | B | 26 | 201 |
| 3 | C | 30 | 201 |
| 4 | D | 24 | 202 |
| 5 | E | 20 | 200 |
| 6 | F | 38 | 204 |
+--------+----------+------+---------+
rows in set (0.00 sec)
mysql> select * from department;
+---------+-----------+
| dept_id | dept_name |
+---------+-----------+
| 200 | 人äºé¨ |
| 201 | ææ¯é¨ |
| 202 | éå®é¨ |
| 203 | è´¢æ¿é¨ |
+---------+-----------+
rows in set (0.01 sec)
å¤è¡¨æ¥è¯¢ä¹è¿æ¥æ¥è¯¢
1.ç¬å¡å°ç§¯æ¥è¯¢
mysql> SELECT * FROM employee,department;
-- select employee.emp_id,employee.emp_name,employee.age,
-- department.dept_name from employee,department;
+--------+----------+------+---------+---------+-----------+
| emp_id | emp_name | age | dept_id | dept_id | dept_name |
+--------+----------+------+---------+---------+-----------+
| 1 | A | 19 | 200 | 200 | 人äºé¨ |
| 1 | A | 19 | 200 | 201 | ææ¯é¨ |
| 1 | A | 19 | 200 | 202 | éå®é¨ |
| 1 | A | 19 | 200 | 203 | è´¢æ¿é¨ |
| 2 | B | 26 | 201 | 200 | 人äºé¨ |
| 2 | B | 26 | 201 | 201 | ææ¯é¨ |
| 2 | B | 26 | 201 | 202 | éå®é¨ |
| 2 | B | 26 | 201 | 203 | è´¢æ¿é¨ |
| 3 | C | 30 | 201 | 200 | 人äºé¨ |
| 3 | C | 30 | 201 | 201 | ææ¯é¨ |
| 3 | C | 30 | 201 | 202 | éå®é¨ |
| 3 | C | 30 | 201 | 203 | è´¢æ¿é¨ |
| 4 | D | 24 | 202 | 200 | 人äºé¨ |
| 4 | D | 24 | 202 | 201 | ææ¯é¨ |
| 4 | D | 24 | 202 | 202 | éå®é¨ |
| 4 | D | 24 | 202 | 203 | è´¢æ¿é¨ |
| 5 | E | 20 | 200 | 200 | 人äºé¨ |
| 5 | E | 20 | 200 | 201 | ææ¯é¨ |
| 5 | E | 20 | 200 | 202 | éå®é¨ |
| 5 | E | 20 | 200 | 203 | è´¢æ¿é¨ |
| 6 | F | 38 | 204 | 200 | 人äºé¨ |
| 6 | F | 38 | 204 | 201 | ææ¯é¨ |
| 6 | F | 38 | 204 | 202 | éå®é¨ |
| 6 | F | 38 | 204 | 203 | è´¢æ¿é¨ |
+--------+----------+------+---------+---------+-----------+
2.å è¿æ¥
-- æ¥è¯¢ä¸¤å¼ 表ä¸é½æçå
³èæ°æ®,ç¸å½äºå©ç¨æ¡ä»¶ä»ç¬å¡å°ç§¯ç»æä¸çéåºäºæ£ç¡®çç»æã
select * from employee,department where employee.dept_id = department.dept_id;
--select * from employee inner join department on employee.dept_id = department.dept_id;
+--------+----------+------+---------+---------+-----------+
| emp_id | emp_name | age | dept_id | dept_id | dept_name |
+--------+----------+------+---------+---------+-----------+
| 1 | A | 19 | 200 | 200 | 人äºé¨ |
| 2 | B | 26 | 201 | 201 | ææ¯é¨ |
| 3 | C | 30 | 201 | 201 | ææ¯é¨ |
| 4 | D | 24 | 202 | 202 | éå®é¨ |
| 5 | E | 20 | 200 | 200 | 人äºé¨ |
+--------+----------+------+---------+---------+-----------+
3.å¤é¾æ¥
--ï¼1ï¼å·¦å¤è¿æ¥ï¼å¨å
è¿æ¥çåºç¡ä¸å¢å 左边æå³è¾¹æ²¡æçç»æ
select * from employee left join department on employee.dept_id = department.dept_id;
+--------+----------+------+---------+---------+-----------+
| emp_id | emp_name | age | dept_id | dept_id | dept_name |
+--------+----------+------+---------+---------+-----------+
| 1 | A | 19 | 200 | 200 | 人äºé¨ |
| 5 | E | 20 | 200 | 200 | 人äºé¨ |
| 2 | B | 26 | 201 | 201 | ææ¯é¨ |
| 3 | C | 30 | 201 | 201 | ææ¯é¨ |
| 4 | D | 24 | 202 | 202 | éå®é¨ |
| 6 | F | 38 | 204 | NULL | NULL |
+--------+----------+------+---------+---------+-----------+
--ï¼2ï¼å³å¤è¿æ¥ï¼å¨å
è¿æ¥çåºç¡ä¸å¢å å³è¾¹æå·¦è¾¹æ²¡æçç»æ
select * from employee RIGHT JOIN department on employee.dept_id = department.dept_id;
+--------+----------+------+---------+---------+-----------+
| emp_id | emp_name | age | dept_id | dept_id | dept_name |
+--------+----------+------+---------+---------+-----------+
| 1 | A | 19 | 200 | 200 | 人äºé¨ |
| 2 | B | 26 | 201 | 201 | ææ¯é¨ |
| 3 | C | 30 | 201 | 201 | ææ¯é¨ |
| 4 | D | 24 | 202 | 202 | éå®é¨ |
| 5 | E | 20 | 200 | 200 | 人äºé¨ |
| NULL | NULL | NULL | NULL | 203 | è´¢æ¿é¨ |
+--------+----------+------+---------+---------+-----------+
--ï¼3ï¼å
¨å¤è¿æ¥ï¼å¨å
è¿æ¥çåºç¡ä¸å¢å 左边æå³è¾¹æ²¡æçåå³è¾¹æå·¦è¾¹æ²¡æçç»æ
-- mysql䏿¯æå
¨å¤è¿æ¥ full JOIN
-- mysqlå¯ä»¥ä½¿ç¨æ¤ç§æ¹å¼é´æ¥å®ç°å
¨å¤è¿æ¥
select * from employee RIGHT JOIN department on employee.dept_id = department.dept_id
UNION
select * from employee LEFT JOIN department on employee.dept_id = department.dept_id;
+--------+----------+------+---------+---------+-----------+
| emp_id | emp_name | age | dept_id | dept_id | dept_name |
+--------+----------+------+---------+---------+-----------+
| 1 | A | 19 | 200 | 200 | 人äºé¨ |
| 2 | B | 26 | 201 | 201 | ææ¯é¨ |
| 3 | C | 30 | 201 | 201 | ææ¯é¨ |
| 4 | D | 24 | 202 | 202 | éå®é¨ |
| 5 | E | 20 | 200 | 200 | 人äºé¨ |
| NULL | NULL | NULL | NULL | 203 | è´¢æ¿é¨ |
| 6 | F | 38 | 204 | NULL | NULL |
+--------+----------+------+---------+---------+-----------+
-- 注æ unionä¸union allçåºå«ï¼unionä¼å»æç¸åç纪å½
å¤è¡¨æ¥è¯¢ä¹å¤åæ¡ä»¶é¾æ¥æ¥è¯¢
-- æ¥è¯¢å工年é¾å¤§äºçäº25å²çé¨é¨
SELECT DISTINCT department.dept_name
FROM employee,department
WHERE employee.dept_id = department.dept_id
AND age>25;
--以å
è¿æ¥çæ¹å¼æ¥è¯¢employeeådepartment表ï¼å¹¶ä¸ä»¥ageåæ®µçååºæ¹å¼æ¾ç¤º
select employee.emp_id,employee.emp_name,employee.age,department.dept_name
from employee,department
where employee.dept_id = department.dept_id
order by age asc;
-- åæ¥è¯¢æ¯å°ä¸ä¸ªæ¥è¯¢è¯å¥åµå¥å¨å¦ä¸ä¸ªæ¥è¯¢è¯å¥ä¸ã
-- å
屿¥è¯¢è¯å¥çæ¥è¯¢ç»æï¼å¯ä»¥ä¸ºå¤å±æ¥è¯¢è¯å¥æä¾æ¥è¯¢æ¡ä»¶ã
-- åæ¥è¯¢ä¸å¯ä»¥å
å«ï¼INãNOT INãANYãALLãEXISTS å NOT EXISTSçå
³é®å
-- è¿å¯ä»¥å
嫿¯è¾è¿ç®ç¬¦ï¼= ã !=ã> ã<ç
-- 1. 带INå
³é®åçåæ¥è¯¢
---æ¥è¯¢employee表ï¼ä½dept_idå¿
é¡»å¨department表ä¸åºç°è¿
select * from employee
where dept_id IN
(select dept_id from department);
+--------+----------+------+---------+
| emp_id | emp_name | age | dept_id |
+--------+----------+------+---------+
| 1 | A | 19 | 200 |
| 2 | B | 26 | 201 |
| 3 | C | 30 | 201 |
| 4 | D | 24 | 202 |
| 5 | E | 20 | 200 |
+--------+----------+------+---------+
rows in set (0.01 sec)
-- 2. 带æ¯è¾è¿ç®ç¬¦çåæ¥è¯¢
-- =ã!=ã>ã>=ã<ã<=ã<>
-- æ¥è¯¢å工年é¾å¤§äºçäº25å²çé¨é¨
select dept_id,dept_name from department
where dept_id IN
(select DISTINCT dept_id from employee where age>=25);
-- 3. 带EXISTSå
³é®åçåæ¥è¯¢
-- EXISTSå
³åé®å表示åå¨ãå¨ä½¿ç¨EXISTSå
³é®åæ¶ï¼å
屿¥è¯¢è¯å¥ä¸è¿åæ¥è¯¢çè®°å½ã
-- èæ¯è¿åä¸ä¸ªçåå¼ãTureæFalse
-- å½è¿åTureæ¶ï¼å¤å±æ¥è¯¢è¯å¥å°è¿è¡æ¥è¯¢ï¼å½è¿åå¼ä¸ºFalseæ¶ï¼å¤å±æ¥è¯¢è¯å¥ä¸è¿è¡æ¥è¯¢
select * from employee
WHERE EXISTS
(SELECT dept_name from department where dept_id=203);
--department表ä¸åå¨dept_id=203ï¼Ture
select * from employee
WHERE EXISTS
(SELECT dept_name from department where dept_id=205);
-- Empty set (0.00 sec)
ps: create table t1(select * from t2);