• MySQL入门


    这里简单的记录一下,MySQL的基本语法,包括建表,删除表,以及增删改查等操作。

    数据库的创建

    建表常用使用语法为CREATE DATABASE [IF NOT EXISTS] 表名 ,后面也可以指定字符集和校对规则,如果不指定就是默认的,可以通过命令来查看。

    1     CREATE DATABASE mydb1;    
    2     --指定字符集
    3     CREATE DATABASE mydb2 CHARACTER SET gbk;
    4     --查看mysql存储位置
    5     SHOW GLOBAL VARIABLES LIKE "%datadir%";
    6     --添加校对规则,可以查看mysql文档
    7     CREATE DATABASE mydb3 CHARACTER SET utf8 COLLATE utf8_bin;
    8     --创建一个mydb1,使用关键字
    9     CREATE DATABASE IF NOT EXISTS mydb1;

    可以查看数据库存储的位置

    通过value值提示,去到C盘去寻找,可以看出来刚才创建的数据库存放的实际位置。

    点进去有一个db.opt文件,可以查看数据库里的的基本设置,可以看出默认字符集为utf-8,默认校对规则是utf8_general_ci,一个字符集可以有很多校对规则,默认为ci结尾的,可以通过命令或者查看文档来查看。

    如下通过命令查看了数据库mydb2的字符集合和校对规则,这个得到的结果和上面一样。

     1 mysql> use mydb2;
     2 Database changed
     3 mysql> show character set;
     4 +----------+-----------------------------+---------------------+--------+
     5 | Charset  | Description                 | Default collation   | Maxlen |
     6 +----------+-----------------------------+---------------------+--------+
     7 | big5     | Big5 Traditional Chinese    | big5_chinese_ci     |      2 |
     8 | dec8     | DEC West European           | dec8_swedish_ci     |      1 |
     9 | cp850    | DOS West European           | cp850_general_ci    |      1 |
    10 | hp8      | HP West European            | hp8_english_ci      |      1 |
    11 | koi8r    | KOI8-R Relcom Russian       | koi8r_general_ci    |      1 |
    12 | latin1   | cp1252 West European        | latin1_swedish_ci   |      1 |
    13 | latin2   | ISO 8859-2 Central European | latin2_general_ci   |      1 |
    14 | swe7     | 7bit Swedish                | swe7_swedish_ci     |      1 |
    15 | ascii    | US ASCII                    | ascii_general_ci    |      1 |
    16 | ujis     | EUC-JP Japanese             | ujis_japanese_ci    |      3 |
    17 | sjis     | Shift-JIS Japanese          | sjis_japanese_ci    |      2 |
    18 | hebrew   | ISO 8859-8 Hebrew           | hebrew_general_ci   |      1 |
    19 | tis620   | TIS620 Thai                 | tis620_thai_ci      |      1 |
    20 | euckr    | EUC-KR Korean               | euckr_korean_ci     |      2 |
    21 | koi8u    | KOI8-U Ukrainian            | koi8u_general_ci    |      1 |
    22 | gb2312   | GB2312 Simplified Chinese   | gb2312_chinese_ci   |      2 |
    23 | greek    | ISO 8859-7 Greek            | greek_general_ci    |      1 |
    24 | cp1250   | Windows Central European    | cp1250_general_ci   |      1 |
    25 | gbk      | GBK Simplified Chinese      | gbk_chinese_ci      |      2 |
    26 | latin5   | ISO 8859-9 Turkish          | latin5_turkish_ci   |      1 |
    27 | armscii8 | ARMSCII-8 Armenian          | armscii8_general_ci |      1 |
    28 | utf8     | UTF-8 Unicode               | utf8_general_ci     |      3 |
    29 | ucs2     | UCS-2 Unicode               | ucs2_general_ci     |      2 |
    30 | cp866    | DOS Russian                 | cp866_general_ci    |      1 |
    31 | keybcs2  | DOS Kamenicky Czech-Slovak  | keybcs2_general_ci  |      1 |
    32 | macce    | Mac Central European        | macce_general_ci    |      1 |
    33 | macroman | Mac West European           | macroman_general_ci |      1 |
    34 | cp852    | DOS Central European        | cp852_general_ci    |      1 |
    35 | latin7   | ISO 8859-13 Baltic          | latin7_general_ci   |      1 |
    36 | utf8mb4  | UTF-8 Unicode               | utf8mb4_general_ci  |      4 |
    37 | cp1251   | Windows Cyrillic            | cp1251_general_ci   |      1 |
    38 | utf16    | UTF-16 Unicode              | utf16_general_ci    |      4 |
    39 | cp1256   | Windows Arabic              | cp1256_general_ci   |      1 |
    40 | cp1257   | Windows Baltic              | cp1257_general_ci   |      1 |
    41 | utf32    | UTF-32 Unicode              | utf32_general_ci    |      4 |
    42 | binary   | Binary pseudo charset       | binary              |      1 |
    43 | geostd8  | GEOSTD8 Georgian            | geostd8_general_ci  |      1 |
    44 | cp932    | SJIS for Windows Japanese   | cp932_japanese_ci   |      2 |
    45 | eucjpms  | UJIS for Windows Japanese   | eucjpms_japanese_ci |      3 |
    46 +----------+-----------------------------+---------------------+--------+
    47 39 rows in set (0.00 sec)
    48 
    49 mysql> show collation like '%utf8%';
    50 +--------------------------+---------+-----+---------+----------+---------+
    51 | Collation                | Charset | Id  | Default | Compiled | Sortlen |
    52 +--------------------------+---------+-----+---------+----------+---------+
    53 | utf8_general_ci          | utf8    |  33 | Yes     | Yes      |       1 |
    54 | utf8_bin                 | utf8    |  83 |         | Yes      |       1 |
    55 | utf8_unicode_ci          | utf8    | 192 |         | Yes      |       8 |
    56 | utf8_icelandic_ci        | utf8    | 193 |         | Yes      |       8 |
    57 | utf8_latvian_ci          | utf8    | 194 |         | Yes      |       8 |
    58 | utf8_romanian_ci         | utf8    | 195 |         | Yes      |       8 |
    59 | utf8_slovenian_ci        | utf8    | 196 |         | Yes      |       8 |
    60 | utf8_polish_ci           | utf8    | 197 |         | Yes      |       8 |
    61 | utf8_estonian_ci         | utf8    | 198 |         | Yes      |       8 |
    62 | utf8_spanish_ci          | utf8    | 199 |         | Yes      |       8 |
    63 | utf8_swedish_ci          | utf8    | 200 |         | Yes      |       8 |
    64 | utf8_turkish_ci          | utf8    | 201 |         | Yes      |       8 |
    65 | utf8_czech_ci            | utf8    | 202 |         | Yes      |       8 |
    66 | utf8_danish_ci           | utf8    | 203 |         | Yes      |       8 |
    67 | utf8_lithuanian_ci       | utf8    | 204 |         | Yes      |       8 |
    68 | utf8_slovak_ci           | utf8    | 205 |         | Yes      |       8 |
    69 | utf8_spanish2_ci         | utf8    | 206 |         | Yes      |       8 |
    70 | utf8_roman_ci            | utf8    | 207 |         | Yes      |       8 |
    71 | utf8_persian_ci          | utf8    | 208 |         | Yes      |       8 |
    72 | utf8_esperanto_ci        | utf8    | 209 |         | Yes      |       8 |
    73 | utf8_hungarian_ci        | utf8    | 210 |         | Yes      |       8 |
    74 | utf8_sinhala_ci          | utf8    | 211 |         | Yes      |       8 |
    75 | utf8_general_mysql500_ci | utf8    | 223 |         | Yes      |       1 |
    76 | utf8mb4_general_ci       | utf8mb4 |  45 | Yes     | Yes      |       1 |
    77 | utf8mb4_bin              | utf8mb4 |  46 |         | Yes      |       1 |
    78 | utf8mb4_unicode_ci       | utf8mb4 | 224 |         | Yes      |       8 |
    79 | utf8mb4_icelandic_ci     | utf8mb4 | 225 |         | Yes      |       8 |
    80 | utf8mb4_latvian_ci       | utf8mb4 | 226 |         | Yes      |       8 |
    81 | utf8mb4_romanian_ci      | utf8mb4 | 227 |         | Yes      |       8 |
    82 | utf8mb4_slovenian_ci     | utf8mb4 | 228 |         | Yes      |       8 |
    83 | utf8mb4_polish_ci        | utf8mb4 | 229 |         | Yes      |       8 |
    84 | utf8mb4_estonian_ci      | utf8mb4 | 230 |         | Yes      |       8 |
    85 | utf8mb4_spanish_ci       | utf8mb4 | 231 |         | Yes      |       8 |
    86 | utf8mb4_swedish_ci       | utf8mb4 | 232 |         | Yes      |       8 |
    87 | utf8mb4_turkish_ci       | utf8mb4 | 233 |         | Yes      |       8 |
    88 | utf8mb4_czech_ci         | utf8mb4 | 234 |         | Yes      |       8 |
    89 | utf8mb4_danish_ci        | utf8mb4 | 235 |         | Yes      |       8 |
    90 | utf8mb4_lithuanian_ci    | utf8mb4 | 236 |         | Yes      |       8 |
    91 | utf8mb4_slovak_ci        | utf8mb4 | 237 |         | Yes      |       8 |
    92 | utf8mb4_spanish2_ci      | utf8mb4 | 238 |         | Yes      |       8 |
    93 | utf8mb4_roman_ci         | utf8mb4 | 239 |         | Yes      |       8 |
    94 | utf8mb4_persian_ci       | utf8mb4 | 240 |         | Yes      |       8 |
    95 | utf8mb4_esperanto_ci     | utf8mb4 | 241 |         | Yes      |       8 |
    96 | utf8mb4_hungarian_ci     | utf8mb4 | 242 |         | Yes      |       8 |
    97 | utf8mb4_sinhala_ci       | utf8mb4 | 243 |         | Yes      |       8 |
    98 +--------------------------+---------+-----+---------+----------+---------+

    数据库的常见操作

    (1)查看数据库,查看数据创建的语句

    1     --查看全部数据库
    2     SHOW DATABASES;
    3     --查看数据库的创建语句
    4     SHOW CREATE DATABASE mydb1;

    (2) 选择使用的数据库,查看正在使用的数据库

    1 --选择正在使用数据库
    2     SELECT DATABASE();
    3 --使用数据库
    4     USE mydb2;

     

     (3)修改数据库和删除数据库

    修改数据库mydb2的校对规则为utf8_spanish_ci,然后查看建表语句发现已修改。

    1 alter database mydb2 character set utf8 collate utf8_spanish_ci;

    删除数据库语句比较简单。

    1     --删除数据库
    2     DROP DATABASE IF EXISTS mydb3;--IF EXISTS是可选的参数

    可以看出有一个警告,是因为没有这个数据库,所以报警告。

    数据库表的操作

    关于数据库表的操作,分为两大块来记录,一块是针对表的创建、修改、删除,一块是针对表的增删改查操作,即数据库的CRUD(select,insert,update,delete)。

    表的DDL操作

    (1)创建表,表中字段类型可以通过查看文档获得。

     1     CREATE TABLE employee(
     2         id int primary key auto_increment,
     3         name varchar(10),
     4         gender char(2),
     5         birthday date,
     6         entry_date date,
     7         job varchar(20),
     8         salary double,
     9         resume text
    10     );

    (2)修改表

    按照如下要求修改上面创建的表。

     1     --增加一个字段
     2     ALTER TABLE employee ADD image blob;        
     3     --修改一个字段
     4     ALTER TABLE employee MODIFY job varchar(60);
     5     --删除字段
     6     ALTER TABLE employee DROP gender;
     7     --修改表名
     8     RENAME TABLE employee TO emp; 
     9     --修改列名
    10     ALTER TABLE emp CHANGE name username varchar(20);
    11     --修改表的字符集
    12     ALTER TABLE emp CHARACTER SET utf8;
      1 mysql> desc employee;
      2 +------------+-------------+------+-----+---------+----------------+
      3 | Field      | Type        | Null | Key | Default | Extra          |
      4 +------------+-------------+------+-----+---------+----------------+
      5 | id         | int(11)     | NO   | PRI | NULL    | auto_increment |
      6 | name       | varchar(10) | YES  |     | NULL    |                |
      7 | gender     | char(2)     | YES  |     | NULL    |                |
      8 | birthday   | date        | YES  |     | NULL    |                |
      9 | entry_date | date        | YES  |     | NULL    |                |
     10 | job        | varchar(20) | YES  |     | NULL    |                |
     11 | salary     | double      | YES  |     | NULL    |                |
     12 | resume     | text        | YES  |     | NULL    |                |
     13 +------------+-------------+------+-----+---------+----------------+
     14 8 rows in set (0.00 sec)
     15 
     16 mysql> alter table employee add image blob;
     17 Query OK, 0 rows affected (0.20 sec)
     18 Records: 0  Duplicates: 0  Warnings: 0
     19 
     20 mysql> desc employee;
     21 +------------+-------------+------+-----+---------+----------------+
     22 | Field      | Type        | Null | Key | Default | Extra          |
     23 +------------+-------------+------+-----+---------+----------------+
     24 | id         | int(11)     | NO   | PRI | NULL    | auto_increment |
     25 | name       | varchar(10) | YES  |     | NULL    |                |
     26 | gender     | char(2)     | YES  |     | NULL    |                |
     27 | birthday   | date        | YES  |     | NULL    |                |
     28 | entry_date | date        | YES  |     | NULL    |                |
     29 | job        | varchar(20) | YES  |     | NULL    |                |
     30 | salary     | double      | YES  |     | NULL    |                |
     31 | resume     | text        | YES  |     | NULL    |                |
     32 | image      | blob        | YES  |     | NULL    |                |
     33 +------------+-------------+------+-----+---------+----------------+
     34 9 rows in set (0.00 sec)
     35 
     36 mysql> alter table employee modify job varchar(60);
     37 Query OK, 0 rows affected (0.17 sec)
     38 Records: 0  Duplicates: 0  Warnings: 0
     39 
     40 mysql> desc employee;
     41 +------------+-------------+------+-----+---------+----------------+
     42 | Field      | Type        | Null | Key | Default | Extra          |
     43 +------------+-------------+------+-----+---------+----------------+
     44 | id         | int(11)     | NO   | PRI | NULL    | auto_increment |
     45 | name       | varchar(10) | YES  |     | NULL    |                |
     46 | gender     | char(2)     | YES  |     | NULL    |                |
     47 | birthday   | date        | YES  |     | NULL    |                |
     48 | entry_date | date        | YES  |     | NULL    |                |
     49 | job        | varchar(60) | YES  |     | NULL    |                |
     50 | salary     | double      | YES  |     | NULL    |                |
     51 | resume     | text        | YES  |     | NULL    |                |
     52 | image      | blob        | YES  |     | NULL    |                |
     53 +------------+-------------+------+-----+---------+----------------+
     54 9 rows in set (0.00 sec)
     55 
     56 mysql> alter table employee drop gender;
     57 Query OK, 0 rows affected (0.28 sec)
     58 Records: 0  Duplicates: 0  Warnings: 0
     59 
     60 mysql> desc employee;
     61 +------------+-------------+------+-----+---------+----------------+
     62 | Field      | Type        | Null | Key | Default | Extra          |
     63 +------------+-------------+------+-----+---------+----------------+
     64 | id         | int(11)     | NO   | PRI | NULL    | auto_increment |
     65 | name       | varchar(10) | YES  |     | NULL    |                |
     66 | birthday   | date        | YES  |     | NULL    |                |
     67 | entry_date | date        | YES  |     | NULL    |                |
     68 | job        | varchar(60) | YES  |     | NULL    |                |
     69 | salary     | double      | YES  |     | NULL    |                |
     70 | resume     | text        | YES  |     | NULL    |                |
     71 | image      | blob        | YES  |     | NULL    |                |
     72 +------------+-------------+------+-----+---------+----------------+
     73 8 rows in set (0.00 sec)
     74 
     75 mysql> rename table employee emp;
     76 ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that
     77 corresponds to your MySQL server version for the right syntax to use near 'emp'
     78 at line 1
     79 mysql> rename table employee to emp;
     80 Query OK, 0 rows affected (0.08 sec)
     81 
     82 mysql> show tables;
     83 +-----------------+
     84 | Tables_in_mydb2 |
     85 +-----------------+
     86 | emp             |
     87 +-----------------+
     88 1 row in set (0.00 sec)
     89 
     90 mysql> desc emp;
     91 +------------+-------------+------+-----+---------+----------------+
     92 | Field      | Type        | Null | Key | Default | Extra          |
     93 +------------+-------------+------+-----+---------+----------------+
     94 | id         | int(11)     | NO   | PRI | NULL    | auto_increment |
     95 | name       | varchar(10) | YES  |     | NULL    |                |
     96 | birthday   | date        | YES  |     | NULL    |                |
     97 | entry_date | date        | YES  |     | NULL    |                |
     98 | job        | varchar(60) | YES  |     | NULL    |                |
     99 | salary     | double      | YES  |     | NULL    |                |
    100 | resume     | text        | YES  |     | NULL    |                |
    101 | image      | blob        | YES  |     | NULL    |                |
    102 +------------+-------------+------+-----+---------+----------------+
    103 8 rows in set (0.00 sec)
    104 
    105 mysql> alter table emp change name username varchar(30);
    106 Query OK, 0 rows affected (0.23 sec)
    107 Records: 0  Duplicates: 0  Warnings: 0
    108 
    109 mysql> desc emp;
    110 +------------+-------------+------+-----+---------+----------------+
    111 | Field      | Type        | Null | Key | Default | Extra          |
    112 +------------+-------------+------+-----+---------+----------------+
    113 | id         | int(11)     | NO   | PRI | NULL    | auto_increment |
    114 | username   | varchar(30) | YES  |     | NULL    |                |
    115 | birthday   | date        | YES  |     | NULL    |                |
    116 | entry_date | date        | YES  |     | NULL    |                |
    117 | job        | varchar(60) | YES  |     | NULL    |                |
    118 | salary     | double      | YES  |     | NULL    |                |
    119 | resume     | text        | YES  |     | NULL    |                |
    120 | image      | blob        | YES  |     | NULL    |                |
    121 +------------+-------------+------+-----+---------+----------------+
    122 8 rows in set (0.01 sec)
    123 
    124 mysql> alter table emp character set utf8;
    125 Query OK, 0 rows affected (0.22 sec)
    126 Records: 0  Duplicates: 0  Warnings: 0
    127 
    128 mysql> show create table emp;
    129 +-------+-----------------------------------------------------------------------
    130 --------------------------------------------------------------------------------
    131 --------------------------------------------------------------------------------
    132 --------------------------------------------------------------------------------
    133 --------------------------------------------------------------------------------
    134 --------------------------------------------------------------+
    135 | Table | Create Table
    136 
    137 
    138 
    139 
    140                                                               |
    141 +-------+-----------------------------------------------------------------------
    142 --------------------------------------------------------------------------------
    143 --------------------------------------------------------------------------------
    144 --------------------------------------------------------------------------------
    145 --------------------------------------------------------------------------------
    146 --------------------------------------------------------------+
    147 | emp   | CREATE TABLE `emp` (
    148   `id` int(11) NOT NULL AUTO_INCREMENT,
    149   `username` varchar(30) CHARACTER SET utf8 COLLATE utf8_spanish_ci DEFAULT NULL
    150 ,
    151   `birthday` date DEFAULT NULL,
    152   `entry_date` date DEFAULT NULL,
    153   `job` varchar(60) CHARACTER SET utf8 COLLATE utf8_spanish_ci DEFAULT NULL,
    154   `salary` double DEFAULT NULL,
    155   `resume` text CHARACTER SET utf8 COLLATE utf8_spanish_ci,
    156   `image` blob,
    157   PRIMARY KEY (`id`)
    158 ) ENGINE=InnoDB DEFAULT CHARSET=utf8 |
    159 +-------+-----------------------------------------------------------------------
    160 --------------------------------------------------------------------------------
    161 --------------------------------------------------------------------------------
    162 --------------------------------------------------------------------------------
    163 --------------------------------------------------------------------------------
    164 --------------------------------------------------------------+
    165 1 row in set (0.00 sec)

    (3)删除表

    1 DROP TABLE emp;

    另外还有一种删除表的方式,使用truncate关键字。一般来说truncate删除表效率高,相比delete from来说就是推倒重建,主键初始化等,工作中不推荐使用。

    1    --删除表中所有记录
    2     DELETE FROM employee;  
    3    --truncate删除方式,将表格重建,索引重新开始,如果是delete删除,索引继续按照上次记录开始
    4     truncate employee;
    5    --truncate删除效率要高于delete,并且其删除可能会破坏和其他表的关系,不推荐使用。

    表的CRUD操作

    (1)插入数据

     1     --插入数据 字符串和日期类型数据需使用单引号括起来,字段自动增长,则这个字段不需要填写具体值。
     2     INSERT INTO employee VALUES(null,'zhangsan','M','1999-01-02','2000-01-01','dance',15000,'are you ok?');  
     3     INSERT INTO employee VALUES(null,'lisi','M','1998-01-02','2000-01-01','dance',15000,'hello');  
     4     INSERT INTO employee VALUES(null,'wangwu','M','1990-01-02','2000-01-01','dance',15000,'buddy');  
     5     --auto_increment设置后,每次自增数据需要检查表中最大的数,然后在最大值的基础上加1。
     6     --单独插入选定列,数据和列需要一一对应,如果没写任何字段,就是默认值插入。
     7     INSERT INTO employee(id,name) VALUES(null,'zhaoliu');
     8     --插入中文,发现报错
     9     --ERROR 1366 (HY000): Incorrect string value: 'xD5xC5xC8xFD' for column 'name' at row 1
    10     INSERT INTO employee VALUES(null,'张三','M','1990-01-02','2000-01-01','dance',15000,'buddy');
     1 mysql> show variables like '%character%';
     2 +--------------------------+--------------------------+
     3 | Variable_name            | Value                    |
     4 +--------------------------+--------------------------+
     5 | character_set_client     | utf8                     |
     6 | character_set_connection | utf8                     |
     7 | character_set_database   | gbk                      |
     8 | character_set_filesystem | binary                   |
     9 | character_set_results    | utf8                     |
    10 | character_set_server     | utf8                     |
    11 | character_set_system     | utf8                     |
    12 | character_sets_dir       | D:mysqlsharecharsets |
    13 +--------------------------+--------------------------+
    14 8 rows in set (0.00 sec)
    15 
    16 mysql> INSERT INTO employee VALUES(null,'zhangsan','M','1999-01-02','2000-01-01'
    17 ,'dance',15000,'are you ok?');
    18 Query OK, 1 row affected (0.08 sec)
    19 
    20 mysql>  INSERT INTO employee VALUES(null,'lisi','M','1998-01-02','2000-01-01','d
    21 ance',15000,'hello');
    22 Query OK, 1 row affected (0.03 sec)
    23 
    24 mysql>  INSERT INTO employee VALUES(null,'wangwu','M','1990-01-02','2000-01-01',
    25 'dance',15000,'buddy');
    26 Query OK, 1 row affected (0.07 sec)
    27 
    28 mysql> select * from employee;
    29 +----+----------+--------+------------+------------+-------+--------+-----------
    30 --+
    31 | id | name     | gender | birthday   | entry_date | job   | salary | resume
    32   |
    33 +----+----------+--------+------------+------------+-------+--------+-----------
    34 --+
    35 | 14 | zhangsan | M      | 1999-01-02 | 2000-01-01 | dance |  15000 | are you ok
    36 ? |
    37 | 15 | lisi     | M      | 1998-01-02 | 2000-01-01 | dance |  15000 | hello
    38   |
    39 | 16 | wangwu   | M      | 1990-01-02 | 2000-01-01 | dance |  15000 | buddy
    40   |
    41 +----+----------+--------+------------+------------+-------+--------+-----------
    42 --+
    43 3 rows in set (0.00 sec)
    44 
    45 mysql> INSERT INTO employee(id,name) VALUES(null,'zhaoliu');
    46 Query OK, 1 row affected (0.07 sec)
    47 
    48 mysql> select * from employee;
    49 +----+----------+--------+------------+------------+-------+--------+-----------
    50 --+
    51 | id | name     | gender | birthday   | entry_date | job   | salary | resume
    52   |
    53 +----+----------+--------+------------+------------+-------+--------+-----------
    54 --+
    55 | 14 | zhangsan | M      | 1999-01-02 | 2000-01-01 | dance |  15000 | are you ok
    56 ? |
    57 | 15 | lisi     | M      | 1998-01-02 | 2000-01-01 | dance |  15000 | hello
    58   |
    59 | 16 | wangwu   | M      | 1990-01-02 | 2000-01-01 | dance |  15000 | buddy
    60   |
    61 | 17 | zhaoliu  | NULL   | NULL       | NULL       | NULL  |   NULL | NULL
    62   |
    63 +----+----------+--------+------------+------------+-------+--------+-----------
    64 --+
    65 4 rows in set (0.00 sec)
    66 
    67 mysql> INSERT INTO employee VALUES(null,'张三','M','1990-01-02','2000-01-01','da
    68 nce',15000,'buddy');
    69 ERROR 1366 (HY000): Incorrect string value: 'xD5xC5xC8xFD' for column 'name'
    70  at row 1

    发现在插入中文字符时报错,本质原因就是编码和解码的规则不一致造成的,mysql client窗口默认是gbk,窗口向mysql client传输使用的是utf8,mysql client使用的是utf8,返回给mysql client使用的是utf-8,因此造成了编码解码的不一致。解决这个问题有临时策略和永久策略,临时策略就是修改mysql client窗口的字符集为utf8。

    临时策略,只在当前窗口有效

     1 mysql> show variables like '%character%';
     2 +--------------------------+--------------------------+
     3 | Variable_name            | Value                    |
     4 +--------------------------+--------------------------+
     5 | character_set_client     | utf8                     |
     6 | character_set_connection | utf8                     |
     7 | character_set_database   | gbk                      |
     8 | character_set_filesystem | binary                   |
     9 | character_set_results    | utf8                     |
    10 | character_set_server     | utf8                     |
    11 | character_set_system     | utf8                     |
    12 | character_sets_dir       | D:mysqlsharecharsets |
    13 +--------------------------+--------------------------+
    14 8 rows in set (0.00 sec)
    15 
    16 mysql> set names gbk;
    17 Query OK, 0 rows affected (0.00 sec)
    18 
    19 mysql> show variables like '%character%';
    20 +--------------------------+--------------------------+
    21 | Variable_name            | Value                    |
    22 +--------------------------+--------------------------+
    23 | character_set_client     | gbk                      |
    24 | character_set_connection | gbk                      |
    25 | character_set_database   | gbk                      |
    26 | character_set_filesystem | binary                   |
    27 | character_set_results    | gbk                      |
    28 | character_set_server     | utf8                     |
    29 | character_set_system     | utf8                     |
    30 | character_sets_dir       | D:mysqlsharecharsets |
    31 +--------------------------+--------------------------+
    32 8 rows in set (0.00 sec)
    33 
    34 mysql> select * from employee;
    35 +----+----------+--------+------------+------------+-------+--------+-----------
    36 --+
    37 | id | name     | gender | birthday   | entry_date | job   | salary | resume
    38   |
    39 +----+----------+--------+------------+------------+-------+--------+-----------
    40 --+
    41 | 14 | zhangsan | M      | 1999-01-02 | 2000-01-01 | dance |  15000 | are you ok
    42 ? |
    43 | 15 | lisi     | M      | 1998-01-02 | 2000-01-01 | dance |  15000 | hello
    44   |
    45 | 16 | wangwu   | M      | 1990-01-02 | 2000-01-01 | dance |  15000 | buddy
    46   |
    47 | 17 | zhaoliu  | NULL   | NULL       | NULL       | NULL  |   NULL | NULL
    48   |
    49 +----+----------+--------+------------+------------+-------+--------+-----------
    50 --+
    51 4 rows in set (0.00 sec)
    52 
    53 mysql> INSERT INTO employee VALUES(null,'张三','M','1990-01-02','2000-01-01','da
    54 nce',15000,'buddy');
    55 Query OK, 1 row affected (0.07 sec)
    56 
    57 mysql> select * from employee;
    58 +----+----------+--------+------------+------------+-------+--------+-----------
    59 --+
    60 | id | name     | gender | birthday   | entry_date | job   | salary | resume
    61   |
    62 +----+----------+--------+------------+------------+-------+--------+-----------
    63 --+
    64 | 14 | zhangsan | M      | 1999-01-02 | 2000-01-01 | dance |  15000 | are you ok
    65 ? |
    66 | 15 | lisi     | M      | 1998-01-02 | 2000-01-01 | dance |  15000 | hello
    67   |
    68 | 16 | wangwu   | M      | 1990-01-02 | 2000-01-01 | dance |  15000 | buddy
    69   |
    70 | 17 | zhaoliu  | NULL   | NULL       | NULL       | NULL  |   NULL | NULL
    71   |
    72 | 18 | 张三         | M      | 1990-01-02 | 2000-01-01 | dance |  15000 | buddy
    73       |
    74 +----+----------+--------+------------+------------+-------+--------+-----------
    75 --+
    76 5 rows in set (0.00 sec)

    永久策略,修改mysql配置文件my.ini,并重启mysql服务即可。

    重启可以在dos下,也可以在服务中来重启。 

    1 #关闭mysql
    2 net stop mysql
    3 #开启mysql
    4 net start mysql

    重启后查看字符集,并继续插入带中文OK,这种配置是永久的。

     1 mysql> use mydb2;
     2 Database changed
     3 mysql> show variables like '%character%';
     4 +--------------------------+--------------------------+
     5 | Variable_name            | Value                    |
     6 +--------------------------+--------------------------+
     7 | character_set_client     | gbk                      |
     8 | character_set_connection | gbk                      |
     9 | character_set_database   | gbk                      |
    10 | character_set_filesystem | binary                   |
    11 | character_set_results    | gbk                      |
    12 | character_set_server     | utf8                     |
    13 | character_set_system     | utf8                     |
    14 | character_sets_dir       | D:mysqlsharecharsets |
    15 +--------------------------+--------------------------+
    16 8 rows in set (0.00 sec)
    17 
    18 mysql> select * from employee;
    19 Empty set (0.00 sec)
    20 
    21 mysql> show variables like '%character%';
    22 +--------------------------+--------------------------+
    23 | Variable_name            | Value                    |
    24 +--------------------------+--------------------------+
    25 | character_set_client     | gbk                      |
    26 | character_set_connection | gbk                      |
    27 | character_set_database   | gbk                      |
    28 | character_set_filesystem | binary                   |
    29 | character_set_results    | gbk                      |
    30 | character_set_server     | utf8                     |
    31 | character_set_system     | utf8                     |
    32 | character_sets_dir       | D:mysqlsharecharsets |
    33 +--------------------------+--------------------------+
    34 8 rows in set (0.00 sec)
    35 
    36 mysql> INSERT INTO employee VALUES(null,'张三','M','1990-01-02','2000-01-01','da
    37 nce',15000,'buddy');
    38 Query OK, 1 row affected (0.08 sec)
    39 
    40 mysql> select * from employee;
    41 +----+------+--------+------------+------------+-------+--------+--------+
    42 | id | name | gender | birthday   | entry_date | job   | salary | resume |
    43 +----+------+--------+------------+------------+-------+--------+--------+
    44 | 19 | 张三 | M      | 1990-01-02 | 2000-01-01 | dance |  15000 | buddy  |
    45 +----+------+--------+------------+------------+-------+--------+--------+
    46 1 row in set (0.00 sec)

    (2)更新数据

    更新语句参考如下格式。

    1     --基本语句
    2     UPDATE employee set salary=5000;   
    3     --通过where条件,添加过滤条件
    4     UPDATE employee set salary=10000 WHERE id=1;   
    5     --set语句中也可以写表达式  
    6     UPDATE employee set salary=salary+5000 WHERE name='zhangsan';            UPDATE employee set salary=6000,job='driver' WHERE name='lisi'; 
      1 mysql> select * from employee;
      2 +----+----------+--------+------------+------------+-------+--------+-----------
      3 --+
      4 | id | name     | gender | birthday   | entry_date | job   | salary | resume
      5   |
      6 +----+----------+--------+------------+------------+-------+--------+-----------
      7 --+
      8 | 19 | 张三     | M      | 1990-01-02 | 2000-01-01 | dance |  15000 | buddy
      9   |
     10 | 20 | zhangsan | M      | 1999-01-02 | 2000-01-01 | dance |  15000 | are you ok
     11 ? |
     12 | 21 | lisi     | M      | 1998-01-02 | 2000-01-01 | dance |  15000 | hello
     13   |
     14 | 22 | wangwu   | M      | 1990-01-02 | 2000-01-01 | dance |  15000 | buddy
     15   |
     16 | 23 | zhaoliu  | NULL   | NULL       | NULL       | NULL  |   NULL | NULL
     17   |
     18 +----+----------+--------+------------+------------+-------+--------+-----------
     19 --+
     20 5 rows in set (0.00 sec)
     21 
     22 mysql> update employee set salary=5000;
     23 Query OK, 5 rows affected (0.07 sec)
     24 Rows matched: 5  Changed: 5  Warnings: 0
     25 
     26 mysql> select * from employee;
     27 +----+----------+--------+------------+------------+-------+--------+-----------
     28 --+
     29 | id | name     | gender | birthday   | entry_date | job   | salary | resume
     30   |
     31 +----+----------+--------+------------+------------+-------+--------+-----------
     32 --+
     33 | 19 | 张三     | M      | 1990-01-02 | 2000-01-01 | dance |   5000 | buddy
     34   |
     35 | 20 | zhangsan | M      | 1999-01-02 | 2000-01-01 | dance |   5000 | are you ok
     36 ? |
     37 | 21 | lisi     | M      | 1998-01-02 | 2000-01-01 | dance |   5000 | hello
     38   |
     39 | 22 | wangwu   | M      | 1990-01-02 | 2000-01-01 | dance |   5000 | buddy
     40   |
     41 | 23 | zhaoliu  | NULL   | NULL       | NULL       | NULL  |   5000 | NULL
     42   |
     43 +----+----------+--------+------------+------------+-------+--------+-----------
     44 --+
     45 5 rows in set (0.00 sec)
     46 
     47 mysql> update employee set salary=18888 where id=19;
     48 Query OK, 1 row affected (0.03 sec)
     49 Rows matched: 1  Changed: 1  Warnings: 0
     50 
     51 mysql> select * from employee;
     52 +----+----------+--------+------------+------------+-------+--------+-----------
     53 --+
     54 | id | name     | gender | birthday   | entry_date | job   | salary | resume
     55   |
     56 +----+----------+--------+------------+------------+-------+--------+-----------
     57 --+
     58 | 19 | 张三     | M      | 1990-01-02 | 2000-01-01 | dance |  18888 | buddy
     59   |
     60 | 20 | zhangsan | M      | 1999-01-02 | 2000-01-01 | dance |   5000 | are you ok
     61 ? |
     62 | 21 | lisi     | M      | 1998-01-02 | 2000-01-01 | dance |   5000 | hello
     63   |
     64 | 22 | wangwu   | M      | 1990-01-02 | 2000-01-01 | dance |   5000 | buddy
     65   |
     66 | 23 | zhaoliu  | NULL   | NULL       | NULL       | NULL  |   5000 | NULL
     67   |
     68 +----+----------+--------+------------+------------+-------+--------+-----------
     69 --+
     70 5 rows in set (0.00 sec)
     71 
     72 mysql> update employee set salary=salary+5000 where name='zhangsan';
     73 Query OK, 1 row affected (0.08 sec)
     74 Rows matched: 1  Changed: 1  Warnings: 0
     75 
     76 mysql> select * from employee;
     77 +----+----------+--------+------------+------------+-------+--------+-----------
     78 --+
     79 | id | name     | gender | birthday   | entry_date | job   | salary | resume
     80   |
     81 +----+----------+--------+------------+------------+-------+--------+-----------
     82 --+
     83 | 19 | 张三     | M      | 1990-01-02 | 2000-01-01 | dance |  18888 | buddy
     84   |
     85 | 20 | zhangsan | M      | 1999-01-02 | 2000-01-01 | dance |  10000 | are you ok
     86 ? |
     87 | 21 | lisi     | M      | 1998-01-02 | 2000-01-01 | dance |   5000 | hello
     88   |
     89 | 22 | wangwu   | M      | 1990-01-02 | 2000-01-01 | dance |   5000 | buddy
     90   |
     91 | 23 | zhaoliu  | NULL   | NULL       | NULL       | NULL  |   5000 | NULL
     92   |
     93 +----+----------+--------+------------+------------+-------+--------+-----------
     94 --+
     95 5 rows in set (0.00 sec)
     96 
     97 mysql> update employee set salary=8888,job='old driver' where name='wangwu';
     98 Query OK, 1 row affected (0.05 sec)
     99 Rows matched: 1  Changed: 1  Warnings: 0
    100 
    101 mysql> select * from employee;
    102 +----+----------+--------+------------+------------+------------+--------+------
    103 -------+
    104 | id | name     | gender | birthday   | entry_date | job        | salary | resum
    105 e      |
    106 +----+----------+--------+------------+------------+------------+--------+------
    107 -------+
    108 | 19 | 张三     | M      | 1990-01-02 | 2000-01-01 | dance      |  18888 | buddy
    109        |
    110 | 20 | zhangsan | M      | 1999-01-02 | 2000-01-01 | dance      |  10000 | are y
    111 ou ok? |
    112 | 21 | lisi     | M      | 1998-01-02 | 2000-01-01 | dance      |   5000 | hello
    113        |
    114 | 22 | wangwu   | M      | 1990-01-02 | 2000-01-01 | old driver |   8888 | buddy
    115        |
    116 | 23 | zhaoliu  | NULL   | NULL       | NULL       | NULL       |   5000 | NULL
    117        |
    118 +----+----------+--------+------------+------------+------------+--------+------
    119 -------+
    120 5 rows in set (0.00 sec)

    (3)删除数据

    1    --普通语句
    2     DELETE FROM employee WHERE name='zhaoliu' AND id=4;                   --删除表中所有记录
    3     DELETE FROM employee;  
    4    --truncate删除方式,将表格重建,索引重新开始,如果是delete删除,索引继续按照上次记录开始
    5     truncate employee;
    6    --truncate删除效率要高于delete,并且其删除可能会破坏和其他表的关系,不推荐使用。

    (4)查询数据

    普通查询,可以添加distinct关键字去重。

    1     --普通查询
    2     SELECT id,name FROM employee WHERE id='1';                               --DISTINCT去重,下面是所有的都不能重复                                                        
    3     SELECT DISTINCT * FROM employee;     
    4     SELECT DISTINCT name FROM employee;  

    先创建一个表进行测试。

     1     create table exam(
     2     id int primary key auto_increment,
     3     name varchar(20) not null,
     4     chinese double,
     5     math double,
     6     english double
     7 );
     8     insert into exam values(null,'关羽',85,76,70);
     9     insert into exam values(null,'张飞',70,75,70);
    10     insert into exam values(null,'赵云',90,65,95); 

    开始执行以下操作,包括常用基本查询。

     1     --查询名字和英文成绩
     2     SELECT name,english FROM exam;
     3     --english去重操作
     4     SELECT DISTINCT english FROM exam;
     5     --可以使用表达式对查询结果进行运算
     6     SELECT name,chinese+10,math+10,english+10 FROM exam;
     7     --可以使用别名,用AS或者空格均可以,但是空格不建议使用
     8     SELECT name,chinese+10 chinese,math+10 AS math,english+10 AS english FROM exam;
     9     --统计每个学生总分
    10     SELECT name,chinese+math+english FROM exam;                              SELECT name,chinese+math+english AS sumscore FROM exam;  
    11     --查询姓名为张飞的学生成绩
    12     SELECT name,chinese,math,english FROM exam WHERE name='张飞';            --查询英语成绩大于90分
    13     SELECT * FROM exam WHERE english>90;                                      --查询总分大于200分的
    14     SELECT *, math+chinese+english as sumscore FROM exam WHERE (math+chinese+english)>230;  
    15     --查询英语在80-100之间同学
    16     SELECT * FROM exam WHERE english BETWEEN 80 AND 100;
    17     --查询数学分数为75,76,77的同学
    18     SELECT * FROM exam WHERE math in(75,76,77);
    19     --查询所有姓张同学的成绩
    20     SELECT * FROM exam WHERE name LIKE '张%';
    21     --查询数学大于70,语文大于80的同学
    22     SELECT * FROM exam WHERE math>70 AND chinese>80;
    23     --查询数学不低于60分的
    24     SELECT * FROM exam WHERE NOT(math<60);
    25     --查询数学成绩缺考的同学
    26     SELECT * FROM exam WHERE math IS NULL;
    27     --查询所有人的数学成绩,如果为null,用0分展示
    28     SELECT ifnull(math,0) AS math FROM exam;
      1 mysql> select * from exam;
      2 +----+------+---------+------+---------+
      3 | id | name | chinese | math | english |
      4 +----+------+---------+------+---------+
      5 |  1 | 关羽 |      85 |   76 |      70 |
      6 |  2 | 张飞 |      70 |   75 |      70 |
      7 |  3 | 赵云 |      90 |   65 |      95 |
      8 +----+------+---------+------+---------+
      9 3 rows in set (0.00 sec)
     10 
     11 mysql> SELECT name,english FROM exam;
     12 +------+---------+
     13 | name | english |
     14 +------+---------+
     15 | 关羽 |      70 |
     16 | 张飞 |      70 |
     17 | 赵云 |      95 |
     18 +------+---------+
     19 3 rows in set (0.00 sec)
     20 
     21 mysql> SELECT DISTINCT english FROM exam;
     22 +---------+
     23 | english |
     24 +---------+
     25 |      70 |
     26 |      95 |
     27 +---------+
     28 2 rows in set (0.00 sec)
     29 
     30 mysql> SELECT name,chinese+10,math+10,english+10 FROM exam;
     31 +------+------------+---------+------------+
     32 | name | chinese+10 | math+10 | english+10 |
     33 +------+------------+---------+------------+
     34 | 关羽 |         95 |      86 |         80 |
     35 | 张飞 |         80 |      85 |         80 |
     36 | 赵云 |        100 |      75 |        105 |
     37 +------+------------+---------+------------+
     38 3 rows in set (0.00 sec)
     39 
     40 mysql> SELECT name,chinese+10 chinese,math+10 AS math,english+10 AS english FROM
     41  exam;
     42 +------+---------+------+---------+
     43 | name | chinese | math | english |
     44 +------+---------+------+---------+
     45 | 关羽 |      95 |   86 |      80 |
     46 | 张飞 |      80 |   85 |      80 |
     47 | 赵云 |     100 |   75 |     105 |
     48 +------+---------+------+---------+
     49 3 rows in set (0.00 sec)
     50 
     51 mysql> SELECT name,chinese+math+english AS sumscore FROM exam;
     52 +------+----------+
     53 | name | sumscore |
     54 +------+----------+
     55 | 关羽 |      231 |
     56 | 张飞 |      215 |
     57 | 赵云 |      250 |
     58 +------+----------+
     59 3 rows in set (0.00 sec)
     60 
     61 mysql> SELECT name,chinese,math,english FROM exam WHERE name='张飞';
     62 +------+---------+------+---------+
     63 | name | chinese | math | english |
     64 +------+---------+------+---------+
     65 | 张飞 |      70 |   75 |      70 |
     66 +------+---------+------+---------+
     67 1 row in set (0.02 sec)
     68 
     69 mysql> SELECT * FROM exam WHERE english>90;
     70 +----+------+---------+------+---------+
     71 | id | name | chinese | math | english |
     72 +----+------+---------+------+---------+
     73 |  3 | 赵云 |      90 |   65 |      95 |
     74 +----+------+---------+------+---------+
     75 1 row in set (0.00 sec)
     76 
     77 mysql>  SELECT *, math+chinese+english as sumscore FROM exam WHERE (math+chinese
     78 +english)>230;
     79 +----+------+---------+------+---------+----------+
     80 | id | name | chinese | math | english | sumscore |
     81 +----+------+---------+------+---------+----------+
     82 |  1 | 关羽 |      85 |   76 |      70 |      231 |
     83 |  3 | 赵云 |      90 |   65 |      95 |      250 |
     84 +----+------+---------+------+---------+----------+
     85 2 rows in set (0.00 sec)
     86 
     87 mysql> SELECT * FROM exam WHERE english BETWEEN 80 AND 100;
     88 +----+------+---------+------+---------+
     89 | id | name | chinese | math | english |
     90 +----+------+---------+------+---------+
     91 |  3 | 赵云 |      90 |   65 |      95 |
     92 +----+------+---------+------+---------+
     93 1 row in set (0.06 sec)
     94 
     95 mysql> SELECT * FROM exam WHERE math in(75,76,77);
     96 +----+------+---------+------+---------+
     97 | id | name | chinese | math | english |
     98 +----+------+---------+------+---------+
     99 |  1 | 关羽 |      85 |   76 |      70 |
    100 |  2 | 张飞 |      70 |   75 |      70 |
    101 +----+------+---------+------+---------+
    102 2 rows in set (0.00 sec)
    103 
    104 mysql> SELECT * FROM exam WHERE name LIKE '张%';
    105 +----+------+---------+------+---------+
    106 | id | name | chinese | math | english |
    107 +----+------+---------+------+---------+
    108 |  2 | 张飞 |      70 |   75 |      70 |
    109 +----+------+---------+------+---------+
    110 1 row in set (0.00 sec)
    111 
    112 mysql> SELECT * FROM exam WHERE math>70 AND chinese>80;
    113 +----+------+---------+------+---------+
    114 | id | name | chinese | math | english |
    115 +----+------+---------+------+---------+
    116 |  1 | 关羽 |      85 |   76 |      70 |
    117 +----+------+---------+------+---------+
    118 1 row in set (0.00 sec)
    119 
    120 mysql> SELECT * FROM exam WHERE NOT(math<60);
    121 +----+------+---------+------+---------+
    122 | id | name | chinese | math | english |
    123 +----+------+---------+------+---------+
    124 |  1 | 关羽 |      85 |   76 |      70 |
    125 |  2 | 张飞 |      70 |   75 |      70 |
    126 |  3 | 赵云 |      90 |   65 |      95 |
    127 +----+------+---------+------+---------+
    128 3 rows in set (0.00 sec)
    129 
    130 mysql> SELECT * FROM exam WHERE math IS NULL;
    131 Empty set (0.00 sec)
    132 
    133 mysql> SELECT ifnull(math,0) AS math FROM exam;
    134 +------+
    135 | math |
    136 +------+
    137 |   76 |
    138 |   75 |
    139 |   65 |
    140 +------+
    141 3 rows in set (0.00 sec)
    142 
    143 mysql> select * from exam;
    144 +----+------+---------+------+---------+
    145 | id | name | chinese | math | english |
    146 +----+------+---------+------+---------+
    147 |  1 | 关羽 |      85 |   76 |      70 |
    148 |  2 | 张飞 |      70 |   75 |      70 |
    149 |  3 | 赵云 |      90 |   65 |      95 |
    150 +----+------+---------+------+---------+
    151 3 rows in set (0.00 sec)
    152 
    153 mysql> insert into exam values(null,"刘备",null,null,99);
    154 Query OK, 1 row affected (0.08 sec)
    155 
    156 mysql> select * from exam;
    157 +----+------+---------+------+---------+
    158 | id | name | chinese | math | english |
    159 +----+------+---------+------+---------+
    160 |  1 | 关羽 |      85 |   76 |      70 |
    161 |  2 | 张飞 |      70 |   75 |      70 |
    162 |  3 | 赵云 |      90 |   65 |      95 |
    163 |  4 | 刘备 |    NULL | NULL |      99 |
    164 +----+------+---------+------+---------+
    165 4 rows in set (0.00 sec)
    166 
    167 mysql> SELECT * FROM exam WHERE math IS NULL;
    168 +----+------+---------+------+---------+
    169 | id | name | chinese | math | english |
    170 +----+------+---------+------+---------+
    171 |  4 | 刘备 |    NULL | NULL |      99 |
    172 +----+------+---------+------+---------+
    173 1 row in set (0.00 sec)
    174 
    175 mysql> SELECT ifnull(math,0) AS math FROM exam;
    176 +------+
    177 | math |
    178 +------+
    179 |   76 |
    180 |   75 |
    181 |   65 |
    182 |    0 |
    183 +------+
    184 4 rows in set (0.00 sec)

    ORDER BY的使用

    1    使用order by子句排序,order by永远放在sql语句的最后面,执行顺序也是最后面
    2     --对语文成绩排序后输出
    3     SELECT * FROM exam ORDER BY chinese;
    4     --对总分排序按照从高到低
    5     SELECT ifnull(chinese,0)+ifnull(math,0)+ifnull(english,0) as sumscore FROM exam ORDER BY sumscore DESC;    
    6     --对姓李的学生成绩排序输出
    7     SELECT * FROM exam WHERE name LIKE '张%' ORDER BY chinese;
     1 mysql> SELECT * FROM exam ORDER BY chinese;
     2 +----+------+---------+------+---------+
     3 | id | name | chinese | math | english |
     4 +----+------+---------+------+---------+
     5 |  4 | 刘备 |    NULL | NULL |      99 |
     6 |  2 | 张飞 |      70 |   75 |      70 |
     7 |  1 | 关羽 |      85 |   76 |      70 |
     8 |  3 | 赵云 |      90 |   65 |      95 |
     9 +----+------+---------+------+---------+
    10 4 rows in set (0.00 sec)
    11 
    12 mysql> SELECT ifnull(chinese,0)+ifnull(math,0)+ifnull(english,0) as sumscore FRO
    13 M exam ORDER BY sumscore DESC;
    14 +----------+
    15 | sumscore |
    16 +----------+
    17 |      250 |
    18 |      231 |
    19 |      215 |
    20 |       99 |
    21 +----------+
    22 4 rows in set (0.00 sec)
    23 
    24 mysql> SELECT * FROM exam WHERE name LIKE '张%' ORDER BY chinese;
    25 +----+------+---------+------+---------+
    26 | id | name | chinese | math | english |
    27 +----+------+---------+------+---------+
    28 |  2 | 张飞 |      70 |   75 |      70 |
    29 +----+------+---------+------+---------+
    30 1 row in set (0.00 sec)

    聚集函数的使用,包括COUNT()、SUM()、AVG()、MAX()/MIN()等

     1     --COUNT() 对所有满足条件的行进行计数操作,count里可以写*或者字段
     2     --统计一个班级共有多少学生?
     3     SELECT COUNT(*) AS COUNT FROM exam;
     4     --统计数学成绩大于90的学生有多少个?
     5     SELECT COUNT(*) AS COUNT FROM exam WHERE math>90;
     6     --统计总分大于250的人数有多少?
     7     SELECT COUNT(name) AS COUNT FROM exam WHERE ifnull(chinese,0)+ifnull(math,0)+ifnull(english,0)>250;
     8     --SUM() 将满足条件的行,对指定字段求和,只对数值起作用,多列逗号不能省。
     9     --统计一个班级数学总成绩?
    10     SELECT SUM(ifnull(math,0)) FROM exam;--null不统计,可以不写
    11     SELECT SUM(math) FROM exam;
    12     --统计一个班级语文、英语、数学各科的总成绩
    13     SELECT SUM(chinese),SUM(english),SUM(math) FROM exam;
    14     --统计一个班级语文、英语、数学的成绩总和
    15     SELECT SUM(ifnull(chinese,0)+ifnull(english,0)+ifnull(math,0)) FROM exam;
    16     --统计一个班级语文成绩平均分
    17     SELECT SUM(chinese)/count(chinese) FROM exam;
    18     --AVG() 对于满足条件的行,对指定字段进行求平均数
    19     SELECT AVG(math) FROM exam;--null不统计
    20     --求一个班级总分平均分?
    21     SELECT AVG(ifnull(chinese,0)+ifnull(english,0)+ifnull(math,0)) FROM exam;    
    22     --MAX/MIN 返回满足条件的行,里面指定字段内最大最小的值
    23     --求出语文最高分
    24     SELECT MAX(chinese) FROM exam;
     1 mysql> SELECT COUNT(*) AS COUNT FROM exam;
     2 +-------+
     3 | COUNT |
     4 +-------+
     5 |     4 |
     6 +-------+
     7 1 row in set (0.00 sec)
     8 
     9 mysql> SELECT COUNT(*) AS COUNT FROM exam WHERE math>90;
    10 +-------+
    11 | COUNT |
    12 +-------+
    13 |     0 |
    14 +-------+
    15 1 row in set (0.00 sec)
    16 
    17 mysql> SELECT COUNT(name) AS COUNT FROM exam WHERE ifnull(chinese,0)+ifnull(math
    18 ,0)+ifnull(english,0)>250;
    19 +-------+
    20 | COUNT |
    21 +-------+
    22 |     0 |
    23 +-------+
    24 1 row in set (0.00 sec)
    25 
    26 mysql> SELECT SUM(ifnull(math,0)) FROM exam;
    27 +---------------------+
    28 | SUM(ifnull(math,0)) |
    29 +---------------------+
    30 |                 216 |
    31 +---------------------+
    32 1 row in set (0.00 sec)
    33 
    34 mysql> SELECT SUM(math) FROM exam;
    35 +-----------+
    36 | SUM(math) |
    37 +-----------+
    38 |       216 |
    39 +-----------+
    40 1 row in set (0.00 sec)
    41 
    42 mysql> SELECT SUM(chinese),SUM(english),SUM(math) FROM exam;
    43 +--------------+--------------+-----------+
    44 | SUM(chinese) | SUM(english) | SUM(math) |
    45 +--------------+--------------+-----------+
    46 |          245 |          334 |       216 |
    47 +--------------+--------------+-----------+
    48 1 row in set (0.00 sec)
    49 
    50 mysql> SELECT SUM(ifnull(chinese,0)+ifnull(english,0)+ifnull(math,0)) FROM exam;
    51 
    52 +---------------------------------------------------------+
    53 | SUM(ifnull(chinese,0)+ifnull(english,0)+ifnull(math,0)) |
    54 +---------------------------------------------------------+
    55 |                                                     795 |
    56 +---------------------------------------------------------+
    57 1 row in set (0.00 sec)
    58 
    59 mysql> SELECT SUM(chinese)/count(chinese) FROM exam;
    60 +-----------------------------+
    61 | SUM(chinese)/count(chinese) |
    62 +-----------------------------+
    63 |           81.66666666666667 |
    64 +-----------------------------+
    65 1 row in set (0.00 sec)
    66 
    67 mysql> SELECT AVG(math) FROM exam;
    68 +-----------+
    69 | AVG(math) |
    70 +-----------+
    71 |        72 |
    72 +-----------+
    73 1 row in set (0.00 sec)
    74 
    75 mysql> SELECT AVG(ifnull(chinese,0)+ifnull(english,0)+ifnull(math,0)) FROM exam;
    76 
    77 +---------------------------------------------------------+
    78 | AVG(ifnull(chinese,0)+ifnull(english,0)+ifnull(math,0)) |
    79 +---------------------------------------------------------+
    80 |                                                  198.75 |
    81 +---------------------------------------------------------+
    82 1 row in set (0.00 sec)
    83 
    84 mysql> SELECT MAX(chinese) FROM exam;
    85 +--------------+
    86 | MAX(chinese) |
    87 +--------------+
    88 |           90 |
    89 +--------------+
    90 1 row in set (0.00 sec)

    GROUP BY的使用

     1     --根据指定字段值进行分组,字段值相同的分到同一组,并只显示分组后第一条数据。
     2     --分组后的数据,只显示第一行,其他数据被覆盖不显示,但是数据没有被抛弃。    
     3     create table orders(
     4             id int,
     5             product varchar(20),
     6             price float
     7         );
     8 
     9         insert into orders(id,product,price) values(1,'电视',900);
    10         insert into orders(id,product,price) values(2,'洗衣机',100);
    11         insert into orders(id,product,price) values(3,'洗衣粉',90);
    12         insert into orders(id,product,price) values(4,'桔子',9);
    13         insert into orders(id,product,price) values(5,'洗衣粉',90);                       --对订单表中商品归类后,显示每一类商品的总价
    14     SELECT * FROM orders GROUP BY product;--分组后只显示一条洗衣粉,另外一条被覆盖    SELECT product, SUM(price) FROM orders GROUP BY product;  
    15     --查询购买了几类商品,并且每类总价大于100的商品
    16     SELECT product, SUM(price) AS sumprice FROM orders GROUP BY product HAVING sumprice>100;  --说明是先分完分组计算后在执行having
     1 mysql>  create table orders(
     2     ->                  id int,
     3     ->                  product varchar(20),
     4     ->                  price float
     5     ->          );
     6 Query OK, 0 rows affected (0.11 sec)
     7 
     8 mysql>
     9 mysql>          insert into orders(id,product,price) values(1,'电视',900);
    10 Query OK, 1 row affected (0.03 sec)
    11 
    12 mysql>          insert into orders(id,product,price) values(2,'洗衣机',100);
    13 Query OK, 1 row affected (0.02 sec)
    14 
    15 mysql>          insert into orders(id,product,price) values(3,'洗衣粉',90);
    16 Query OK, 1 row affected (0.03 sec)
    17 
    18 mysql>          insert into orders(id,product,price) values(4,'桔子',9);
    19 Query OK, 1 row affected (0.02 sec)
    20 
    21 mysql>          insert into orders(id,product,price) values(5,'洗衣粉',90);
    22 Query OK, 1 row affected (0.08 sec)
    23 
    24 mysql> show tables;
    25 +-----------------+
    26 | Tables_in_mydb2 |
    27 +-----------------+
    28 | employee        |
    29 | exam            |
    30 | orders          |
    31 +-----------------+
    32 3 rows in set (0.00 sec)
    33 
    34 mysql> select * from orders;
    35 +------+---------+-------+
    36 | id   | product | price |
    37 +------+---------+-------+
    38 |    1 | 电视    |   900 |
    39 |    2 | 洗衣机  |   100 |
    40 |    3 | 洗衣粉  |    90 |
    41 |    4 | 桔子    |     9 |
    42 |    5 | 洗衣粉  |    90 |
    43 +------+---------+-------+
    44 5 rows in set (0.00 sec)
    45 
    46 mysql> SELECT * FROM orders GROUP BY product;
    47 +------+---------+-------+
    48 | id   | product | price |
    49 +------+---------+-------+
    50 |    1 | 电视    |   900 |
    51 |    4 | 桔子    |     9 |
    52 |    3 | 洗衣粉  |    90 |
    53 |    2 | 洗衣机  |   100 |
    54 +------+---------+-------+
    55 4 rows in set (0.00 sec)
    56 
    57 mysql> SELECT product, SUM(price) AS sumprice FROM orders GROUP BY product HAVI
    58 G sumprice>100;
    59 +---------+----------+
    60 | product | sumprice |
    61 +---------+----------+
    62 | 电视    |      900 |
    63 | 洗衣粉  |      180 |
    64 +---------+----------+
    65 2 rows in set (0.00 sec)

    外键约束

     1     --外键约束 维护数据的完整性和正确性,但是在高吞吐量下不太建议使用        
     2     --foreign key(当前表字段名) references 另外一张表(另外一张表字段名)
     3     create table dept(
     4     id int primary key auto_increment,
     5     name varchar(20)                                                                                                          
     6     );
     7     insert into dept values (null,'财务部'),(null,'人事部'),(null,'科技部'),(null,'销售部');
     8     create table emp(
     9     id int primary key auto_increment,
    10     name varchar(20),
    11     dept_id int,
    12     FOREIGN KEY(dept_id) REFERENCES dept(id)
    13     );
    14     insert into emp values (null,'张飞',1),(null,'关羽',2),(null,'刘备',3),(null,'赵云',4);
     1 mysql>  create table dept(
     2     ->  id int primary key auto_increment,
     3     ->  name varchar(20)
     4 
     5     ->     );
     6 Query OK, 0 rows affected (0.12 sec)
     7 
     8 mysql>     insert into dept values (null,'财务部'),(null,'人事部'),(null,'科技部
     9 '),(null,'销售部');
    10 Query OK, 4 rows affected (0.03 sec)
    11 Records: 4  Duplicates: 0  Warnings: 0
    12 
    13 mysql>     create table emp(
    14     ->     id int primary key auto_increment,
    15     ->     name varchar(20),
    16     ->     dept_id int,
    17     ->     FOREIGN KEY(dept_id) REFERENCES dept(id)
    18     ->     );
    19 Query OK, 0 rows affected (0.07 sec)
    20 
    21 mysql>     insert into emp values (null,'张飞',1),(null,'关羽',2),(null,'刘备',
    22 ),(null,'赵云',4);
    23 Query OK, 4 rows affected (0.07 sec)
    24 Records: 4  Duplicates: 0  Warnings: 0
    25 
    26 mysql> show tables;
    27 +-----------------+
    28 | Tables_in_mydb2 |
    29 +-----------------+
    30 | dept            |
    31 | emp             |
    32 | employee        |
    33 | exam            |
    34 | orders          |
    35 +-----------------+
    36 5 rows in set (0.00 sec)
    37 
    38 mysql> select * from dept;
    39 +----+--------+
    40 | id | name   |
    41 +----+--------+
    42 |  1 | 财务部 |
    43 |  2 | 人事部 |
    44 |  3 | 科技部 |
    45 |  4 | 销售部 |
    46 +----+--------+
    47 4 rows in set (0.00 sec)
    48 
    49 mysql> select * from emp;
    50 +----+------+---------+
    51 | id | name | dept_id |
    52 +----+------+---------+
    53 |  1 | 张飞 |       1 |
    54 |  2 | 关羽 |       2 |
    55 |  3 | 刘备 |       3 |
    56 |  4 | 赵云 |       4 |
    57 +----+------+---------+
    58 4 rows in set (0.00 sec)
    59 
    60 mysql> delete from dept where id=4;
    61 ERROR 1451 (23000): Cannot delete or update a parent row: a foreign key constra
    62 nt fails (`mydb2`.`emp`, CONSTRAINT `emp_ibfk_1` FOREIGN KEY (`dept_id`) REFERE
    63 CES `dept` (`id`))
    64 mysql> insert into emp values(null,'hehe',5);
    65 ERROR 1452 (23000): Cannot add or update a child row: a foreign key constraint
    66 ails (`mydb2`.`emp`, CONSTRAINT `emp_ibfk_1` FOREIGN KEY (`dept_id`) REFERENCES
    67 `dept` (`id`))

    多表查询

     1     --笛卡尔积查询:两张表相乘得出来的结果。如果左边表有m条记录,右边有n条记录,则查询出来的结果就是m*n条。这些查询结果中包含大量错误的结果,通常不会使用这种查询。 
     2      --关联查询
     3      select * from emp,dept where emp.dept_id=dept.id;
     4      --内连接查询
     5      SELECT * FROM emp inner join dept ON emp.dept_id=dept.id;
     6      --左外连接 , 以左边表为基础,如果没有关联结果就显示null
     7      SELECT * FROM dept left outer join emp on dept.id=emp.dept_id;
     8      --右外连接
     9      SELECT * FROM dept right outer join emp on dept.id=emp.dept_id;
    10      --全外连接 通过union关键字来模拟全外连接
    11      SELECT * FROM dept left outer join emp on dept.id=emp.dept_id;
    12      UNION
    13      SELECT * FROM dept right outer join emp on dept.id=emp.dept_id;
      1 mysql> select * from emp;
      2 +----+------+---------+
      3 | id | name | dept_id |
      4 +----+------+---------+
      5 |  1 | 张飞 |       1 |
      6 |  2 | 关羽 |       2 |
      7 |  3 | 刘备 |       3 |
      8 |  4 | 赵云 |       4 |
      9 +----+------+---------+
     10 4 rows in set (0.00 sec)
     11 
     12 mysql> select * from dept;
     13 +----+--------+
     14 | id | name   |
     15 +----+--------+
     16 |  1 | 财务部 |
     17 |  2 | 人事部 |
     18 |  3 | 科技部 |
     19 |  4 | 销售部 |
     20 +----+--------+
     21 4 rows in set (0.00 sec)
     22 
     23 mysql> select * from emp,dept;
     24 +----+------+---------+----+--------+
     25 | id | name | dept_id | id | name   |
     26 +----+------+---------+----+--------+
     27 |  1 | 张飞 |       1 |  1 | 财务部 |
     28 |  2 | 关羽 |       2 |  1 | 财务部 |
     29 |  3 | 刘备 |       3 |  1 | 财务部 |
     30 |  4 | 赵云 |       4 |  1 | 财务部 |
     31 |  1 | 张飞 |       1 |  2 | 人事部 |
     32 |  2 | 关羽 |       2 |  2 | 人事部 |
     33 |  3 | 刘备 |       3 |  2 | 人事部 |
     34 |  4 | 赵云 |       4 |  2 | 人事部 |
     35 |  1 | 张飞 |       1 |  3 | 科技部 |
     36 |  2 | 关羽 |       2 |  3 | 科技部 |
     37 |  3 | 刘备 |       3 |  3 | 科技部 |
     38 |  4 | 赵云 |       4 |  3 | 科技部 |
     39 |  1 | 张飞 |       1 |  4 | 销售部 |
     40 |  2 | 关羽 |       2 |  4 | 销售部 |
     41 |  3 | 刘备 |       3 |  4 | 销售部 |
     42 |  4 | 赵云 |       4 |  4 | 销售部 |
     43 +----+------+---------+----+--------+
     44 16 rows in set (0.00 sec)
     45 
     46 mysql> select * from emp,dept where emp.dept_id=dept.id;
     47 +----+------+---------+----+--------+
     48 | id | name | dept_id | id | name   |
     49 +----+------+---------+----+--------+
     50 |  1 | 张飞 |       1 |  1 | 财务部 |
     51 |  2 | 关羽 |       2 |  2 | 人事部 |
     52 |  3 | 刘备 |       3 |  3 | 科技部 |
     53 |  4 | 赵云 |       4 |  4 | 销售部 |
     54 +----+------+---------+----+--------+
     55 4 rows in set (0.00 sec)
     56 
     57 mysql>  SELECT * FROM emp inner join dept ON emp.dept_id=dept.id;
     58 +----+------+---------+----+--------+
     59 | id | name | dept_id | id | name   |
     60 +----+------+---------+----+--------+
     61 |  1 | 张飞 |       1 |  1 | 财务部 |
     62 |  2 | 关羽 |       2 |  2 | 人事部 |
     63 |  3 | 刘备 |       3 |  3 | 科技部 |
     64 |  4 | 赵云 |       4 |  4 | 销售部 |
     65 +----+------+---------+----+--------+
     66 4 rows in set (0.00 sec)
     67 
     68 mysql> select * from dept;
     69 +----+--------+
     70 | id | name   |
     71 +----+--------+
     72 |  1 | 财务部 |
     73 |  2 | 人事部 |
     74 |  3 | 科技部 |
     75 |  4 | 销售部 |
     76 +----+--------+
     77 4 rows in set (0.00 sec)
     78 
     79 mysql> insert into dept values(null,'体育部');
     80 Query OK, 1 row affected (0.07 sec)
     81 
     82 mysql> select * from dept;
     83 +----+--------+
     84 | id | name   |
     85 +----+--------+
     86 |  1 | 财务部 |
     87 |  2 | 人事部 |
     88 |  3 | 科技部 |
     89 |  4 | 销售部 |
     90 |  5 | 体育部 |
     91 +----+--------+
     92 5 rows in set (0.00 sec)
     93 
     94 mysql> SELECT * FROM dept left outer join emp on dept.id=emp.dept_id;
     95 +----+--------+------+------+---------+
     96 | id | name   | id   | name | dept_id |
     97 +----+--------+------+------+---------+
     98 |  1 | 财务部 |    1 | 张飞 |       1 |
     99 |  2 | 人事部 |    2 | 关羽 |       2 |
    100 |  3 | 科技部 |    3 | 刘备 |       3 |
    101 |  4 | 销售部 |    4 | 赵云 |       4 |
    102 |  5 | 体育部 | NULL | NULL |    NULL |
    103 +----+--------+------+------+---------+
    104 5 rows in set (0.00 sec)
    105 
    106 mysql> SELECT * FROM dept right outer join emp on dept.id=emp.dept_id;
    107 +------+--------+----+------+---------+
    108 | id   | name   | id | name | dept_id |
    109 +------+--------+----+------+---------+
    110 |    1 | 财务部 |  1 | 张飞 |       1 |
    111 |    2 | 人事部 |  2 | 关羽 |       2 |
    112 |    3 | 科技部 |  3 | 刘备 |       3 |
    113 |    4 | 销售部 |  4 | 赵云 |       4 |
    114 +------+--------+----+------+---------+
    115 4 rows in set (0.00 sec)
    116 mysql> SELECT * FROM dept left outer join emp on dept.id=emp.dept_id
    117     ->   UNION
    118     ->   SELECT * FROM dept right outer join emp on dept.id=emp.dept_id;
    119 +------+--------+------+------+---------+
    120 | id   | name   | id   | name | dept_id |
    121 +------+--------+------+------+---------+
    122 |    1 | 财务部 |    1 | 张飞 |       1 |
    123 |    2 | 人事部 |    2 | 关羽 |       2 |
    124 |    3 | 科技部 |    3 | 刘备 |       3 |
    125 |    4 | 销售部 |    4 | 赵云 |       4 |
    126 |    5 | 体育部 | NULL | NULL |    NULL |
    127 +------+--------+------+------+---------+
    128 5 rows in set (0.00 sec)

    数据库的恢复和备份

    1     --备份
    2     CMD窗口下:mysqldump -u root -p mydb1>d:/1.sql
    3     --恢复 ,需要先创建数据库,如下面的mydb1,创建完成后才能恢复
    4     CMD窗口下:mysql -u root -p mydb1 < d:/1.sql
    5     --或者在mysql客户端中使用命令
    6     source d:/1.sql

    备份后的文件打开后,发现里面将数据都拿出来了,如果需要恢复只需要将脚本执行一遍就能将数据恢复,但是在恢复前需要在数据中新建一个数据库。

      1 -- MySQL dump 10.13  Distrib 5.5.27, for Win64 (x86)
      2 --
      3 -- Host: localhost    Database: mydb1
      4 -- ------------------------------------------------------
      5 -- Server version    5.5.27
      6 
      7 /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
      8 /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
      9 /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
     10 /*!40101 SET NAMES utf8 */;
     11 /*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
     12 /*!40103 SET TIME_ZONE='+00:00' */;
     13 /*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
     14 /*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
     15 /*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
     16 /*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
     17 
     18 --
     19 -- Table structure for table `employee`
     20 --
     21 
     22 DROP TABLE IF EXISTS `employee`;
     23 /*!40101 SET @saved_cs_client     = @@character_set_client */;
     24 /*!40101 SET character_set_client = utf8 */;
     25 CREATE TABLE `employee` (
     26   `id` int(11) NOT NULL AUTO_INCREMENT,
     27   `name` varchar(10) DEFAULT NULL,
     28   `gender` char(2) DEFAULT NULL,
     29   `birthday` date DEFAULT NULL,
     30   `entry_date` date DEFAULT NULL,
     31   `job` varchar(20) DEFAULT NULL,
     32   `salary` double DEFAULT NULL,
     33   `resume` text,
     34   PRIMARY KEY (`id`)
     35 ) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8;
     36 /*!40101 SET character_set_client = @saved_cs_client */;
     37 
     38 --
     39 -- Dumping data for table `employee`
     40 --
     41 
     42 LOCK TABLES `employee` WRITE;
     43 /*!40000 ALTER TABLE `employee` DISABLE KEYS */;
     44 INSERT INTO `employee` VALUES (1,'zhangsan','M','1999-01-02','2000-01-01','dance',15000,'are you ok?'),(2,'lisi','M','1998-01-02','2000-01-01','dance',15000,'hello'),(3,'wangwu','M','1990-01-02','2000-01-01','dance',15000,'buddy'),(4,'zhangsan','M','1999-01-02','2000-01-01','dance',15000,'are you ok?'),(5,'lisi','M','1998-01-02','2000-01-01','dance',15000,'hello'),(6,'wangwu','M','1990-01-02','2000-01-01','dance',15000,'buddy');
     45 /*!40000 ALTER TABLE `employee` ENABLE KEYS */;
     46 UNLOCK TABLES;
     47 
     48 --
     49 -- Table structure for table `exam`
     50 --
     51 
     52 DROP TABLE IF EXISTS `exam`;
     53 /*!40101 SET @saved_cs_client     = @@character_set_client */;
     54 /*!40101 SET character_set_client = utf8 */;
     55 CREATE TABLE `exam` (
     56   `id` int(11) NOT NULL AUTO_INCREMENT,
     57   `name` varchar(20) NOT NULL,
     58   `chinese` double DEFAULT NULL,
     59   `math` double DEFAULT NULL,
     60   `english` double DEFAULT NULL,
     61   PRIMARY KEY (`id`)
     62 ) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8;
     63 /*!40101 SET character_set_client = @saved_cs_client */;
     64 
     65 --
     66 -- Dumping data for table `exam`
     67 --
     68 
     69 LOCK TABLES `exam` WRITE;
     70 /*!40000 ALTER TABLE `exam` DISABLE KEYS */;
     71 INSERT INTO `exam` VALUES (1,'关羽',85,76,70),(2,'张飞',70,75,70),(3,'赵云',90,65,95),(4,'王五',66,NULL,NULL);
     72 /*!40000 ALTER TABLE `exam` ENABLE KEYS */;
     73 UNLOCK TABLES;
     74 
     75 --
     76 -- Table structure for table `orders`
     77 --
     78 
     79 DROP TABLE IF EXISTS `orders`;
     80 /*!40101 SET @saved_cs_client     = @@character_set_client */;
     81 /*!40101 SET character_set_client = utf8 */;
     82 CREATE TABLE `orders` (
     83   `id` int(11) DEFAULT NULL,
     84   `product` varchar(20) DEFAULT NULL,
     85   `price` float DEFAULT NULL
     86 ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
     87 /*!40101 SET character_set_client = @saved_cs_client */;
     88 
     89 --
     90 -- Dumping data for table `orders`
     91 --
     92 
     93 LOCK TABLES `orders` WRITE;
     94 /*!40000 ALTER TABLE `orders` DISABLE KEYS */;
     95 INSERT INTO `orders` VALUES (1,'电视',900),(2,'洗衣机',100),(3,'洗衣粉',90),(4,'桔子',9),(5,'洗衣粉',90);
     96 /*!40000 ALTER TABLE `orders` ENABLE KEYS */;
     97 UNLOCK TABLES;
     98 /*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
     99 
    100 /*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
    101 /*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
    102 /*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
    103 /*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
    104 /*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
    105 /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
    106 /*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
    107 
    108 -- Dump completed on 2019-09-03 15:54:36

    以上是mysql数据的入门知识,记录一下以后参考。

    参考博文:

    (1)https://www.cnblogs.com/geaozhang/p/6724393.html?utm_source=itdadao&utm_medium=referral 字符集和校对

    (2)https://www.cnblogs.com/kawashibara/p/8961646.html DDL DML DCL

    (3)https://www.cnblogs.com/youjianjiangnan/p/9114791.html 查看数据库和表的字符集

  • 相关阅读:
    请使用迭代查找一个list中最小和最大值,并返回一个tuple
    利用切片操作,实现一个trim()函数,去除字符串首尾的空格,注意不要调用str的strip()方法
    软件测试中的43个功能测试点总结
    Linux下好用的简单实用命令
    小议堆栈
    使用mac的那些稀奇古怪的事
    探索TypeScript第一步之基础类型
    Markdown的基本使用方法
    React的生命周期
    React中的通讯组件
  • 原文地址:https://www.cnblogs.com/youngchaolin/p/11455706.html
Copyright © 2020-2023  润新知