| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
 100
 101
 102
 103
 104
 105
 106
 107
 108
 109
 110
 111
 112
 113
 114
 115
 116
 117
 118
 119
 120
 121
 122
 123
 124
 125
 126
 127
 128
 129
 130
 131
 132
 133
 134
 135
 136
 137
 138
 139
 140
 141
 142
 143
 144
 145
 146
 147
 148
 149
 150
 151
 152
 153
 154
 155
 156
 157
 158
 159
 160
 161
 162
 163
 164
 165
 166
 167
 168
 169
 170
 171
 172
 173
 174
 175
 176
 177
 178
 179
 180
 181
 182
 183
 184
 185
 186
 187
 188
 189
 190
 191
 192
 193
 194
 195
 196
 197
 198
 199
 200
 201
 202
 203
 204
 205
 206
 207
 208
 209
 210
 211
 212
 213
 214
 215
 216
 217
 218
 219
 220
 221
 222
 223
 224
 225
 226
 227
 228
 229
 230
 231
 232
 233
 234
 235
 236
 237
 238
 239
 240
 241
 242
 243
 244
 245
 246
 247
 248
 249
 250
 251
 252
 253
 254
 255
 256
 257
 258
 259
 260
 261
 262
 263
 264
 265
 266
 267
 268
 269
 270
 271
 272
 273
 274
 275
 276
 277
 278
 279
 280
 281
 282
 283
 284
 285
 286
 287
 288
 289
 290
 291
 292
 293
 294
 295
 296
 297
 298
 299
 300
 301
 302
 303
 304
 305
 306
 307
 308
 309
 310
 311
 312
 313
 314
 315
 316
 317
 318
 319
 320
 321
 322
 323
 324
 325
 326
 327
 328
 329
 330
 331
 332
 333
 334
 335
 336
 337
 338
 339
 340
 341
 342
 343
 344
 345
 346
 347
 348
 349
 350
 351
 352
 353
 354
 355
 356
 357
 358
 359
 360
 361
 
 | mysql -u root -p 
 
 
 
 
 SELECT VERSION(), CURRENT_DATE;
 
 
 SHOW DATABASES;
 
 
 CREATE DATABASE menagerie;
 
 
 USE menagerie
 
 
 CREATE TABLE pet (name VARCHAR(20), owner VARCHAR(20), species VARCHAR(20), sex CHAR(1),birth DATE, death DATE);
 
 
 SHOW TABLES;
 
 
 DESCRIBE pet;
 
 
 LOAD DATA LOCAL INFILE '/path/pet.txt' INTO TABLE pet;
 注意, 如果是Windows, 要使用 LINES TERMINATED BY 'rn';
 
 
 INSERT INTO pet VALUES ('Puffball','Diane','hamster','f','1999-03-30',NULL);
 INSERT INTO pet VALUES ('Fluffy',' Harold ','cat ','f ','1993-02-04',NULL);
 INSERT INTO pet VALUES ('Claws ','Gwen ','cat ','m ','1994-03-17',NULL);
 INSERT INTO pet VALUES ('Buffy ','Harold ','dog ','f ','1989-05-13',NULL);
 INSERT INTO pet VALUES ('Fang ','Benny',' dog ','m ','1990-08-27',NULL);
 INSERT INTO pet VALUES ('Bowser ','Diane ','dog ','m ','1979-08-31','1995-07-29');
 INSERT INTO pet VALUES ('Chirpy',' Gwen',' bird',' f',' 1998-09-11',NULL)
 INSERT INTO pet VALUES ('Whistler',' Gwen',' bird',' NULL', '1997-12-09',NULL)
 INSERT INTO pet VALUES ('Slim',' Benny',' snake',' m ','1996-04-29',NULL)
 
 
 
 
 
 
 
 
 SELECT * FROM pet;
 
 
 UPDATE pet SET birth = '1989-08-31' WHERE name = 'Bowser';
 
 
 SELECT * FROM pet WHERE name = 'Bowser';
 
 
 SELECT * FROM pet WHERE birth >= '1998-1-1';
 
 
 SELECT * FROM pet WHERE species = 'dog' AND sex = 'f';
 
 
 SELECT * FROM pet WHERE species = 'snake' OR species = 'bird';
 
 
 SELECT * FROM pet WHERE (species = 'cat' AND sex = 'm') OR (species = 'dog' AND sex = 'f');
 
 
 SELECT name, birth FROM pet;
 
 SELECT owner FROM pet;
 
 
 SELECT DISTINCT owner FROM pet;
 
 
 SELECT name, species, birth FROM pet WHERE species = 'dog' OR species = 'cat';
 
 
 SELECT name, birth FROM pet ORDER BY birth;
 
 
 SELECT name, birth FROM pet ORDER BY birth DESC;
 
 
 SELECT name, species, birth FROM pet ORDER BY species, birth DESC;
 
 
 CURDATE()
 
 
 TIMESTAMPDIFF()
 
 
 AS age (见后面的例子)
 
 
 SELECT name, birth, CURDATE(), TIMESTAMPDIFF(YEAR,birth,CURDATE()) AS age FROM pet;
 
 
 SELECT name, birth, CURDATE(), TIMESTAMPDIFF(YEAR,birth,CURDATE()) AS age FROM pet ORDER BYname;
 
 
 SELECT name, birth, CURDATE(), TIMESTAMPDIFF(YEAR,birth,CURDATE()) AS age FROM pet ORDER BYage;
 
 
 SELECT name, birth, death, TIMESTAMPDIFF(YEAR,birth,death) AS age FROM pet WHERE death IS NOT NULL ORDER BY age;
 
 
 YEAR(), MONTH(), DAYOFMONTH()
 
 
 SELECT name, birth, MONTH(birth) FROM pet;
 
 
 SELECT name, birth FROM pet WHERE MONTH(birth) = 5;
 
 
 SELECT name, birth FROM pet WHERE MONTH(birth) = MOD(MONTH(CURDATE()), 12) + 1;
 
 
 SELECT 1 IS NULL, 1 IS NOT NULL;
 
 
 SELECT * FROM pet WHERE name LIKE 'b%';
 
 
 SELECT * FROM pet WHERE name LIKE '%fy';
 
 
 SELECT * FROM pet WHERE name LIKE '%w%';
 
 
 SELECT * FROM pet WHERE name LIKE '_____';
 
 
 REGEXP and NOT REGEXP operators (or RLIKE and NOT RLIKE)
 
 
 
 
 
 
 
 
 
 
 
 
 SELECT * FROM pet WHERE name REGEXP '^b';
 
 
 SELECT * FROM pet WHERE name REGEXP BINARY '^b';
 
 
 SELECT * FROM pet WHERE name REGEXP 'fy$';
 
 
 SELECT * FROM pet WHERE name REGEXP 'w';
 
 
 SELECT * FROM pet WHERE name REGEXP '^.....$';
 
 SELECT * FROM pet WHERE name REGEXP '^.{5}$';
 
 
 SELECT COUNT(*) FROM pet;
 
 
 SELECT owner, COUNT(*) FROM pet GROUP BY owner;
 SELECT species, COUNT(*) FROM pet GROUP BY species;
 SELECT sex, COUNT(*) FROM pet GROUP BY sex;
 
 
 SELECT species, sex, COUNT(*) FROM pet GROUP BY species, sex;
 
 
 SELECT species, sex, COUNT(*) FROM pet WHERE species = 'dog' OR species = 'cat' GROUP BYspecies, sex;
 
 
 SELECT species, sex, COUNT(*) FROM pet WHERE sex IS NOT NULL GROUP BY species, sex;
 
 注意: select后面的列, 如果使用了count()函数, 则后面的group by后面, 必须跟上相同的列. 否则mysql会报错.
 
 
 
 CREATE TABLE event (name VARCHAR(20), date DATE, type VARCHAR(15), remark VARCHAR(255));
 
 
 LOAD DATA INFILE '/home/jinlong/programming/mysql/event.txt' INTO TABLE event;
 
 
 
 
 
 
 
 SELECT pet.name,
 (YEAR(date)-YEAR(birth)) - (RIGHT(date,5)<RIGHT(birth,5)) AS age,remark
 FROM pet INNER JOIN event
 ON pet.name = event.name
 WHERE event.type = 'litter';
 
 
 mysql> SELECT p1.name, p1.sex, p2.name, p2.sex, p1.species
 FROM pet AS p1 INNER JOIN pet AS p2
 ON p1.species = p2.species AND p1.sex = 'f' AND p2.sex = 'm';
 
 
 SELECT DATABASE();
 
 
 SHOW TABLES;
 
 
 DESCRIBE pet;
 
 
 
 mysql < batch-file
 
 mysql -e "source batch-file"
 
 
 
 mysql -h host -u user -p < batch-file
 
 
 mysql < batch-file | more
 
 
 mysql < batch-file > mysql.out
 
 
 mysql -t
 
 
 mysql -vvv
 
 
 source filename;
 或 . filename;
 
 
 
 
 
 show databases;
 create database test;
 use test;
 
 CREATE TABLE shop (
 article INT(4) UNSIGNED ZEROFILL DEFAULT '0000' NOT NULL,
 dealer CHAR(20)
 DEFAULT ''
 NOT NULL,
 price
 DOUBLE(16,2)
 DEFAULT '0.00' NOT NULL,
 PRIMARY KEY(article, dealer));
 
 INSERT INTO shop VALUES
 (1,'A',3.45),(1,'B',3.99),(2,'A',10.99),(3,'B',1.45),
 (3,'C',1.69),(3,'D',1.25),(4,'D',19.95);
 
 SELECT * FROM shop;
 
 
 SELECT MAX(article) AS article FROM shop;
 
 
 SELECT article, dealer, price
 FROM
 shop
 WHERE price=(SELECT MAX(price) FROM shop);
 
 
 SELECT article, MAX(price) AS price
 FROM
 shop
 GROUP BY article;
 
 
 SELECT article, dealer, price
 FROM
 shop s1
 WHERE price=(SELECT MAX(s2.price)
 FROM shop s2
 WHERE s1.article = s2.article);
 
 
 SELECT @min_price:=MIN(price),@max_price:=MAX(price) FROM shop;
 SELECT * FROM shop WHERE price=@min_price OR price=@max_price;
 
 
 
 
 CREATE TABLE person (
 id SMALLINT UNSIGNED NOT NULL AUTO_INCREMENT,
 name CHAR(60) NOT NULL,
 PRIMARY KEY (id)
 );
 
 CREATE TABLE shirt (
 id SMALLINT UNSIGNED NOT NULL AUTO_INCREMENT,
 style ENUM('t-shirt', 'polo', 'dress') NOT NULL,
 color ENUM('red', 'blue', 'orange', 'white', 'black') NOT NULL,
 owner SMALLINT UNSIGNED NOT NULL REFERENCES person(id),
 PRIMARY KEY (id)
 );
 
 INSERT INTO person VALUES (NULL, 'Antonio Paz');
 
 SELECT @last := LAST_INSERT_ID();
 
 INSERT INTO shirt VALUES
 (NULL, 'polo', 'blue', @last),
 (NULL, 'dress', 'white', @last),
 (NULL, 't-shirt', 'blue', @last);
 
 INSERT INTO person VALUES (NULL, 'Lilliana Angelovska');
 
 SELECT @last := LAST_INSERT_ID();
 
 INSERT INTO shirt VALUES
 (NULL, 'dress', 'orange', @last),
 (NULL, 'polo', 'red', @last),
 (NULL, 'dress', 'blue', @last),
 (NULL, 't-shirt', 'white', @last);
 
 SELECT * FROM person;
 
 ##
 SELECT field1_index, field2_index FROM test_table
 WHERE field1_index = '1' OR field2_index = '1'
 
 
 
 CREATE TABLE t1 (year YEAR(4), month INT(2) UNSIGNED ZEROFILL,
 day INT(2) UNSIGNED ZEROFILL);
 INSERT INTO t1 VALUES(2000,1,1),(2000,1,20),(2000,1,30),(2000,2,2),
 (2000,2,23),(2000,2,23);
 
 
 SELECT year,month,BIT_COUNT(BIT_OR(1<<day)) AS days FROM t1
 GROUP BY year,month;
 
 
 
 AUTO_INCREMENT
 
 CREATE TABLE animals (
 id MEDIUMINT NOT NULL AUTO_INCREMENT,
 name CHAR(30) NOT NULL,
 PRIMARY KEY (id)
 ) ENGINE=INNODB;
 INSERT INTO animals (name) VALUES
 ('dog'),('cat'),('penguin'),
 ('lax'),('whale'),('ostrich');
 SELECT * FROM animals;
 
 |